![]() 作者:patterns & practices 团队 出版社: 电子工业出版社 译者:朱晔、高翔、王敏 译/李潘 审校 出版年: 2010年11月 页数: 382 定价: 69.00元 装帧: 平装 ISBN: 9787121120473 内容简介 · · · · · ·本书为架构师和开发人员提供有关基于微软平台和.NET框架进行应用程序架构设计的一些指导。本书分为四个部分:第一部分“软件架构和设计篇”提供了对底层原则和模式的总结,第二部分“设计基础篇”提供了有关设计解决方案分层、组件及服务的指导原则,以及处理有关质量特性和横切关注点的一些指导原则,第三部分“应用原型篇”提供了针对典型应用程序类型的一些特定指导原则,最后,附录提供了微软平台和.NET框架技术及其特性的概览。 作者简介 · · · · · ·本书由如下.NET 架构和开发人员编写: J.D. Meier David Hill Alex Homer Jason Taylor Prashant Bansode Lonnie Wall Rob Boucher Jr. Akshay Bogawat 目录 · · · · · ·序一 I序二 II 前言 III 导言 IV 软件架构和设计篇 1 第1章 什么是软件架构 3 · · · · · ·() 序一 I 序二 II 前言 III 导言 IV 软件架构和设计篇 1 第1章 什么是软件架构 3 1.1 为什么架构很重要? 3 1.2 架构的目标 4 1.2.1 架构风景线(Architectural Landscape) 5 1.3 架构设计的原则 5 1.3.1 关键设计原则 6 1.3.2 其他资源 6 第2章 软件架构的关键原则 7 2.1 概览 7 2.2 关键设计原则 8 2.3 关键设计考量 10 2.3.1 确定应用程序类型 10 2.3.2 确定部署策略 11 2.3.3 确定合适的技术 11 2.3.4 确定质量特性 11 2.3.5 确定横切关注点 11 第3章 架构模式和风格 13 3.1 概览 13 3.2 什么是架构风格? 13 3.3 关键架构风格小结 14 3.3.1 组合架构风格 14 3.4 客户端/服务端架构风格 15 3.5 基于组件的架构风格 16 3.6 领域驱动设计架构风格 17 3.7 分层架构风格 18 3.8 消息总线架构风格 20 3.9 N层/三层架构风格 21 3.10 面向对象架构风格 21 3.11 面向服务架构风格 22 3.12 其他资源 23 第4章 架构和设计的方法 25 4.1 概览 25 4.2 输入、输出和设计步骤 25 4.3 确定架构目标 26 4.3.1 范围和时间 26 4.4 关键应用场景 27 4.4.1 对架构重要的用例 27 4.5 应用程序概览 28 4.5.1 相关技术 29 4.5.2 画出您的架构 29 4.6 关键问题 30 4.6.1 质量特性 30 4.6.2 横切关注点 30 4.6.3 用于减少问题的设计 31 4.7 候选解决方案 32 4.7.1 基准架构和候选架构 32 4.7.2 架构刺探 33 4.8 接下去做什么 33 4.9 评审架构 33 4.9.1 基于应用场景的评估 33 4.10 展示和沟通您的架构设计 34 4.11 其他资源 35 设计基础篇 37 第5章 分层应用程序指导原则 39 5.1 概览 39 5.2 逻辑分层设计 39 5.2.1 表现层、业务层和数据层 39 5.3 服务和分层 40 5.3.1 服务层 41 5.4 分层结构的设计步骤 42 步骤1:选择您的分层策略 42 步骤2:确定您需要的分层 43 步骤3:确定如何分布层和组件 43 步骤4:确定是否需要收缩层 43 步骤5:确定层之间交互的规则 44 步骤6:找出横切关注点 44 步骤7:定义层之间的接口 44 步骤8:选择您的部署策略 45 步骤9:选择通信协议 46 第6章 表现层指导原则 47 6.1 概览 47 6.2 总体设计考量 48 6.3 特定设计问题 49 6.3.1 缓存 49 6.3.2 通信 50 6.3.3 组合 50 6.3.4 异常管理 50 6.3.5 导航 51 6.3.6 用户体验 51 6.3.7 用户界面 52 6.3.8 验证 52 6.4 技术考量 53 6.4.1 移动应用程序 53 6.4.2 富客户端应用程序 53 6.4.3 富互联网应用程序 53 6.4.4 Web应用程序 54 6.5 性能考量 54 6.6 表现层设计步骤 55 6.7 相关设计模式 56 6.8 模式和实践团队提供的产品 57 6.9 其他资源 57 第7章 业务层指导原则 59 7.1 概览 59 7.2 总体设计考量 60 7.3 特定设计问题 61 7.3.1 身份验证 61 7.3.2 授权 61 7.3.3 缓存 62 7.3.4 耦合和内聚 62 7.3.5 异常管理 63 7.3.6 日志、审核和指示器(Instrumentation) 63 7.3.7 验证 63 7.4 部署考量 64 7.5 业务层的设计步骤 64 7.6 相关设计模式 65 7.7 模式和实践小组提供的产品 65 7.8 其他资源 66 第8章 数据层指导原则 67 8.1 概览 67 8.2 总体设计考量 68 8.3 特定设计问题 69 8.3.1 批量处理 69 8.3.2 二进制大对象 70 8.3.3 连接 70 8.3.4 数据格式 70 8.3.5 异常管理 71 8.3.6 对象关系映射 71 8.3.7 查询 72 8.3.8 存储过程 72 8.3.9 存储过程和动态SQL 72 8.3.10 事务 73 8.3.11 验证 74 8.3.12 XML 74 8.4 技术考量 75 8.5 性能考量 75 8.6 安全考量 76 8.7 部署考量 76 8.8 数据层的设计步骤 76 8.9 相关设计模式 77 8.10 其他资源 78 第9章 服务层指导原则 81 9.1 概览 81 9.2 设计考量 82 9.3 具体设计问题 83 9.3.1 身份验证 83 9.3.2 授权 83 9.3.3 通信 84 9.3.4 异常管理 84 9.3.5 消息信道 84 9.3.6 消息构建 85 9.3.7 消息端点 85 9.3.8 消息保护 85 9.3.9 消息路由 86 9.3.10 消息转换 86 9.3.11 服务接口 86 9.3.12 验证 87 9.4 REST和SOAP 87 REST设计考量 88 SOAP设计考量 88 9.5 技术考量 89 9.6 部署考量 89 9.7 服务层的设计步骤 90 9.8 相关设计模式 90 9.9 其他资源 93 第10章 组件指导原则 95 10.1 概览 95 10.2 组件设计总体指导原则 95 10.3 分层组件分布 96 10.4 表现层组件 96 10.5 服务层组件 97 10.6 业务层组件 97 10.7 数据层组件 98 10.8 横切组件 99 10.9 相关设计模式 99 10.10 模式和实践团队提供产品 100 10.11 其他资源 101 第11章 设计表现组件 103 11.1 概览 103 11.2 第一步:理解UI需求 103 11.3 第二步:确定需要的UI类型 104 11.4 第三步:选择UI技术 104 11.5 第四步:设计表现组件 106 11.5.1 用户界面组件 106 11.5.2 表现逻辑组件 107 11.5.3 表现模型组件 107 11.5.4 表现实体 108 11.6 第五步:确定绑定需求 109 11.7 第六步:确定错误处理策略 110 11.8 第七步:确定验证策略 111 11.9 模式和实践小组提供的产品 111 11.10 其他资源 112 第12章 设计业务组件 113 12.1 概览 113 12.2 第一步:确定您的应用程序将会使用的业务组件 113 12.3 第二步:为业务组件进行关键决策 114 12.4 第三步:选择合适的事务支持 114 12.5 第四步:确定如何处理业务规则 115 12.6 第五步:确定满足需求的模式 116 12.7 其他资源 117 第13章 设计业务实体 119 13.1 概览 119 13.2 第一步:选择表现方式 119 13.3 第二步:为业务实体选择设计 120 13.4 第三步:确定序列化支持 120 13.5 领域驱动设计 121 13.6 其他资源 122 第14章 设计业务工作流 123 14.1 概览 123 14.2 第一步:根据应用场景确定工作流风格 123 14.3 第二步:选择编写模式 124 14.4 第三步:确定如何处理规则 124 14.5 第四步:选择工作流解决方案 124 14.6 第五步:设计业务组件来支持工作流 125 14.6.1 Windows Workflow Foundation 125 14.6.2 BizTalk服务器 126 14.6.3 带ESB的BizTalk 126 14.6.4 结合使用Windows Workflow Foundation和BizTalk 127 14.7 其他资源 128 第15章 设计数据组件 129 15.1 概览 129 15.2 第一步:选择数据访问技术 129 15.3 第二步:选择如何从数据源获取和持久化业务对象 130 15.4 第三步:确定如何连接数据源 130 15.4.1 连接 130 15.4.2 连接池 131 15.4.3 事务和并发 132 15.5 第四步:确定处理数据源错误的策略 133 15.5.1 异常 133 15.5.2 重试逻辑 133 15.5.3 超时 134 15.6 第五步:设计服务代理组件(可选) 134 15.7 其他资源 134 第16章 质量特性 135 16.1 概览 135 16.2 常见质量特性 135 16.2.1 可用性 137 16.2.2 概念完整性 137 16.2.3 互操作性 138 16.2.4 可维护性 138 16.2.5 可管理性 139 16.2.6 性能 139 16.2.7 可靠性 140 16.2.8 可重用性 140 16.2.9 可伸缩性 141 16.2.10 安全性 141 16.2.11 可支持性 142 16.2.12 可测试性 142 16.2.13 用户体验/易用性 143 16.3 其他资源 143 第17章 横切关注点 145 17.1 概览 145 17.2 总体设计考量 145 17.3 具体设计问题 146 17.3.1 身份验证 146 17.3.2 授权 147 17.3.3 缓存 147 17.3.4 通信 148 17.3.5 配置管理 148 17.3.6 异常管理 149 17.3.7 日志和指示器 149 17.3.8 状态管理 150 17.3.9 验证 150 17.4 缓存的设计步骤 151 17.4.1 第一步:确定要缓存的数据 151 17.4.2 第二步:确定数据缓存在哪里 151 17.4.3 第三步:确定缓存数据的格式 152 17.4.4 第四步:确定合适的缓存管理策略 152 17.4.5 第五步:确定如何加载缓存数据 153 17.5 异常管理的设计步骤 154 17.5.1 第一步:确定需要处理的异常 154 17.5.2 第二步:确定您的异常检测策略 154 17.5.3 第三步:确定异常的传播策略 154 17.5.4 第四步:确定您自定义异常的策略 155 17.5.5 第五步:确定需要收集的信息 155 17.5.6 第六步:确定异常日志记录策略 156 17.5.7 第七步:确定您的异常通知策略 156 17.5.8 第八步:确定如何处理未处理异常 156 17.6 验证输入和验证数据的设计步骤 157 17.6.1 第一步:确定信任边界 157 17.6.2 第二步:确定关键应用场景 157 17.6.3 第三步:确定哪里需要验证 157 17.6.4 第四步:确定验证策略 158 17.7 相关设计模式 158 17.8 模式和实践团队的解决方案产品 158 17.9 其他资源 159 第18章 通信和消息 161 18.1 概览 161 18.2 总体设计指导原则 161 18.3 基于消息通信的指导原则 162 18.3.1 异步和同步通信 163 18.3.2 耦合和内聚 163 18.3.3 数据格式 163 18.3.4 互操作性 164 18.3.5 性能 165 18.3.6 状态管理 165 18.4 契约先行设计 165 18.5 安全考量 166 18.5.1 传输安全 166 18.5.2 消息安全 167 18.6 技术选项 167 18.6.1 WCF技术选项 167 18.6.2 ASMX技术选项 168 18.7 其他资源 168 第19章 物理层和部署 169 19.1 概览 169 19.2 分布式和非分布式部署 169 19.2.1 非分布式部署 169 19.2.2 分布式部署 170 19.2.3 分布式环境的性能和设计考量 170 19.2.4 针对分布式部署中定位组件的一些建议 171 19.3 分布式部署模式 172 19.3.1 客户端/服务端部署 172 19.3.2 N层部署 172 19.3.3 两层部署 172 19.3.4 三层部署 173 19.3.5 四层部署 173 19.3.6 Web应用程序部署 173 19.3.7 富互联网应用程序部署 174 19.3.8 富客户端应用程序部署 174 19.4 性能模式 174 19.4.1 负载均衡集群 175 19.4.2 亲和性和会话技术 175 19.4.3 应用农场 176 19.5 可靠性模式 176 19.5.1 故障转移集群 176 19.6 安全性模式 177 19.6.1 模拟和委派 177 19.6.2 信任子系统 178 19.6.3 多重信任服务标识 178 19.7 纵向扩展和横向扩展 179 19.7.1 纵向扩展的考量 179 19.7.2 设计以支持横向扩展 179 19.7.3 设计的牵制和权衡 180 19.8 网络基础结构的安全考量 181 19.9 可管理性考量 182 19.10 相关设计模式 182 19.11 其他资源 183 应用程序原型篇 185 第20章 选择应用程序类型 187 20.1 概述 187 20.2 应用程序原型小结 187 20.2.1 应用程序类型优缺点 188 20.3 移动应用程序 189 20.4 富客户端应用程序类型 190 20.5 富Internet程序 191 20.6 服务应用程序类型 192 20.8 Web应用程序类型 193 第21章 设计Web应用程序 195 21.1 概述 195 21.2 通用设计考量 196 21.3 特定的设计考量 196 21.3.1 应用程序提交过程 197 21.3.2 身份验证 198 21.3.3 授权 198 21.3.4 缓存 198 21.3.5 异常管理 199 21.3.6 日志和规范 199 21.3.7 导航 199 21.3.8 页面布局 200 21.3.9 页面渲染 200 21.3.10 Session管理 201 21.3.11 验证 201 21.4 层设计中的考量 202 21.4.1 表现层 202 21.4.2 业务层 202 21.4.3 数据层 202 21.4.4 服务层 202 21.5 测试以及可测试性的考量 203 21.6 技术考量 203 21.7 部署考量 204 21.7.1 非分布式部署 204 21.7.2 分布式部署 204 21.7.3 负载均衡 205 21.8 相关的设计模式 206 21.9 其他资源 207 第22章 设计富客户端应用程序 209 22.1 概述 209 22.2 通用设计考量 210 22.3 特定的设计考量 211 22.3.1 业务层 211 22.3.2 通信 211 22.3.3 组合 212 22.3.4 配置管理 213 22.3.5 数据访问 213 22.3.6 异常管理 214 22.3.7 可维护性 214 22.3.8 表现层 215 22.3.9 状态管理 215 22.3.10 工作流 216 22.4 安全考量 216 22.5 数据处理考量 217 22.5.1 缓存数据 217 22.5.2 数据并发 218 22.5.3 数据绑定 218 22.6 离线/偶尔连线情况的设计考量 218 22.7 技术考量 219 22.8 部署考量 220 22.8.1 独立部署 220 22.8.2 客户端/服务器端部署 220 22.8.3 N层部署 220 22.8.4 部署技术 221 22.9 相关的设计模式 221 22.10 其他资源 223 第23章 设计富Internet应用程序 225 23.1 概述 225 23.2 通用设计考量 226 23.3 特定的设计考量 227 23.1.1 业务层 228 23.1.2 缓存 228 23.1.3 通信 229 23.1.4 组合 229 23.1.5 数据访问 230 23.1.6 异常管理 230 23.1.7 日志 230 23.1.8 媒体和图形 231 23.1.9 可移动性 231 23.1.10 可移植性 232 23.1.11 表现层 232 23.1.12 状态管理 232 23.1.13 验证 233 23.4 安全考量 233 23.5 数据处理考量 234 23.6 技术考量 234 23.7 部署考量 236 23.7.1 RIA插件安装 236 23.7.2 分布式部署 236 23.7.3 负载均衡 237 23.7.4 Web场的优缺点 238 23.8 相关的设计模式 238 23.9 其他资源 239 第24章 设计移动应用程序 241 24.1 概述 241 24.2 通用设计考量 242 24.3 一些特定的设计考量 243 24.3.1 身份验证和授权 243 24.3.2 缓存 244 24.3.3 通信 244 24.3.4 配置管理 245 24.3.5 数据访问 245 24.3.6 设备相关 246 24.3.7 异常管理 246 24.3.8 日志 247 24.3.9 移植应用程序 247 24.3.10 功耗管理 248 24.3.11 同步 248 24.3.12 测试 249 24.3.14 用户界面 249 24.3.15 验证 250 24.4 技术考量 250 24.4.1 Microsoft Silverlight for Mobile 250 24.4.2 .NET Compact Framework 251 24.4.3 Windows Mobile 251 24.4.4 Windows Embedded 252 24.5 部署考量 252 24.6 相关设计模式 253 24.7 其他资源 254 第25章 设计服务应用程序 255 25.1 概述 255 25.2 通用设计考量 256 25.3 特定的设计考量 257 25.3.1 身份验证 258 25.3.2 授权 258 25.3.3 业务层 258 25.3.4 通信 259 25.3.5 数据层 259 25.3.6 异常管理 260 25.3.7 消息结构 260 25.3.8 消息端点 260 25.3.9 消息保护 261 25.3.10 消息转换 261 25.3.11 消息交换模式 262 25.3.12 表述性状态传输 262 25.3.13 服务层 263 25.3.14 SOAP 264 25.3.15 验证 264 25.4 技术考量 265 25.5 部署考量 265 25.6 相关设计模式 266 25.7 其他资源 268 第26章 设计托管和云服务 269 26.1 概述 269 26.1.1 云计算 269 26.1.2 托管和云服务的通用词汇 270 26.2 云端应用程序的好处 271 26.2.1 针对ISV和服务托管的好处 271 26.2.3 针对消费服务企业的好处 272 26.3 设计考量 272 26.3.1 数据隔离和共享 272 26.3.2 数据安全 274 26.3.3 数据的存储和扩展 275 26.3.4 标识管理 277 26.3.5 多重租赁 278 26.3.6 内部托管还是外部托管,构建还是购买 279 26.3.7 性能 280 26.3.8 服务组合 280 26.3.9 服务集成 282 26.3.10 服务管理 283 26.4 相关设计模式 284 26.5 其他资源 285 第27章 设计Office业务应用程序 287 27.1 概述 287 27.1.1 构成Office业务应用程序的组件 288 27.2 Office业务应用程序的关键场景 288 27.2.1 企业内容管理 289 27.2.2 商业智能 289 27.2.3 统一消息 290 27.3 通用的OBA模式 290 27.3.1 扩展的到达通道 290 27.3.2 文档整合 291 27.3.3 文档工作流 293 27.3.4 组合用户界面 293 27.3.5 数据合并(导航发现) 294 27.3.6 协作 296 27.3.7 通知和任务 296 27.4 通用设计考量 297 27.5 安全考量 298 27.6 部署考量 298 27.7 相关设计模式 298 27.8 其他资源 299 第28章 设计SharePoint LOB应用程序 301 28.1 概述 301 28.1.1 SharePoint LOB应用程序的逻辑层 302 28.1.2 物理层部署 302 28.2 关键场景和特性 303 28.3 通用设计考量 303 28.4 特定的设计考量 304 28.4.1 业务数据目录 304 28.4.2 文档和内容存储 305 28.4.3 Excel服务 305 28.4.4 InfoPath 表单服务 306 28.4.5 SharePoint对象模型 306 28.4.6 Web Parts 307 28.4.7 工作流 307 28.5 技术考量 308 28.6 部署考量 308 28.7 相关设计模式 308 28.8 其他资源 309 应用程序原型篇 312 附录A 微软应用程序平台 313 A.1 概述 313 A.2 相关的信息和资源 314 A.2.1 微软是怎样在Web上组织技术信息的 314 A.2.2 Microsoft Developer Network 314 A.2.3 Microsoft TechNet 315 A.3 .NET框架 315 A.4 公共语言运行时 315 A.5 数据访问 315 A.6 移动应用程序 316 A.7 富客户端 317 A.8 富Internet应用程序 317 A.9 服务 318 A.10 工作流 318 A.11 Web应用程序 319 A.12 Web服务器——Internet信息服务 319 A.13 数据库服务器——SQL Server 320 A.14 Visual Studio开发环境 320 A.15 其他的工具和库 320 A.15.1 Patterns & practices解决方案 320 A.16 其他资源 321 附录B 表现方面的技术矩阵 323 B.1 概述 323 B.2 表现层技术小结 323 B.2.1 移动应用程序 323 B.2.2 富客户端应用程序 323 B.2.3 富Internet应用程序 324 B.2.4 Web应用程序 324 B.3 优缺点矩阵 325 B.3.1 移动应用程序 325 B.3.2 富客户端应用程序 326 B.3.3 富Internet应用程序 326 B.3.4 Web应用程序 327 B.4 通用的场景和解决方案 328 B.4.1 移动应用程序 328 B.4.2 富客户端应用程序 328 B.4.3 富Internet应用程序 329 B.4.4 Web应用程序 329 B.5 其他资源 330 附录C 数据访问的技术矩阵 331 C.1 概述 331 C.2 数据访问技术小结 331 C.3 优缺点矩阵 332 C.3.1 对象-关系数据访问 332 C.3.2 断线和离线场景 333 C.3.3 SOA/服务场景 333 C.3.4 N层以及通用场景 333 C.4 通用建议 335 C.5 通用的场景和解决方案 335 C.6 LINQ to SQL的缺点 336 C.7 移动解决方案的缺点 337 C.8 其他资源 337 附录D 整合方面的技术矩阵 339 D.1 概述 339 D.2 整合技术小结 339 D.3 优缺点矩阵 339 D.4 通用的场景和解决方案 341 D.5 其他资源 342 附录E 工作流方面的技术矩阵 343 E.1 概述 343 E.2 整合技术小结 343 E.3 人力工作流VS系统工作流 344 E.4 优缺点矩阵 344 E.5 通用的场景和解决方案 345 E.6 其他资源 345 附录F patterns & practices企业库 347 F.1 概述 347 F.2 企业库的目标 347 F.3 企业库的内容 347 F.3.1 应用程序块 348 F.4 缓存应用程序块(Caching Application Block) 349 F.4.1 关键场景 349 F.4.2 何时使用 349 F.4.3 缺点 350 F.5 加密应用程序块(Cryptography Application Block) 350 F.5.1 关键场景 350 F.5.2 何时使用 350 F.5.3 缺点 351 F.6 数据访问应用程序块(Data Access Application Block) 351 F.6.1 关键场景 351 F.6.2 何时使用 351 F.6.3 缺点 352 F.7 异常处理应用程序块(Exception Handling Application Block) 352 F.7.1 关键场景 352 F.7.2 何时使用 352 F.8 日志应用程序块(Logging Application Block) 353 F.8.1 关键场景 353 F.8.2 何时使用 353 F.8.3 缺点 353 F.9 策略注入应用程序块(Policy Injection Application Block) 353 F.9.1 关键场景 354 F.9.2 何时使用 354 F.9.3 缺点 354 F.10 安全应用程序块(Security Application Block) 354 F.10.1 关键场景 355 F.10.2 何时使用 355 F.10.3 缺点 355 F.11 Unity应用程序块(Unity Application Block) 355 F.11.1 关键场景 355 F.11.2 何时使用 356 F.11.3 缺点 356 F.12 验证应用程序块(Validation Application Block) 356 F.12.1 关键场景 356 F.12.2 何时使用 356 F.12.3 缺点 357 F.13 其他资源 357 附录G 模式与实践团队模式目录 359 G.1 关于WPF和Silverlight的组合应用程序指南 359 G.2 数据迁移模式 360 G.3 企业解决方案中的模式 361 G.4 整合模式 363 G.5 Web服务安全模式 364 G.6 其他资源 365 索引 367 · · · · · · () |
还行。。。
值得一看
结合当下分析得也通俗明了易懂
很期待