首页
学习
活动
专区
工具
TVP
发布

如何运用领域驱动设计 - 领域服务

此时,你可能需要一个领域服务来完成操作。 那么,到底什么是领域服务呢?怎么发现领域中的领域服务呢?领域服务和传统的应用服务又有什么区别呢?...来回顾一下上一篇文章 《如何运用DDD - 实体》 中我们所提炼出来的一个实体对象: public class Itinerary { public int ID { get; set; }...: 领域服务处理的是领域中的对象,比如实体、值对象等 领域服务是负责对领域中一系列对象的编排处理 当我们发现一个操作无法赋予一个实体或者值对象,且该操作又对业务流程很重要时,我们往往需要使用领域服务 领域服务中的操作...从上面的结论中我们大概可以知道,应用服务是为了让应用能够运用并且支撑对外的用户能够访问领域对象和执行领域逻辑的一层。...那么,你也许用错了领域服务,去重新认识你所识别出的实体和值对象,为它们赋予他们自身的行为,删除这些错误的领域服务。 总结 本次我们介绍了领域驱动设计战术模式中的领域服务。

63230

如何运用领域驱动设计 - 领域事件

什么是领域事件 在原著 《领域驱动设计:软件核心复杂性应对之道》 其实并没有直接提及到关于领域事件的介绍。...此处我摘录了《实现领域驱动设计》书中对领域事件的描述: 领域专家所关心的发生在领域中的一些事件。 将领域中所发生的活动建模成一系列的离散事件。...每个事件都用领域对象来表示,领域事件是领域模型的组成部分,表示领域中所发生的事情。 如何使用领域事件 当您一看到“事件”这个词语的时候,您可能会一下联系到 C# 中的事件,那个基于委托的事件。...而项目中的各个领域对象都将以产生、发布领域事件完成一系列的交互流程。 这里我摘录了《领域驱动设计模式、原理与实践》中的一段话分享给大家:“领域事件将会在领域专家一起进行的知识提炼环节中揭示出来。...“领域服务”也承担着领域对象与领域对象转换的功能。

67210
您找到你想要的搜索结果了吗?
是的
没有找到

金融领域的AI运用

AI在金融业的运用正稳步推进,尤其是在"风险评估"、"金融市场分析及调研"、"投资及证券投资组合管理"等领域的用例有所增加。...金融领域的AI用例 在金融业中,AI用例有所增加的领域有"风险评估(包括贷款审查)"、"金融市场分析及调研"、"投资及证券投资组合管理"等。...1.风险评估 提供风险评估领域AI的供应商有AdviceRobo公司、CreamFinance公司、OutsideIQ公司等。...2.金融市场分析及调研 在金融市场分析及调研领域的AI中,由多家大型金融机构出资的Kensho公司颇负盛名。...为了推进AI的运用,需要充分理解"自动化"、"个性化"和"实时化"等AI的适用性和可实现的水平。在此基础上,创造运用AI的创新型金融服务,就是今后金融机构的重要课题。 注:来自“未央网”

54410

我的领域驱动设计运用实例 - 领域领域

二、系列目录 我的领域驱动设计运用实例 - 领域领域 三、Step by Step 不清楚大家在接触领域驱动的相关知识时,是不是一上来就是领域驱动经典的四层架构,然后什么是实体、值对象、聚合,它们之间有什么异同以及与传统的开发模式又是什么...2、领域划分 领域驱动设计,在维基百科中对于领域的解释如下,因为词条的中文解释应该是机翻的,所以这里放出英文原文,下方的中文是我基于个人理解所提供的翻译,仅供参考。...因此,领域驱动设计中的领域就是这个业务边界范围内想要解决的业务问题域。...第三步:对识别出的子领域再次进行细化,从而识别出子领域中的最小单元,从而确定所需要研究的范围边界; 在识别出领域的各个子域之后,我们需要对子域进行进一步的细化,当不能再细化的时候,我们就可以在这个限界上下文中去建立该子领域领域模型...三、个人总结 领域驱动的核心是完成对于领域模型的定义,从而确定业务和应用边界,保证我们的业务模型与代码模型一致性; 领域驱动是一种架构设计的方法论,通过围绕实际业务构建领域模型的方式将复杂的业务领域逐步的拆分

64410

如何运用领域驱动设计 - 实体

概述 本文将介绍领域驱动设计(DDD)战术模式中另一个常见且非常重要的概念 - 实体。相对战术模式中其他的一些概念(例如 值对象、领域服务等)来说,实体应该比较容易让人理解和运用。...但是我们如何去发现所在领域中的实体呢?如何保证建立的实体是富含行为的?实体运用时又有那些注意的细节呢?...不像上一篇文章 如何运用DDD - 值对象 中的概念那么深奥。说白了,上面就是说明了一个问题,只要你所发现的事物/对象有一个唯一的标识,那么它可能就是实体了。...你确定它真的需要ID吗 还记得我们在上一篇文章 如何运用DDD - 值对象 中所提到过的一个问题吗? “当前上下文的值对象可能是另一个上下文的实体”。...总结 本文我们介绍了实体的概念以及怎么去运用实体到实际代码中,请牢记前人为我们提供的有关实体的经验:比如“实体一定是基于领域当前环境(上下文)的”、“实体是高度内聚和自治的”、“应该专注于实体的行为而非数据

72120

如何运用领域驱动设计 - 聚合

概述 在前几篇的博文中,我们已经学习到了如何运用实体和值对象。随着我们所在领域的不断深入,领域模型变得逐渐清晰,我们已经建立了足够丰富的实体和值对象。...就这样一层套一层,本来约束已经足够好的领域对象们彷佛已经开始对我们不太友好。...为了处理这一系列的问题,我们需要将一些实体和值对象划分在一个统一的边界内,原来存在多重关联关系的大模型被分解为较小的领域对象群。 而这种强有力的划分手法就是领域驱动设计战术模式中的“聚合”。...演化案例 还记得我们在上一篇博文 如何运用领域驱动设计 - 实体 中所展开的一个关于旅行记账的案例吗? 在学习实体的时候,我们已经构建了一个叫做Itinerary的实体,并且赋予了它应用的行为操作。...开始划分边界吧 我根据目前所涉及的领域对象,大致绘了一个领域之间的图,当然这个图并不是规范的,里面缺少了很多我们已经捕获出来的值对象等等,它只是为了帮助你大致回顾一下我们目前所Get到的领域模型结果:

60720

如何运用领域驱动设计 - 存储库

目录 概述 直接看东西 被广泛使用的仓储 仓储是反模式吗 什么是存储库 如何运用存储库 存储库是为聚合提供操作 存储库对外提供哪些方法 存储库是一个明确的约定 审计追踪 汇总 不要使用过多特性干扰您的领域对象...下一次的文章会对工作单元的实现进行解析和优化,可能它就不属于 《如何运用领域驱动设计》 系列的正传系列了(算个番外吧 ( ̄▽ ̄)")。...还记得在上一篇文章 如何运用领域驱动设计 - 聚合 中,我们不止一次的提到了仓储这个概念,因为它是为聚合而服务的,而随着领域的深入,使得领域模型越来越复杂的时候,存储库将慢慢变成模型的扩展,它将描述您每一个用例检索聚合的意图...如何运用存储库 存储库是为聚合提供操作 这一点是非常关键的,存储库是为聚合而服务的。有关于聚合的部分,可以查看上一篇文章 如何运用领域驱动设计 - 聚合。为什么呢它一定要为聚合服务?...比如在之前的一篇文章 如何运用领域驱动设计 - 领域服务 中就有一个地方出现了使用存储库的情况:我们需要根据当前的位置来查找附近的饭店: var nearbyRestaurants = restaurantRepository.GetNearbyRestaurant

93230

如何运用领域驱动设计 - 值对象

概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象。一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一。...但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象这一概念,以及在对值对象进行持久化时感到非常的迷惑。...用于描述领域的某个方面而本身没有概念表示的对象称为Value Object(值对象)。...当然读懂了的人就会有一种醍醐灌顶的感觉,而像我这种菜鸡,以后运用的时候感觉除了地址这个东西会给他抽象出来之外,其他的还是该咋乱写咋写。...所以,在实现领域驱动的时候,所有的元素都是基于上下文所考虑的,一切脱离了上下文的值对象是没有作用的。

77830

运用事件风暴进行领域分析建模

逸言 | 逸派胡言 本文是事件风暴方法的第二部分,从获得的业务全景开始进行领域分析建模,通过事件识别出决策命令,进而驱动出读模型和聚合。获得领域分析模型还将是领域驱动设计过程的重要输入。...在确定了全景事件流之后,可以在战略设计层面继续精进,鉴别出领域与限界上下文的边界。这里略过不提,且进入战术设计阶段的领域分析建模。...读模型是用户执行决策命令必需的输入信息,在代码层面,这些读模型就是执行决策命令的领域行为所需的输入参数。...事件风暴的建模过程 显然,围绕着“事件”为中心,事件风暴给出了一条有章可循的领域分析建模路径。领域分析建模的基础是探索业务全景的产出物,即业已识别出来的事件流,以及参与事件流的用户、策略与外部系统。...执行每一步都需要团队与领域专家进一步讨论和确认,保证识别出来的模型对象遵循该领域的统一语言。

2.7K10

如何运用领域驱动设计 - 工作单元

概述 在上一篇 《如何运用领域驱动设计 - 存储库》 的文章中,我们讲述了有关仓储的概念和使用规范。...其实上面的代码就是对仓储中工作单元的巧妙运用,它其实在后面默默的支持着程序的正常运转,这是在调用层面上我们完全感觉不到它的存在而已。下面就为您介绍它是怎么工作和实现的。...我特地去找了另外一本较为权威的领域驱动设计教材:《领域驱动设计模式、原理与实践》 。在该书中对工作单元的解释如下: 事务管理主要与应用程序服务层有关。...而领域层可以依赖于基础构架层,所以千万要注意,保持您的领域层足够干净,不要让其它的东西干扰它,也更不要将事务处理这类东西放到了您的领域层来。...总结 本来这篇文章不打算写在《如何运用领域驱动设计》这个系列的,但是后来纠结了一下,还是纳入了该系列。由于该篇文章是实现工作单元的,所以代码量就比较大,希望不会给您造成阅读上的困难。

64920

python绝技:运用python成为顶

python绝技:运用python成为顶级黑客 前言 有多少人是因为看了电视,看了那些牛逼的黑客选择成为程序员的。...因为Python的无所不能,我选择Python作为主要编程语言。...在这之前已经学过《廖雪峰的python教程》,也看过了《flaskweb实战》,之前还看过《head first in python》,选择《python绝技:运用python成为顶级黑客》这本书,是因为我想知道黑客到底干了啥...ftp破解后,上传文件的代码在python3上执行失败,抛异常了。python2.7没事。 建议用python2.7来运行他的代码。 里面的攻击手段其实已经过期了,仅能参考下。...运用的就是蓝牙模块。蓝牙模块不光能发现周围的蓝牙设备,也能发现某蓝牙设备提供了哪些服务。其中有个服务是OBEX,类似于FTP,可以上传/下载文件。

1.3K10
领券