在WPF应用程序中使用MVVM和DDD,而不需要太多的类
我有一个
WPF应用程序,我想在整个应用程序中为表示层和DDD应用MVVM.我非常困惑我应该如何应用这个架构.可以给我一些建议,因为觉得我完全搞砸了以下设计尝试:
我有4层: >演示层:这是我的WPF客户端应用程序所在的位置. 让我们使用这些基于DDD的层次来实现一个简单的场景:在数据库中拥有一个Person对象,映射它,CRUD数据库,检查人的生日并将其显示给用户. 演示层 我将从WPF部分开始.我创建以下类: > PersonView:XAML视图的人 域层 这对于表示层来说是足够好的.我现在想连接到数据库来检索一个人物来呈现它. 我必须创建: >域层中的PersonEntity:数据库实体的聚合,用于与数据库的映射.它位于Domain层. 应用层 好的,我已经有3个人的模型是相当相似的.一些更多的数据访问和服务呢? >应用程序层中的PersonService:当我的表示层想与该层通信时,需要将其PersonModel(MVVM模型)转换为Person(域模型).应用层中的此服务将Person(域模型)转换为PersonEntity(实体对象),并使用数据库进行CRUD.该服务还使用域层中的另一个PersonService(见下文)来检查/应用一些业务规则. 总而言之,我已经结束了7个课程,为一个简单的场景: > Presentation.WpfClient.View.PersonView 这感觉很尴尬我不知道我应该如何重新构造它,并有利于域驱动的设计和MVVM模式.我真的很困惑,我真的很期待任何建议或现实生活的例子,以应用MVVM和域驱动的设计.我也为任何关于命名约定或策略的反馈开放,以尽量减少这种简单操作的工作量. 我仍然有两个具体的问题: >我应该从表现层(MVVM模型)中删除模型,仅使用域层(DDD模型)中的模型?在这一点上是不是违反MVVM? 更新 我采取的决定: >使用MVVM模型的域模型(删除PersonModel) 最后它看起来像这样: > Presentation.WpfClient.View.PersonView
这是一个单一概念太多的课程.
是的,这是一个优选的解决方案,很多情况下,特别是如果你不使用像WCF这样的通信机制. MVVM没有违规,不会强加模型部分的特定实现.
也是的.将实体分为两个(域实体和“持久性”实体)通常会导致过度复杂和贫血域模型.这里有更多:Having the domain model separated from the persistence model. 总的来说,我建议你看看this的例子.这看起来就像您所需要的:使用MVVM和DDD编写的完整的应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |