【发布时间】:2012-03-23 21:49:36
【问题描述】:
因此,我们决定在我们的业务中重建一个应用程序,因为它一直存在于 Sharepoint 中,除了利用其文档索引功能之外没有明显的原因。
我们决定使用 C# 在 ASP.NET MVC3 中创建我们的新应用程序。我们正在尝试确定整体架构。
我的想法是这样的:
- 核心 - 域对象 (poco's)
- 数据 - 实体框架(代码优先)或 nHibernate 公开为存储库
- Service - 该层将封装任何业务逻辑并充当外观。这可以分解为更多模块。
- UI (MVC) - 控制器和视图。
这一切都将使用 DI 容器(例如 Autofac)捆绑在一起。
我们还希望能够编写单元测试,因此我们需要能够模拟我们的服务层和数据存储库以测试我们的控制器等。
那么 - 对于一个非常标准的业务应用程序来说,以上听起来像是一个很好的整体架构模式吗?
这个想法是数据、服务、ui 可以引用 Core,但 UI 只会真正与服务级别组件对话,而不知道数据等的实现细节。
我的下一个问题是,在某些时候我们会想要在我们的应用程序之外公开一些功能,即 WCF 服务/ASP.NET Web API。
在您看来,最好的选择是什么。在 WCF 中构建服务层并从 MVC 中的控制器调用它?如果是这样,这将是可测试的,还是我们需要围绕 Web 服务编写一个包装器?这会很耗时吗?
或
继续在 C# 类中编写服务层(即 Service1.CreateObject(object obj);)并创建一个 Web 服务作为单独的实体,仅公开我们需要调用服务层的功能?
任何想法都会非常有帮助,因为我不知道最好的路线是什么。
【问题讨论】:
标签: asp.net-mvc-3 design-patterns architecture wcf-data-services n-tier-architecture