我们目前正在设计一个基于ASP.NET MVC4构建的ERP解决方案。该系统具有模块(Say HR,Sales& Production),它们需要彼此独立地工作。
我正在努力找出最具逻辑性和效率的架构和我的Visual Studio解决方案的结构使我的开发团队可以在项目上一起工作,并且可以在源代码管理(GIT)中轻松管理代码。团队应该能够处理系统的单独模块并独立调试/测试它们。
为了构建n层应用程序,我们正在调整Prodinner& Magazine Website基于MVC的示例项目。所以我们计划采用以下结构: -
有关改善这种结构的建议吗?我已经查看了很多示例n层应用程序/博客/教程,但找不到n层应用程序的确定结构。
同样在上述结构中,如何包含系统的单独模块?一些模块将共享某些数据实体。
这将是多个客户端使用的基于云的解决方案,创建客户端外联网和为其启用/禁用模块的最佳方式是什么?
答案 0 :(得分:1)
我不确定这个问题是否会被打开很长时间,因为它太宽泛,但无论如何我都会降低2美分。
我建议你不要试图让所有项目都在同一个解决方案下并最终得到6个项目(来自你的样本),而是建立基于Web服务的应用程序(常规Web服务,WCF,web api,等等)。这样做有以下优点:
如果您尝试将所有模块放在相同的代码库中,您将最终得到通用类(例如客户),这些类尝试适合所有客户方案并最终变得非常复杂。您还应该查看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是一个非常棒的框架,可用于今天的任何此类项目!