域驱动设计 – DDD扩展:模块与DDD与MEF的有界背景
埃里克在他的书中涉及到模块的主题很少.他也没有谈论模块的结构与有界语境的关系与例子.有边界上下文包含包含边界上下文的模块还是模块?当一个应用程序有DDD,它可以容易地扩展吗?
当我们设计可扩展应用程序时,应用程序的结构非常重要. Microsoft MEF框架可以从dll自动发现模块/组件. 让我们举个例子.在电子商务应用中,我们可以为付款处理提供有限的上下文.付款处理可以是抽象的,所以我可以稍后使用更多付款处理器(如PayPal或Payflow)来扩展应用程序.目前我只有PayPal,几个月后我想集成Payflow.要集成Payflow,我可以有一个程序集(一个dll)来实现付款处理的接口.我可以把这个dll放在应用程序中,MEF会自动发现它. 这里面临的挑战是,为PayFlow支付处理创建的dll是一个模块,而不是一个有界的上下文(BC).如果我创建它作为BC,我们有两个BC支付处理. (BC为BCB创建,BC为Payflow).如果我们使用有限的上下文中的模块和有限的上下文作为程序集(dll)来构造应用程序,那么这些模块可以作为文件夹而不是程序集驻留在BC中(您可以将其视为在Visual Studio中创建的C#库). 我们如何处理DDD的这个可扩展性问题?是付款处理,BC和不同的文件夹在它下面作为模块,一个用于Paypal等…或者我们需要在另一个BC之前的sub-BC?
是的,我同意模块和BC结构在书中没有得到足够的覆盖.我建议Implementing Domain-Driven Design by Vaughn Vernon了解更多.
BC包含模块.一个模块就像一个轻量级的BC,也属于普遍存在的语言.
这取决于你如何构建它.没有关于DDD本身会阻止可扩展性.
我会将每个支付处理器集成建模为单个付款处理BC中的模块.此外,您的付款处理模式和PayPal等第三方之间的每个整合都是ACL.
不,但这触及了一个有意思的BC省.我不认为sub-BC是一个好主意,因为我认为分级组织可能是危险的导致刚性设计(例如,看看具有明确类型层次结构的OOP – 可能是有问题的).相反,选择可能更多BC的更平坦的模型.此外,在您的情况下,可以使用模块实现所需的结构化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- swift -Storyboard- 自适应布局
- iftop 安装以及相关参数及说明
- Flex 上传摄像头拍照、UI保存为图片
- Nosql Mongodb之旅(28)—MongoDB管理维护Sharding
- PowerBuilder编程新思维5:包装(界面美化与WebUI+React)
- 使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuer
- 使用AJAX将JavaScript数组发布到asp.net MVC控制器
- cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(
- Oracle-11g-R2 RAC 环境下 GPnP Profile 文件
- c – 为什么模板专业化不能改变返回类型?