0

我们目前正在设计一个基于 ASP.NET MVC4 的 ERP 解决方案。该系统具有需要相互独立工作的模块(比如人力资源、销售和生产)。

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

为了构建 n 层应用程序,我们根据 MVC改编了Prodinner & Magazine 网站示例项目中的部分内容。所以我们计划有以下结构:-

  • 核心——模型、安全
  • 数据——存储库、工作单元、DbContext
  • 基础设施——接口
  • 服务——业务逻辑、模型/视图模型映射
  • Web – MVC 4 应用程序
  • 测试——单元/集成测试

有什么改进这个结构的建议吗?我查看了很多示例 n 层应用程序/博客/教程,但找不到 n 层应用程序的明确结构。

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

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

4

2 回答 2

1

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

我建议您基于 Web 服务(常规 Web 服务、WCF、Web api 等)构建应用程序,而不是尝试将所有项目置于同一个解决方案下并最终为每个模块创建 6 个项目(来自您的示例)。这样做您有以下优势:

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

如果您尝试将所有模块放在同一个代码库下,您最终会得到试图适应所有客户场景并最终变得非常复杂的泛型类(例如客户)。您还应该查看 Bounded Contexts 以了解有关此主题的更多信息。

于 2013-08-05T14:21:11.163 回答
0

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

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

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

在 Orchard 之上构建的优点是您的应用程序变得非常模块化。您可以将整个应用程序的一部分构建为单独的果园模块。所以即使果园升级,升级你的模块也很简单。像任何开源项目一样修改 orchard 的核心代码并不是一个好主意。

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

有关果园的更多信息并开始访问http://www.orchardproject.net

2018 年 12 月更新:

想指出 ASP.NET Boilerplate 是当今用于任何此类项目的绝佳框架!

于 2014-01-22T08:00:52.000 回答