企业应用架构模式

2010年机械工业出版社出版的图书

《企业应用架构模式》是2010年04月机械工业出版社出版的图书,作者是福勒。本书是为致力于设计和构建企业应用的软件架构师、设计人员和编程人员而写的,同时也可作为高等院校计算机专业软件学院相关课程的参考教材。

内容简介
《企业应用架构模式》作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。《企业应用架构模式》分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册,每个模式都给出使用方法和实现信息,并配以详细的Java代码或C#代码示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。
编辑推荐
企业应用开发的实践得益于多种新技术的出现,多层的面向对象平台(如Java、.NET)已经日渐平常。这些新工具和新技术有能力构建更强大的企业应用程序,但是在实现上还不太容易。由于开发人员未能充分理解有经验的对象程序开发人员在架构方面的经验和教训.因此企业应用中经常存在一些共同的错误。
《企业应用架构模式》就是面向企业应用开发者的,可帮助他们迎接这种艰难挑战。《企业应用架构模式》的作者Ma riin Fowler注意到,尽管技术本身存在变化——从Smalltalk到CORBA,再到。Java和NET,但基本的设计思想并没有太多变化.可以加以适当调整,用来解决那些共同的问题。在一组专家级合作者的帮助下,作者将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》曾于2002年荣获美国软件开发杂志图书类的生产效率奖和读者选择奖。
《企业应用架构模式》涉及两部分内容。第一部分是关于如何开发企业应用的简单介绍。在阅读这部分时.读者可以从头到尾通读,以掌握《企业应用架构模式》的范围。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册.每个模式都给出使用方法和实现信息,并配有详细的Java代码或C#代码的示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。
《企业应用架构模式》主要内容:
将企业应用分层
组织企业业务逻辑的主要方法
在对象和关系数据库之间进行映射的深层次解决方案
通过模型一视图一控制器来组织Web表现
处理跨多事务的数据的并发问题
设计分布式对象接口
作者简介
福勒(Martin Fower),是一位独立咨询顾问,他运用对象技术解决企业问题已经超过十年。他的顾问领域包括健康管理、金融贸易,以及法人财务。他的客户包括Chrysler,Citibank,UK National Health Service,AndersenConsulting,NetscapeCommunications。此外Fowler也是objects、UML、patterns技术的一位合格讲师,他是《AnalysisPatterns》和《UML Distilled》的作者。
目录
译者序
前言
模式列表
引言 1
0.1 架构 1
0.2 企业应用 2
0.3 企业应用的种类 3
0.4 关于性能的考虑 4
0.5 模式 6
0.5.1 模式的结构 7
0.5.2 模式的局限性 9
第一部分 表述
第1章 分层 12
1.1 企业应用中层次的演化 13
1.2 三个基本层次 14
1.3 为各层选择运行环境 15
第2章 组织领域逻辑 19
2.1 抉择 22
2.2 服务层 23
第3章 映射到关系数据库 25
.3.1 架构模式 25
3.2 行为问题 28
3.3 读取数据 29
3.4 结构映射模式 30
3.4.1 关系的映射 30
3.4.2 继承 33
3.5 建立映射 34
3.6 使用元数据 35
3.7 数据库连接 36
3.8 其他问题 38
3.9 进一步阅读 38
第4章 Web表现层 39
4.1 视图模式 41
4.2 输入控制器模式 43
4.3 进一步阅读 43
第5章 并发 45
5.1 并发问题 45
5.2 执行语境 46
5.3 隔离与不变性 47
5.4 乐观并发控制和悲观并发控制 48
5.4.1 避免不一致读 49
5.4.2 死锁 49
5.5 事务 50
5.5.1 ACID 51
5.5.2 事务资源 51
5.5.3 减少事务隔离以提高灵活性 52
5.5.4 业务事务和系统事务 53
5.6 离线并发控制的模式 54
5.7 应用服务器并发 55
5.8 进一步阅读 56
第6章 会话状态 57
6.1 无状态的价值 57
6.2 会话状态 58
6.3 存储会话状态的方法 59
第7章 分布策略 61
7.1 分布对象的诱惑 61
7.2 远程接口和本地接口 62
7.3 必须使用分布的情况 63
7.4 关于分布边界 64
7.5 分布接口 64
第8章 通盘考虑 67
8.1 从领域层开始 67
8.2 深入到数据源层 68
8.2.1 事务脚本的数据源 68
8.2.2 表模块的数据源 69
8.2.3 领域模型的数据源 69
8.3 表现层 69
8.4 一些关于具体技术的建议 70
8.4.1 Java和J2EE 70
8.4.2 .NET 71
8.4.3 存储过程 71
8.4.4 Web Services 72
8.5 其他分层方式 72
第二部分 模 式
第9章 领域逻辑模式 76
9.1 事务脚本(Transaction Script) 76
9.1.1 运行机制 76
9.1.2 使用时机 77
9.1.3 收入确认问题 78
9.1.4 例:收入确认(Java) 78
9.2 领域模型(Domain Model) 81
9.2.1 运行机制 81
9.2.2 使用时机 83
9.2.3 进一步阅读 83
9.2.4 例:收入确认(Java) 84
9.3 表模块(Table Module) 87
9.3.1 运行机制 88
9.3.2 使用时机 90
9.3.3 例:基于表模块的收入确认(C#) 90
9.4 服务层(Service Layer) 93
9.4.1 运行机制 94
9.4.2 使用时机 96
9.4.3 进一步阅读 96
9.4.4 例:收入确认(Java) 96
第10章 数据源架构模式 101
10.1 表数据入口(Table Data Gateway) 101
10.1.1 运行机制 101
10.1.2 使用时机 102
10.1.3 进一步阅读 102
10.1.4 例:人员入口(C#) 103
10.1.5 例:使用数据集(C#) 104
10.2 行数据入口(Row Data Gateway) 106
10.2.1 运行机制 107
10.2.2 使用时机 108
10.2.3 例:人员记录(Java) 108
10.2.4 例:领域对象的数据保持器(Java) 111
10.3 活动记录(Active Record) 112
10.3.1 运行机制 112
10.3.2 使用时机 113
10.3.3 例:一个简单的Person类(Java) 113
10.4 数据映射器(Data Mapper) 115
10.4.1 运行机制 116
10.4.2 使用时机 119
10.4.3 例:一个简单的数据映射器(Java) 119
10.4.4 例:分离查找方法(Java) 123
10.4.5 例:创建一个空对象(Java) 126
第11章 对象-关系行为模式 129
11.1 工作单元(Unit of Work) 129
11.1.1 运行机制 129
11.1.2 使用时机 133
11.1.3 例:使用对象注册的工作单元(Java) 134
11.2 标识映射(Identity Map) 137
11.2.1 运行机制 137
11.2.2 使用时机 139
11.2.3 例:标识映射中的方法(Java) 139
11.3 延迟加载(Lazy Load) 140
11.3.1 运作机制 140
11.3.2 使用时机 142
11.3.3 例:延迟初始化(Java) 142
11.3.4 例:虚代理(Java) 142
11.3.5 例:使用值保持器(Java) 144
11.3.6 例:使用重影(C#) 144
第12章 对象-关系结构模式 151
12.1 标识域(Identity Field) 151
12.1.1 工作机制 151
12.1.2 使用时机 154
12.1.3 进一步阅读 154
12.1.4 例:整型键(C#) 154
12.1.5 例:使用键表(Java) 155
12.1.6 例:使用组合键(Java) 157
12.2 外键映射(Foreign Key Mapping) 166
12.2.1 运行机制 167
12.2.2 使用时机 169
12.2.3 例:单值引用(Java) 169
12.2.4 例:多表查询(Java) 172
12.2.5 例:引用集合(C#) 173
12.3 关联表映射(Association Table Mapping) 175
12.3.1 运行机制 176
12.3.2 使用时机 176
12.3.3 例:雇员和技能(C#) 177
12.3.4 例:使用直接的SQL(Java) 179
12.3.5 例:用一次查询查多个雇员(Java) 182
12.4 依赖映射(Dependent Mapping) 186
12.4.1 运行机制 186
12.4.2 使用时机 187
12.4.3 例:唱片和曲目(Java) 188
12.5 嵌入值(Embedded Value) 190
12.5.1 运行机制 190
12.5.2 使用时机 190
12.5.3 进一步阅读 191
12.5.4 例:简单值对象(Java) 191
12.6 序列化LOB(Serialized LOB) 192
12.6.1 运行机制 193
12.6.2 使用时机 194
12.6.3 例:在XML中序列化一个部门层级(Java) 194
12.7 单表继承(Single Table Inheritance) 196
12.7.1 运行机制 197
12.7.2 使用时机 197
12.7.3 例:运动员的单表(C#) 198
12.7.4 从数据库中加载对象 199
12.8 类表继承(Class Table Inheritance) 202
12.8.1 运行机制 202
12.8.2 使用时机 203
12.8.3 进一步阅读 203
12.8.4 例:运动员和他们的家属(C#) 203
12.9 具体表继承(Concrete Table Inheritance) 208
12.9.1 运行机制 209
12.9.2 使用时机 210
12.9.3 例:具体运动员(C#) 210
12.10 继承映射器(Inheritance Mappers) 214
12.10.1 运行机制 215
12.10.2 使用时机 216
第13章 对象-关系元数据映射模式 217
13.1 元数据映射(Metadata Mapping) 217
13.1.1 运行机制 217
13.1.2 使用时机 218
13.1.3 例:使用元数据和反射(Java) 219
13.2 查询对象(Query Object) 224
13.2.1 运行机制 225
13.2.2 使用时机 225
13.2.3 进一步阅读 226
13.2.4 例:简单的查询对象(Java) 226
13.3 资源库(Repository) 228
13.3.1 运行机制 229
13.3.2 使用时机 230
13.3.3 进一步阅读 231
13.3.4 例:查找一个人所在的部门(Java) 231
13.3.5 例:资源库交换策略(Java) 231
第14章 Web表现模式 233
14.1 模型-视图-控制器(Model View Controller) 233
14.1.1 运行机制 233
14.1.2 使用时机 234
14.2 页面控制器(Page Controller) 235
14.2.1 运行机制 235
14.2.2 使用时机 236
14.2.3 例:Servlet控制器和JSP视图的简单演示(Java) 236
14.2.4 例:使用JSP充当处理程序(Java) 238
14.2.5 例:代码隐藏的页面控制器(C#) 241
14.3 前端控制器(Front Controller) 243
14.3.1 运行机制 244
14.3.2 使用时机 245
14.3.3 进一步阅读 246
14.3.4 例:简单的显示(Java) 246
14.4 模板视图(Template View) 248
14.4.1 运行机制 249
14.4.2 使用时机 251
14.4.3 例:分离的控制器,使用JSP充当视图(Java) 252
14.4.4 例:服务器页面(C#) 253
14.5 转换视图(Transform View) 256
14.5.1 运行机制 256
14.5.2 使用时机 257
14.5.3 例:简单的转换(Java) 257
14.6 两步视图(Two Step View) 259
14.6.1 运行机制 259
14.6.2 使用时机 260
14.6.3 例:两阶XSLT(XSLT) 264
14.6.4 例:JSP和定制标记(Java) 266
14.7 应用控制器(Application Controller) 269
14.7.1 运行机制 270
14.7.2 使用时机 271
14.7.3 进一步阅读 271
14.7.4 例:状态模型应用控制器(Java) 271
第15章 分布模式 275
15.1 远程外观(Remote Facade) 275
15.1.1 运行机制 276
15.1.2 使用时机 278
15.1.3 例:使用Java语言的会话bean来作为远程外观(Java) 278
15.1.4 例:Web Service(C#) 281
15.2 数据传输对象(Data Transfer Object) 285
15.2.1 运行机制 285
15.2.2 使用时机 288
15.2.3 进一步阅读 289
15.2.4 例:传输唱片信息(Java) 289
15.2.5 例:使用XML实现序列化(Java) 293
第16章 离线并发模式 295
16.1 乐观离线锁(Optimistic Offline Lock) 295
16.1.1 运行机制 296
16.1.2 使用时机 298
16.1.3 例:领域层与数据映射器(Java) 298
16.2 悲观离线锁(Pessimistic Offline Lock) 302
16.2.1 运行机制 303
16.2.2 使用时机 305
16.2.3 例:简单锁管理对象(Java) 305
16.3 粗粒度锁(Coarse-Grained Lock) 310
16.3.1 运行机制 310
16.3.2 使用时机 312
16.3.3 例:共享的乐观离线锁(Java) 312
16.3.4 例:共享的悲观离线锁(Java) 316
16.3.5 例:根对象乐观离线锁(Java) 317
16.4 隐含锁(Implicit Lock) 318
16.4.1 运行机制 318
16.4.2 使用时机 319
16.4.3 例:隐含的悲观离线锁(Java) 319
第17章 会话状态模式 321
17.1 客户会话状态(Client Session State) 321
17.1.1 运行机制 321
17.1.2 使用时机 322
17.2 服务器会话状态(Server Session State) 322
17.2.1 运行机制 322
17.2.2 使用时机 324
17.3 数据库会话状态(Database Session State) 324
17.3.1 运行机制 324
17.3.2 使用时机 325
第18章 基本模式 327
18.1 入口(Gateway) 327
18.1.1 运行机制 327
18.1.2 使用时机 328
18.1.3 例:私有消息服务的入口(Java) 329
18.2 映射器(Mapper) 331
18.2.1 运行机制 332
18.2.2 使用时机 332
18.3 层超类型(Layer Supertype) 332
18.3.1 运行机制 332
18.3.2 使用时机 333
18.3.3 例:领域对象(Java) 333
18.4 分离接口(Separated Interface) 333
18.4.1 运行机制 334
18.4.2 使用时机 335
18.5 注册表(Registry) 335
18.5.1 运行机制 336
18.5.2 使用时机 337
18.5.3 例:单子注册表(Java) 337
18.5.4 例:线程安全的注册表(Java) 338
18.6 值对象(Value Object) 339
18.6.1 运行机制 339
18.6.2 使用时机 340
18.7 货币(Money) 340
18.7.1 运行机制 341
18.7.2 使用时机 342
18.7.3 例:货币类(Java) 343
18.8 特殊情况(Special Case) 346
18.8.1 运行机制 347
18.8.2 使用时机 347
18.8.3 进一步阅读 347
18.8.4 例:一个简单的空对象(C#) 347
18.9 插件(Plugin) 348
18.9.1 运行机制 349
18.9.2 使用时机 350
18.9.3 例:ID生成器(Java) 350
18.10 服务桩(Service Stub) 352
18.10.1 运行机制 352
18.10.2 使用时机 353
18.10.3 例:销售税服务(Java) 353
18.11 记录集(Record Set) 355
18.11.1 运行机制 355
18.11.2 使用时机 356
参考文献 359
序言
“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。”
—Christopher Alexander
本书是面向对象大师Martin Fowler继《Analysis Patterns》、《UML Distilled》、《Planning Extreme Programming》、《Refactoring》之后的又一力作。
“温故而知新”。Fowler在本书中再次向我们证明了《礼记》中这句古训的震撼力—他在回头审视自己及同仁多年来从事企业应用开发的经验和教训后,归纳总结了40多种企业应用架构的设计模式。这些模式从不同层次、不同侧面向我们展示了什么是好的企业应用架构?如何设计好的企业应用?
正如作者自己所言,企业应用在某些方面比其他软件(如电信通信软件)复杂得多:纷繁复杂的企业数据、“不合逻辑”的业务规则、变化莫测的用户需求,等等。环顾四周—CORBA、J2EE、.NET—企业应用开发技术可谓“前仆后继、层出不穷”,开发平台的种类之多就更不必说。
招式套路可以千变万化,扎实深厚的“内功”却是始终如一!虽然企业应用涉及的软件技术不断翻新,但是基本的架构及设计思想却没有太多变化。将以前行之有效的设计思路和方法加以适当调整,并应用到当前的问题上,是最高效的做法。在一组专家级合作者的帮助下,Martin将40多种经常出现的解决方案转化成模式,最终融会成这本“内功心法”。在仔细研读、用心揣摩本书之后,希望它能够帮助你应对任何一种企业应用平台,驾驭任何一种企业应用技术—无论是现在的技术还是未来的技术。
熟悉Fowler的读者都知道,这位大师的写作风格可谓是“深入浅出,娓娓道来”。本书也是一样。前8章是关于企业应用的背景知识,如分层架构、Web表现、业务逻辑、数据库映射、并发、会话、分布策略,等等。在此基础上,随后的各章分别对与这些背景知识相关的设计模式进行了详细的介绍。与其他设计模式的书一样,本书从模式的使用场景、解决方案、UML表示等方面予以介绍,详略有致。就连示例的编程语言的选取—Java和C#—也是与他的写作风格一脉相承的。
夜已深,窗外依旧是绵绵不断的早春小雨。让我们酌一杯清茶,一起来品味大师的话,一起来品味“源于实践、指导实践”的苦涩与甘甜—
“模式的关键点是它们源于实践。必须观察人们的工作过程,发现其中好的设计,并找出‘这些解决方案的核心’。这不是一个简单的过程,但是一旦发现了某个模式,它将是非常有价值的。对于我来说,价值之一是能够撰写这样一本参考书。你不必通读本书的全部内容,也不必通读任何一本有关模式的书。只需要了解到这些模式都是干什么的、它们解决什么问题、它们是如何解决问题的,就足够了。这样,一旦你碰到类似问题,就可以从书中找出相应的模式。那时,你再深入了解相应的模式也为时不晚。”
文摘
我虽然没有从事过早期批处理系统时期的任何工作,但我认为当时的软件工作人员不会太关注层次的概念,只要编写操作某些文件(ISAM、VSAM等)格式的程序,这就是当时的应用。它不需要层次。
20世纪90年代,随着客户/服务器系统的出现,分层的概念更明显了。这样的系统是一种两个层次的系统:客户端包括用户界面和其他应用代码,服务器端通常是关系型数据库。常见的客户端工具如VB、PowerBuilder和Delphi。这些工具使得构建数据密集型应用非常容易。因为它们的用户界面控件通常都是SQL感知的。因此,可以通过将控件拖拽到“设计区域”来建立界面,然后再使用属性表单把控件连接到后台数据库。
如果应用仅仅包括关系数据的简单显示和修改,那么这种客户/服务器系统的工作方式非常合适。问题来自领域逻辑:如业务规则、验证、计算等。通常,人们会把它们写在客户端,但是这样很笨拙,并且往往把领域逻辑直接嵌入到用户界面。随着领域逻辑的不断复杂化,这些代码将越来越难以使用。而且,这样做很容易产生冗余代码,这意味着简单的变化都会导致要在很多界面中寻找相似代码。
另外一种办法是把这些领域逻辑放到数据库端,作为存储过程。但是,存储过程只提供有限的结构化机制,这将再次导致笨拙的代码。而且,很多人喜欢关系型数据库的原因之一是SQL是一个标准,允许他们更换数据库厂商。尽管真正更换数据库厂商的用户寥寥无几,但还是有很多人希望拥有这种选择,并且没有太大的附加代价。由于存储过程都是数据库厂商私有的,因此普通用户被剥夺了这种选择权。
在客户/服务器方式逐渐大众化的同时,面向对象方式开始崛起。面向对象为领域逻辑的问题找到了答案:转到三层架构的系统。在这种方式下,在表现层实现用户界面,在领域层实现领域逻辑,在数据源层存取数据。这种方式使你可以将复杂的领域逻辑从界面代码中抽取出来,单独放到中间层,用对象加以建模和组织。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市