【发布时间】:2016-10-12 20:23:02
【问题描述】:
我目前正在开发一个由 ASP.NET MVC Web 应用程序组成的项目,该应用程序的后端包装在 WCF 服务中。我在过去的项目中使用过 MVC 和 WCF,但我从未负责从头开始设计架构。我希望对我当前的设计有一些反馈,以确保我从高级架构的角度采用了良好的设计实践。
这是一个依赖关系图,可以让您了解事物的结构:
需要注意的几点:
- Common MyApp.Utilities 项目适用于需要跨层共享的任何功能。目前它只包含扩展方法。
- 服务合同和数据合同在两个层之间共享的共同项目中。
- EntityFramework 正在用于数据访问。
- 映射进入实体 DTO(数据合同) ViewModel
- 仍在处理此问题,使用 AutoMapper,但不完全确定在 DTO 从表示层传回时我应该如何“重新水化”它们。
- ServiceImplementation 只是一个包含在单独程序集中的业务逻辑的包装器。
- 表示层和服务层将部署到单独的物理服务器上
- 包都包含在解决方案根文件夹的单个文件夹中,并已签入版本控制
这有什么不好的做法吗?
【问题讨论】:
-
这个高层次的设计看起来不错 - 但魔鬼在细节中,而且它在很大程度上取决于特定的工作领域。对“通用” dll 非常小心 - 他们倾向于变成“我不知道在哪里或设计不支持 bin 的所有内容”。 IMO 最重要的是遵循 SOLID 并非常强调依赖注入 - 我认为从项目的长期(和短期)来看,这将是好代码与非好代码之间的区别
标签: c# wcf design-patterns model-view-controller asp.net-mvc-5