ASP.NET MVC n层架构 - 最佳解决方案

时间:2013-08-05 14:02:30

标签: .net asp.net-mvc web-applications architecture saas

我们目前正在设计一个基于ASP.NET MVC4构建的ERP解决方案。该系统具有模块(Say HR,Sales& Production),它们需要彼此独立地工作。

我正在努力找出最具逻辑性和效率的架构和我的Visual Studio解决方案的结构使我的开发团队可以在项目上一起工作,并且可以在源代码管理(GIT)中轻松管理代码。团队应该能够处理系统的单独模块并独立调试/测试它们。

为了构建n层应用程序,我们正在调整Prodinner& Magazine Website基于MVC的示例项目。所以我们计划采用以下结构: -

  • 核心 - 模型,安全
  • 数据 - 存储库,工作单元,DbContext
  • Infra - 界面
  • 服务 - 业务逻辑,模型/视图模型映射
  • 网络 - MVC 4申请
  • 测试 - 单元/集成测试

有关改善这种结构的建议吗?我已经查看了很多示例n层应用程序/博客/教程,但找不到n层应用程序的确定结构。

同样在上述结构中,如何包含系统的单独模块?一些模块将共享某些数据实体。

这将是多个客户端使用的基于云的解决方案,创建客户端外联网和为其启用/禁用模块的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

我不确定这个问题是否会被打开很长时间,因为它太宽泛,但无论如何我都会降低2美分。

我建议你不要试图让所有项目都在同一个解决方案下并最终得到6个项目(来自你的样本),而是建立基于Web服务的应用程序(常规Web服务,WCF,web api,等等)。这样做有以下优点:

  • 分别开发和部署每个服务和前端应用程序
  • 根据不同的需求扩展每个服务和模块(销售可以使用比让人们说HR更多的资源)
  • 构建更小,更简洁的项目

如果您尝试将所有模块放在相同的代码库中,您将最终得到通用类(例如客户),这些类尝试适合所有客户方案并最终变得非常复杂。您还应该查看Bounded Contexts以了解有关此主题的更多信息。

答案 1 :(得分:0)

在评估了各种可能的技术和框架之后,我们决定使用OrchardCMS(使用asp.Net MVC构建的开源cms)作为我们应用程序的框架。虽然它是一个CMS,但它设计得很好,可以作为任何应用程序的核心。

您可以将其ContentItem用作所有实体的基础,从而获得大量开箱即用的功能 - ACL,动态导航,日志记录,缓存,索引(Lucene),本地化,调度,工作流,事件处理程序等

此外,如果您只想将其用作框架,那么您可以选择编写标准MVC模型,控制器和视图,并使用其nHibernate存储库来使用数据。您不必担心测试应用程序的核心层,因为它已经为您测试过。

在Orchard之上构建的优势在于您的应用程序变得非常模块化。您可以将整个应用程序的一部分构建为单独的果园模块。因此,即使果园升级,升级模块也会非常直接。与任何开源项目一样,修改果园的核心代码不是一个好主意。

版本(1.x分支)已移植到MVC5和WepAPI2,并使用nHibernate作为ORM。

有关果园的更多信息,请访问http://www.orchardproject.net

更新2018年12月:

想要指出的是,ASP.NET Boilerplate是一个非常棒的框架,可用于今天的任何此类项目!