【问题标题】:ASP.NET MVC n-tier Architecture - Best SolutionASP.NET MVC n 层架构 - 最佳解决方案
【发布时间】:2013-08-06 06:39:58
【问题描述】:

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

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

为了构建 n 层应用程序,我们正在改编来自基于 MVC 的 ProdinnerMagazine Website 示例项目的部分内容。所以我们计划有以下结构:-

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我建议您基于 Web 服务(常规 Web 服务、WCF、Web api、等等)。这样做您有以下优势:

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

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

    【讨论】:

    • 另外,ASP.NET mvc 的控制器已经是一个 Web 服务。除了扩展为非 IIS 托管的 WCF 之外,开发另一个 Web 服务是一种冗余。
    • @Fendy 您可能会使用 ASP.NET MVC 作为 API,但由于更好的想法是将实际前端项目与服务分开,因此使用 Asp.NET 可能会更好网络接口
    • 啊,对,我的印象是设计一个带有客户端编程和 Web 服务的安全单页。我忘记了 ASP.NET MVC 控制器也在返回视图和操作。
    【解决方案2】:

    在评估了各种可能的技术和框架后,我们决定使用 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 是一个出色的框架,可用于当今任何此类项目!

    【讨论】:

    • 这是一篇很老的帖子。想指出 ASP.NET Boilerplate 是一个非常棒的框架,可用于当今任何此类项目!
    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多