首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Webservice更新DDD模型

从Webservice更新DDD模型
EN

Stack Overflow用户
提问于 2012-10-21 08:08:48
回答 1查看 337关注 0票数 1

我正在写一家在线商店,当我在这个领域建模的时候,我想到了一个问题,那就是如何建模来自不同系统、不同粒度的对象。

例如,假设我们有一个具有某些属性的Product:

  • 积数
  • 名字
  • 描述
  • 价格
  • 等。

我们接收来自两个系统的新产品和产品更新:一个库存管理系统(通过webservice)和一个集成在电子商务产品中的管理web。

从库存管理,我总是得到一个产品的所有属性的全面更新(即使不是所有的改变)。管理ui更新单个属性(crud)。

那么,我应该如何在产品实体上建模(并命名)与业务案例相关的变更方法呢?

有点像updateFromIms(价格,描述,名字,.)还是应该为每个属性编写一个setter (这会破坏“不可修改的”实体)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-21 09:08:15

当有疑问时,我通常会查看示例航运DDD应用程序是如何做到这一点的。在C#中的示例应用可以找到:http://code.google.com/p/ndddsample/

因此,在您的示例中,这类似于如何对待SpecifyNewRoute Cargo实体,它有一个创建实体的构造函数,然后它有一些公共方法,比如BookingService to ChangeDestination或BookNewCargo使用的公共方法。BookingService由BookingFacade使用,负责:

这个外观屏蔽了域层--模型、服务、存储库--不受用户界面和远程处理等问题的影响。

因此,在您的示例中,您的UI和WebService可以调用一个名为UpdateProduct的facade方法(我不认为从服务或UI进行更新之间有概念上的区别,因此您不需要像ChangeDestination这样的单独方法,但这是您的调用)。facade方法将调用您的ProductService::UpdateProduct方法,后者将调用ProductModel::UpdateProduct

现在我不知道您的应用程序的范围,所以这可能太多了,但DDD并不适合小型应用程序。就我个人而言,我以Evans的书和NDD示例作为指导,但我认为摆脱一些复杂性(例如忽略外观)没有问题,没有人比您更了解您的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12996076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档