我正在寻找有关基于ASP.NET MVC的CMS应用程序架构的一些反馈。
域模型 - 除了System类之外什么都不依赖于定义类型。目前,主要是贫血。
存储库层 - 抽象数据访问,仅由服务层调用
服务层 - 在域模型上执行业务逻辑。将视图模型暴露给控制器。
ViewModelMapper - 在视图模型和域模型之间来回转换的服务
控制器 - 超薄“交通警察”风格功能,与服务层交互,仅根据视图模型进行说明,从不进行域模型
我的域模型主要用作数据传输(DTO)对象,目前逻辑很少。我发现这很好,因为它不依赖于任何东西(甚至不是服务层中的类)。
服务层有点棘手......我只希望控制器能够访问视图模型以便于GUI编程。但是,有些服务需要相互通信。例如,我有一个事件服务,在标记内容,创建博客帖子等时通知其他侦听器服务。目前,将域模型作为输入或返回它们的方法标记为内部,因此它们不能被控制器。
听起来有点矫枉过正?抽象不够?我主要将此作为严格建筑的学习练习,而不是实际产品,所以请不要反馈“正确取决于你想做什么”。
谢谢!
答案 0 :(得分:2)
总的来说,这个设计对我来说很好看。
我可能会做更多的事情:
验证 - 进行2步验证 -
第1步:域级类强制执行自己的有效性(通过属性或任何其他机制)
步骤2:存储库确保对象在存储库的上下文中有效
依赖注入 - 使用DI框架注入依赖项。它对单元测试很有用。此外,如果您需要跨服务调用的服务层,请检查有关聚合服务的这篇文章是否有用:http://blog.ploeh.dk/2010/02/02/RefactoringToAggregateServices.aspx
HTH。