【发布时间】:2025-12-28 05:35:06
【问题描述】:
我正在开发一个我刚刚完成的应用程序:
- 域层 - 以域驱动设计方式制作,所以我在这里有一些逻辑
- 数据访问层 - 使用 nhibernate 和 UnitOfWork - 存储库模式
- UI 层 - 带有 Caliburn.Micro 的 MVVM
现在的问题是:我的逻辑放在哪里?
根据
https://softwareengineering.stackexchange.com/questions/185448/mvvm-clarification
我必须将应用程序逻辑与域逻辑分开,但我做了一个简单的例子:
我有一个 ViewModel,它只向数据库中的一个人收费并允许更改,那么我将有 3 种方法(仅保留示例):
LoadPerson ( id )
SavePerson (Person )
CanEditPerson ( id )
前2个必须调用我UoW的对应方法但必须直接调用?
在之前用asp.net做的应用中,我创建了一个businessLayer,每个页面都有一个facade,所以页面调用facade的LoadPerson,然后BL调用数据访问层的LoadPerson。
我可以在这里使用正确的方法吗?
但在这种情况下,页面非常复杂,并且可以处理各种对象:我有 6 个页面(充满了标签和手风琴),用于基于大约 100 个项目的应用程序。
这里我知道视图必须非常简单并且可能在单个对象上工作,然后我应该在 BL 中为每个 ViewModel 有一个外观?
CanEditPerson 必须是一种方法,验证建立的规则以确定当前用户是否可以更改人员。似乎很合乎逻辑的域(买家必须建立pemessi)拥有版权但我不知道如何处理DomainLayer中的这个东西,我会更自然地在BusinessLayer中拥有该方法
【问题讨论】:
-
对于您的 DataAcessLayer,我向您推荐这个存储库框架:genericunitofworkandrepositories.codeplex.com 我认为上面的示例将帮助您找到答案。
-
我会看的,但我已经以我非常喜欢的方式完成了一个存储库。我的问题是关于外观模式 e 域逻辑
标签: c# wpf mvvm architecture business-logic