作者 |
王西友 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9787111688105 |
简要 |
简介 |
内容简介书籍计算机书籍 本书系统介绍软件的设计思想、架构和开发模式,便于读者能够快速建立软件开发的知识体系,并通过学习基于ASP.NET Core的项目案例,掌握如何利用这些知识高效开发稳定的Web应用程序。 本书共10章,分为2篇。第1篇介绍软件设计思想、软件架构、面向对象编程的六大原则和设计模式等,本篇内容是软件开发初学者晋升道路上必须掌握的知识。第2篇首先介绍领域驱动设计,然后通过项目案例,展示以领域模型为核心的Web应用程序的完整开发过程,本篇内容体现了高品质软件开发的核心价值,也体现了面向对象程序设计的思想价值。 本书理论结合实践,讲解深入浅出,适合有一定C#语言基础的Web开发人员阅读,尤其适合想要进一步晋升自己知识体系和水平的Web程序员阅读。另外,本书也可以作为相关培训机构的教材使用。 |
目录 |
前言 第1篇 软件开发内功心法 第1章 如何开始一个软件项目 2 1.1 软件项目开发面临的挑战 2 1.1.1 领域模型的创建 3 1.1.2 架构的选择 4 1.1.3 软件框架的使用 5 1.1.4 数据存储的实现 6 1.2 小结 6 第2章 软件如何解决问题 7 2.1 软件的发展历程 7 2.1.1 面向过程的编程 8 2.1.2 面向对象的编程 9 2.1.3 面向组件的编程 16 2.1.4 面向方面的编程 19 2.1.5 综述 21 2.2 对象的意义 21 2.2.1 对象和类型 22 2.2.2 对象的创建和生命周期的控制 23 2.2.3 对象的依赖 26 2.3 组件 26 2.3.1 接口与实现分离 27 2.3.2 接口分解 30 2.3.3 接口的多重实现与继承 33 2.3.4 接口与契约式编程 34 2.4 小结 35 第3章 软件架构 36 3.1 软件架构概述 36 3.1.1 软件架构的定义 36 3.1.2 软件架构风格和架构模式 38 3.1.3 4+1视图 40 3.2 主流软件架构简介 41 3.2.1 分层架构 41 3.2.2 MVC架构 45 3.2.3 REST架构 47 3.2.4 微服务架构 52 3.3 小结 54 第4章 面向对象的设计模式和原则 55 4.1 重用 55 4.1.1 继承重用 56 4.1.2 组合重用 60 4.1.3 模式重用 62 4.2 面向对象的设计原则 63 4.2.1 单一职责原则 63 4.2.2 开闭原则 65 4.2.3 里氏代换原则 67 4.2.4 依赖倒置原则 71 4.2.5 接口隔离原则 73 4.2.6 迪米特法则 75 4.3 设计模式 79 4.3.1 设计模式的定义 80 4.3.2 设计模式的分类和应用 80 4.3.3 如何使用设计模式 81 4.4 小结 81 第5章 项目概况与架构设计 83 5.1 iShopping项目 83 5.1.1 项目简介 83 5.1.2 用Java还是.NET Core 84 5.1.3 集成开发环境 85 5.2 iShopping的架构设计 86 5.2.1 领域驱动设计和逻辑视图 86 5.2.2 开发视图 88 5.2.3 进程视图 89 5.2.4 物理视图 91 5.2.5 场景视图 92 5.3 小结 93 第2篇 领域驱动设计落地 第6章 领域模型 96 6.1 领域驱动设计 96 6.2 领域对象的识别与创建 98 6.2.1 实体对象 99 6.2.2 实体对象的标识和替换 104 6.2.3 值对象 108 6.2.4 用值对象封装复杂的逻辑 114 6.3 整体设计 124 6.3.1 领域的划分 125 6.3.2 限界上下文 127 6.3.3 限界上下文的映射 128 6.4 聚合 142 6.4.1 聚合对象 142 6.4.2 使用聚合对象实现限界上下文 143 6.4.3 聚合对象之间的导航 151 6.4.4 聚合内部对象的实现和引用 156 6.5 领域服务对象 157 6.5.1 领域服务 158 6.5.2 领域服务和应用服务 160 6.5.3 领域服务与贫血模型 161 6.6 领域事件 163 6.6.1 领域事件简介 164 6.6.2 领域事件的发布和订阅 166 6.7 领域对象的生命周期 176 6.7.1 工厂和构建器 176 6.7.2 仓储对象 179 6.8 小结 182 第7章 综合运用领域模型 183 7.1 商品上下文的实现 183 7.1.1 商品分类聚合的实现 184 7.1.2 商品聚合的实现 192 7.2 订单上下文的实现 202 7.2.1 购物车聚合的实现 204 7.2.2 订单聚合的实现 210 7.2.3 订单优惠聚合的实现 224 7.2.4 订单费用计算服务的实现 229 7.3 小结 232 第8章 基础设施层的实现 233 8.1 基础设施层的创建 233 8.2 数据存储 234 8.2.1 数据库设计范式 235 8.2.2 事务 238 8.2.3 NoSQL数据库 240 8.3 对象关系映射 241 8.3.1 对象-数据库阻抗失配 241 8.3.2 对象关系映射的困难 242 8.3.3 传统的数据访问技术ADO.NET 243 8.4 Entity Framework Core框架 247 8.4.1 Entity Framework Core的引用 247 8.4.2 Entity Framework Core简介 249 8.4.3 实现自定义数据上下文 252 8.4.4 实现对象仓储 270 8.5 MongoDB应用 280 8.5.1 MongoDB数据库 281 8.5.2 使用MongoDB实现对象仓储 283 8.6 RabbitMQ应用 287 8.6.1 RabbitMQ的安装和配置 288 8.6.2 使用RabbitMQ实现事件总线 290 8.7 使用第三方WebAPI 297 8.7.1 WebAPI访问技术 297 8.7.2 使用WebAPI实现运输距离的计算 300 8.8 小结 303 第9章 应用程序层的实现 304 9.1 应用程序层简介 304 9.1.1 应用程序层和应用服务 306 9.1.2 应用服务的接口形式 310 9.1.3 CQRS风格的应用服务 312 9.1.4 事件存储 317 9.2 实现查询的方法 319 9.2.1 对象的映射 319 9.2.2 查询过滤器 321 9.2.3 数据代理 327 9.2.4 查询门面 334 9.3 小结 341 第10章 展示层和MVC框架 342 10.1 ASP.NET Core MVC框架 342 10.1.1 路由 343 10.1.2 MVC简介 346 10.1.3 控制器 349 10.1.4 控制器和领域模型 352 10.1.5 视图和模型 354 10.1.6 OWIN和反向代理 358 10.2 ASP.NET Core MVC项目 361 10.2.1 搭建MVC 362 10.2.2 依赖注入容器 367 10.2.3 搭建前端开发框架 371 10.3 控制器和视图的实现 372 10.3.1 控制器和视图 373 10.3.2 视图的表单提交 377 10.3.3 视图与服务器的异步通信 379 10.4 小结 382 |