我正在阅读关于DDD中有界上下文的想法,我开始意识到我并没有清楚地理解模型在实践中的确切含义.(我甚至可能都不确切知道域的含义.)
让我们看看流行的电子商务示例:客户浏览产品,添加到购物车,下订单.订单履行人员发出订单.
是否存在一个具有多个有界上下文的大型电子商务域(产品目录上下文,购物车上下文,订单上下文,实现上下文)?每个有界上下文是否包含一组模型(因此产品目录上下文包含产品模型,产品图像,产品评论)?
我有多远?
当我正在使用ORM完成我的第一个大型项目时,我开始意识到ORM将成为创建富有表现力且传达意图的域对象的一大障碍.
也就是说,我知道我们不希望域对象只是公开访问的getter和setter的包.此外,我开始意识到只是在整个地方使用IList <T>并没有传达意图,并且可能会引起使用这些对象的开发人员的滥用.例如,可能最好暴露ReadOnlyCollection <T>.(顺便说一下,我正在使用.NET和Entity Framework.)而不是IList <MyDomainObject>,我发现自己想要公开从MyDomainObject 派生的对象列表.(这些东西在EF中都不容易.也许我需要使用NHibernate或ADO.Net.)
我的问题是:我是否试图以这种方式制作域对象?这些问题是否应该成为其他应用程序组件的一部分?或者我应该有一个"真正的"域对象(具有表达性的东西)和一个由ORM水合的"哑"POCO对象?
(编辑:系统吃了一堆我的尖括号.)