【发布时间】:2016-08-24 04:22:18
【问题描述】:
我正在尝试使用 DDD 启动并运行,在我的案例 ASP.Net 中,技术堆栈似乎存在一些限制,这让您思考事情将如何协同工作。例如,假设我创建了一个丰富的 ShoppingCart 类,而我的 ShoppingCart 有两个方法 AddItem(String Sku) 和 RemoveItem (字符串 Sku)。现在我可能在这两种方法中有很多逻辑,并有很多业务规则验证。
当我想使用 ASP.Net MVC 将我的 ShoppingCart 绑定到 UI 时会发生什么?理想情况下,当用户在 UI 上添加或删除项目时,我想调用 AddItem 和 RemoveItem 方法,以便我可以验证所有规则,但通常我们绑定UI 到视图模型(POCO 类)。因此,当用户从 UI 中保存购物车时,我将获得一个 POCO 类的列表,我现在需要将其映射到我的实际业务对象。我应该遍历每个项目并从现有数据中跟踪它并现在调用 AddItem 和 RemoveItem 方法吗?
在这种情况下,我需要在内存中为该用户保留我的域对象的一个实例,以便我可以对其执行操作。即使这样,我也会在控制器中有大量逻辑来决定在业务对象上调用哪些方法。
我对这些行的思考越多,它就越令人困惑,因为问题不会发生在比如说 Winforms 上,您可以轻松地从各种事件中调用 Domain 对象上的相应方法。
为了让 DDD 能够正常工作,我在整个过程中遗漏了什么?
【问题讨论】:
-
即使在 Winforms 中,您的域实体也不会永远存在于内存中。它们会在需要时从数据库中加载,希望在某个时候它们会被持久化并被垃圾收集。
标签: c# asp.net asp.net-mvc domain-driven-design