标签分类
当前位置:首页 > 操作系统电子书 > 驱动设计电子书网盘下载
实现领域驱动设计 实现领域驱动设计
shishuwu

shishuwu 提供上传

资源
30
粉丝
24
喜欢
141
评论
4

    实现领域驱动设计 PDF 高清版

    驱动设计电子书
    • 发布时间:

    给大家带来的一篇关于驱动设计相关的电子书资源,介绍了关于实现领域、驱动设计方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小107 MB,沃恩.弗农编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.1,更多相关的学习资源可以参阅 操作系统电子书、等栏目。

  • 实现领域驱动设计 PDF 下载
  • 下载地址:https://pan.baidu.com/s/12Nlj4ZUzq8EqoozPg-nnZQ
  • 分享码:d1v7
  • 实现领域驱动设计PDF

    对开发软件中普遍的场景开展了非常好的抽象性,分类。 尽管一些地区说得不足深入,一些地区的感染力不足,还一些地区乃至欺诈比较严重(例如运用信息集成化限界语义时,根据恶性事件产生時间来处理次序难题的计划方案,假如消費端布署在好几个连接点,这一计划方案就是说不太好的,或是很不完善,而这在现阶段互联网技术运用中是十分广泛的状况)。 但这书对怎样运用DDD,怎样立在更高的层级开展设计方案,怎样衡量设计方案,开展了清楚的表明,并明确提出了行之有效的提议和标准。 始终在想外国人为何那么擅于抽象性、造就新词汇,从而创建一整套管理体系/观念/方式

    读后感:前3章能够略过(免于退避三舍),从第4章刚开始读。最有使用价值的层面是在其中讲来到许多设计方案与技术性实现关键点,在具体新项目中大多数碰到过。有关书中提到“事件驱动构架(异步-信息体制)”,基础理论超过具体,忽视了1个情况严重的难题,就是说分布式事务管理方法。就本人现阶段的工作经验与了解,MQ信息体制更合适做为不一样运用间的集成化技术性。

    发展战略设计方案教會你如何恰当的区划行业、子行业,如何设计方案有效的限界语义,如何和专家合作明确通用性語言。

    防守战术设计方案中,实体线、值另一半、聚合物、资料库、行业恶性事件等定义,较为全的遮盖了开发设计各个领域。

    或许在日常生活中,并沒有见到过许多人应用DDD,可是并不是防碍从书初中到这类业务流程抽象性工作能力。极力推荐精读,无论是有工作经验或是没工作经验的程序猿。坚信能从文中感受许多。

    目录

    • 序............... xix
    • 前言............. xxi
    • 致谢............ xxxi
    • 关于作者................... xxxv
    • 如何使用本书.........xxxvii
    • 第1章 DDD入门...............1
    • 我能DDD吗?..................2
    • 为什么我们需要DDD.............5
    • 如何DDD...................... 17
    • 使用DDD的业务价值..............22
    • 1.你获得了一个非常有用的领域模型................22
    • 2.你的业务得到了更准确的定义和理解............23
    • 3.领域专家可以为软件设计做出贡献...........23
    • 4.更好的用户体验....................23
    • 5.清晰的模型边界.....................24
    • 6.更好的企业架构..............24
    • 7.敏捷、迭代式和持续建模....................24
    • 8.使用战略和战术新工具........................24
    • 实施DDD所面临的挑战.....................25
    • 虚构的案例,真实的实践................... 33
    • 本章小结.........................36
    • 第2章 领域、子域和限界上下文.....................37
    • 总览....................... 37
    • 工作中的子域和限界上下文............................. 38
    • 将关注点放在核心域上............................. 42
    • 战略设计为什么重要.................... 45
    • 现实世界中领域和子域...................48
    • 理解限界上下文..................... 53
    • 限界上下文不仅仅只包含模型..................... 57
    • 限界上下文的大小...................... 59
    • 与技术组件保持一致................... 61
    • 示例上下文........................ 62
    • 协作上下文..................63
    • 身份与访问上下文..................69
    • 敏捷项目管理上下文................. 71
    • 本章小结....................................73
    • 第3章 上下文映射图............................75
    • 上下文映射图为什么重要........................ 75
    • 绘制上下文映射图......................77
    • 产品和组织关系........................79
    • 映射3个示例限界上下文........................82
    • 本章小结............................97
    • 第4章 架构.......................99
    • 采访一个成功的CIO.................... 100
    • 分层................................. 104
    • 依赖倒置原则.................... 107
    • 六边形架构(端口与适配器)..................... 110
    • 面向服务架构.......................114
    • REST................................117
    • REST作为一种架构风格...........................117
    • RESTful HTTP服务器的关键方面 ........................................ 118
    • RESTful HTTP客户端的关键方面 ........................................ 119
    • REST和DDD..................... 120
    • 为什么是REST?......................... 121
    • 命令和查询职责分离——CQRS................. 121
    • CQRS的各个方面........................ 123
    • 处理具有最终一致性的查询模型.................. 128
    • 事件驱动架构................... 129
    • 管道和过滤器..................... 131
    • 长时处理过程(也叫Saga)................... 134
    • 事件源...................... 140
    • 数据网织和基于网格的分布式计算....................... 143
    • 数据复制..................... 144
    • 事件驱动网织和领域事件.................. 145
    • 持续查询................... 145
    • 分布式处理...................... 146
    • 本章小结............................ 148
    • 第5章 实体......................... 149
    • 为什么使用实体......................... 149
    • 唯一标识............................ 151
    • 用户提供唯一标识......................... 152
    • 应用程序生成唯一标识........................... 153
    • 持久化机制生成唯一标识............................ 156
    • 另一个限界上下文提供唯一标识..................... 160
    • 标识生成时间..................... 161
    • 委派标识......................... 163
    • 标识稳定性.......................... 165
    • 发现实体及其本质特征............................. 167
    • 揭开实体及其本质特征的神秘面纱................. 168
    • 挖掘实体的关键行为.......................... 172
    • 角色和职责......................... 176
    • 创建实体......................... 181
    • 验证................................... 183
    • 跟踪变化............................ 192
    • 本章小结................................ 192
    • 第6章 值对象..................... 193
    • 值对象的特征.......................... 194
    • 度量或描述.......................... 195
    • 不变性........................... 195
    • 概念整体................................ 196
    • 可替换性.......................... 199
    • 值对象相等性..........................200
    • 无副作用行为............................. 201
    • 最小化集成..................204
    • 用值对象表示标准类型........................206
    • 测试值对象........................ 210
    • 实现.............................. 214
    • 持久化值对象................. 219
    • 拒绝由数据建模泄漏带来的不利影响..................220
    • ORM与单个值对象................................ 221
    • 多个值对象序列化到单个列中.....................224
    • 使用数据库实体保存多个值对象....................225
    • 使用联合表保存多个值对象..........................229
    • ORM与枚举状态对象........................................230
    • 本章小结....................... 233
    • 第7章 领域服务.................................235
    • 什么是领域服务(首先,什么不是领域服务).................. 237
    • 请确定你是否需要一个领域服务................................ 238
    • 建模领域服务.................. 241
    • 独立接口有必要吗.............................244
    • 一个计算过程..........................246
    • 转换服务........................249
    • 为领域服务创建一个迷你层.........................250
    • 测试领域服务............................250
    • 本章小结.................. 253
    • 第8章 领域事件...............................255
    • 何时/为什么使用领域事件.......................... 255
    • 建模领域事件.................... 258
    • 创建具有聚合特征的领域事件................... 263
    • 身份标识............................264
    • 从领域模型中发布领域事件.............................. 265
    • 发送方................... 265
    • 订阅方.....................269
    • 向远程限界上下文发布领域事件............................. 271
    • 消息设施的一致性........................... 271
    • 自治服务和系统............................. 272
    • 容许时延.................. 273
    • 事件存储.................. 274
    • 转发存储事件的架构风格........................... 279
    • 以REST资源的方式发布事件通知....................... 279
    • 通过消息中间件发布事件通知.................. 283
    • 实现............................284
    • 发布NotificationLog............... 285
    • 发布基于消息的事件通知..............................290
    • 本章小结........................297
    • 第9章 模块................................299
    • 通过模块完成设计..................................299
    • 模块的基本命名规范..........................302
    • 领域模型的命名规范...........................302
    • 敏捷项目管理上下文中的模块..............................305
    • 其他层中的模块..................308
    • 先考虑模块,再是限界上下文...............................309
    • 本章小结......................... 310
    • 第10章 聚合...................... 311
    • 在Scrum核心领域中使用聚合........................ 312
    • 第一次尝试:臃肿的聚合....................... 313
    • 第二次尝试:多个聚合........................... 314
    • 原则:在一致性边界之内建模真正的不变条件................317
    • 原则:设计小聚合............................. 319
    • 不要相信每一个用例............................ 321
    • 原则:通过唯一标识引用其他聚合......................... 322
    • 通过标识引用使多个聚合协同工作 ...................................... 324
    • 建模对象导航性............................ 325
    • 可伸缩性和分布式............................. 326
    • 原则:在边界之外使用最终一致性............................. 327
    • 谁的任务?............................ 328
    • 打破原则的理由......................... 329
    • 理由之一:方便用户界面................................. 329
    • 理由之二:缺乏技术机制............................. 330
    • 理由之三:全局事务.......................................... 331
    • 理由之四:查询性能.................................. 331
    • 遵循原则.................... 332
    • 通过发现,深入理解............................... 332
    • 重新思考设计............................... 332
    • 估算聚合成本............................. 334
    • 常见用例场景........................ 335
    • 内存消耗............................ 336
    • 探索另外的设计................................... 337
    • 实现最终一致性.............................. 338
    • 这是Scrum团队成员的任务吗?......................... 339
    • 决定的时候到了.............................. 341
    • 实现........................................ 341
    • 创建具有唯一标识的根实体........................ 342
    • 优先使用值对象...................... 343
    • 使用迪米特法则和“告诉而非询问”原则 ...............344
    • 乐观并发...............346
    • 避免依赖注入................348
    • 本章小结................................ 349
    • 第11章 工厂................. 351
    • 领域模型中的工厂................. 351
    • 聚合根中的工厂方法............................. 352
    • 创建CalendarEntry实例................... 353
    • 创建Discussion实例............................ 357
    • 领域服务中的工厂.......................... 358
    • 本章小结.......................... 361
    • 第12章 资源库...........................363
    • 面向集合资源库...........................364
    • Hibernate实现...................... 369
    • TopLink实现.................... 377
    • 面向持久化资源库........................ 379
    • Coherence实现............................ 381
    • MongoDB实现......................... 386
    • 额外的行为...................................... 391
    • 管理事务................................. 393
    • 警告................................. 397
    • 类型层级............................... 397
    • 资源库 vs 数据访问对象(DAO)..............................400
    • 测试资源库.......................................... 401
    • 以内存实现进行测试...................404
    • 本章小结................................407
    • 第13章 集成限界上下文...............................409
    • 集成基础知识....................................409
    • 分布式系统之间存在根本性区别.......................411
    • 跨系统边界交换信息...............................411
    • 通过REST资源集成限界上下文......................... 417
    • 实现REST资源.......................... 418
    • 使用防腐层实现REST客户端........... 421
    • 通过消息集成限界上下文................ 428
    • 从Scrum的产品负责人和团队成员处得到持续通知 .................... 428
    • 你能处理这样的职责吗?..................... 434
    • 长时处理过程,以及避免职责............. 439
    • 长时处理过程的状态机和超时跟踪器 .................................. 450
    • 设计一个更复杂的长时处理过程 ..........................................460
    • 当消息机制或你的系统不可用时 ...........................................464
    • 本章小结.................................465
    • 第14章 应用程序..................467
    • 用户界面...................................469
    • 渲染领域对象............. 470
    • 渲染数据传输对象................... 471
    • 使用调停者发布聚合的内部状态 .......................................... 471
    • 通过领域负载对象渲染聚合实例 .......................................... 472
    • 聚合实例的状态展现............................. 473
    • 用例优化资源库查询...................... 474
    • 处理不同类型的客户端................... 474
    • 渲染适配器以及处理用户编辑............. 475
    • 应用服务 ............................................ 478
    • 示例应用服务 ................................ 478
    • 解耦服务输出 .....................485
    • 组合多个限界上下文 .....................487
    • 基础设施 ...............................489
    • 企业组件容器 ....................490
    • 本章小结 ....................494
    • 附录A 聚合与事件源:A+ES ..........................495
    • 应用服务内部 ....................... 496
    • 命令处理器 .....................505
    • Lambda语法...................508
    • 并发控制 ....................... 510
    • A+ES所带来的结构自由性 .............. 513
    • 性能 ............................ 513
    • 实现事件存储 ..................... 516
    • 关系型持久化 .................. 520
    • BLOB持久化 ...................... 522
    • 专注的聚合 ............................ 523
    • 读模型投射 ........................... 524
    • 与聚合设计一道使用 ................ 527
    • 增强事件 ........................... 527
    • 工具和模式 ................... 529
    • 事件序列器 .......... 530
    • 事件不变性 ................ 531
    • 值对象 ..................... 531
    • 协议生成 .................... 534
    • 单元测试和需求规范 .............. 535
    • 事件源和函数式语言 .......... 536
    • 参考文献 ..................539

    上一篇:菜鸟成长之路:Java程序员职场全攻略  下一篇:新一代SDN VMware NSX 网络原理与实践

    展开 +

    收起 -

    驱动设计相关电子书
    学习笔记
    网友NO.718777

    Vue数据驱动模拟实现5

    一、前言 在"模拟Vue之数据驱动4"中,我们实现了push、pop等数组变异方法。 但是,在随笔末尾我们提到,当pop、sort这些方法触发后,该怎么办呢?因为其实,它们并没有往数组中新增属性呢。 而且,当数据改动后,如果我们在变动数据处,就立即更改数据也未免性能不够,此时,走读Vue源码,发现他用了一个很巧妙的方法,就是职责链模式。当某个数据有所变动时,它会向上传递,通俗点就是冒泡至根结点,这样我们也可以在自己代码中使用事件代理咯,哇卡哇卡。 示意图如下所示: 好了,说了这么多,我们下面就一起来实现下吧。 二、正文 注:以下代码皆编写在observer.js文件中。 首先,当数据变动,或者触发某个事件时,我们需要与变动数据关联一个自定义事件(自定义事件详情见here),如果触发某个事件,那么就执行,如下: 绑定事件方法: //let p = Observer.prototypep.on = function(eventName, fn){ let listener = this.listener = this.listener || []; if(typeof eventName === 'string' typeof fn === 'function'){ if(!listener[eventName]){ listener[eventName] = [fn]; }else{ listener[eventName].push(fn); } } } 取消事件方法: //let p = Observer.prototypep.off = function(eventName, fn){ let listener = this.listener = this.listener || []; let actionArray = listener[eventName]; if(typeof eventName === 'string' Array.isArray(action……

    网友NO.905654

    快速掌握Node.js事件驱动模型

    一、传统线程网络模型 在了解Node.js事件驱动模型之前,我们先了解一下传统的线程网络模型,请求进入web服务器(IIS、Apache)之后,会在线程池中分配一个线程来线性同步完成请求处理,直到请求处理完成并发出响应,结束之后线程池回收。 这就会就会带来以下几个问题 : 1.由于线程池中线程个数有限,对于频繁请求时,就会出现等待,严重的甚至会把服务器挂掉 2.对于高并发的时候,为了防止出现脏数据就会使用锁来解决,一些I/O事务可能消耗很长得时间,这样就会出现一些线程等待,效率低下 二、事件驱动模型 1.在Node.js中有一个事件队列,每个任务都会放入事件队列中,都会留下处理结果的回调函数,事件循环线程(个人感觉有点类似ios中的RunLoop)处理事件队列中的任务,直到回调函数不再存在。 2. 在无阻塞的情况下,作为一个带有回调的函数被放入事件队列中,事件循环线程中被提取并执行。 3.当执行过程中遇到I/O阻塞(读取文件、查询数据库、请求套接字、访问远程服务等)时,事件循环线程不会停下等待结果,转而继续执行队列中的下一个任务,不会在事件循环线程中执行。在函数执行时,Node.js在事件队列中放置回调函数,它的顺序根据函数的完成快慢决定。 4.在1中也说了当遇到I/O阻塞,循环线程不会等待结果,转而执行队列中的下一个任务……

    网友NO.416131

    Node.js中的事件驱动编程详解

    在传统程编程模里,I/O操作就像一个普通的本地函数调用:在函数执行完之前程序被堵塞,无法继续运行。堵塞I/O起源于早先的时间片模型,这种模型下每个进程就像一个独立的人,目的是将每个人区分开,而且每个人在同一时刻通常只能做一件事,必须等待前面的事做完才能决定下一件事做什么。但是这种在计算机网络和Internet上被广泛使用的“一个用户,一个进程”的模型伸缩性很差。管理多个进程时,会耗费很多内存,上下文切换也会占用大量资源,这些对操作系统是个很大的负担,而且随着进程数的递增,会导致系统性能急剧衰减。 多线程是个替代方案,线程是一个轻量级的进程,它会和同一个进程内的其它线程共享内存,它更像传统模型的扩展,用来并发执行多个线程,当一个线程等待I/O操作时,其它线程可以接管CPU,当I/O操作完成,前面等待的线程会被唤醒。就是说,一个运行中的线程可以被中断,然后稍候再被恢复。此外,在一些系统下线程可以在多核CPU的不同核心下并行运行。 程序员并不知道线程会在什么具体时间运行,他们必须很小心的处理共享内存的并发访问,因此必须使用一些同步原语来同步访问某个数据结构,比如使用锁或信号量,以此来强制线程以特定的行为和计划执行。那些大量依赖线程……

    网友NO.108377

    VUE2实现事件驱动弹窗示例

    前几天想了解vue如何写弹窗组件 有以下两种可取的写法: 1.状态管理 如果弹窗组件放在根组件,使用vuex来管理组件的show和hide。放在组件内,通过增加v-show或v-if来控制,可结合slot,定义不同需求的弹窗 2.事件管理 注册一个全局事件来打开弹窗,传入需展示的文字和相关的逻辑控制,可结合promise,实现异步 觉得对用像confirme和propmt这类弹窗,还是事件驱动的好。最好就是能使用promise回调。 于是手痒就写了一个。下面是代码。 propmt.js import Vue from 'vue'import promptComponent from './prompt.vue' // 引入弹窗的vue文件const promptConstructor = Vue.extend(promptComponent); // 注册组件let instance = new promptConstructor().$mount(''); // 获得组件的实例document.body.appendChild(instance.$el); // 将组件的element插入到body中const Alert = (text,okText)={ if(instance.show === true) { //防止多次触发 return; } // 为弹窗数据赋值 instance.show = true; instance.isAlert = true; instance.okText = okText||'确定'; instance.message = text; //返回一个promise对象,并为按钮添加事件监听 return new Promise(function(resolve,reject) { instance.$refs.okBtn.addEventListener('click',function() { instance.show = false; resolve(true); }) })};const Confirm = (text,okText,cancelText)={ if(instance.show === true) { return; } instance.show = true; instance.okText = okText||'确定'; instance.cancelText = cancelTex……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明