ASP.net MVC:多个域,单独的项目,单独的部署

时间:2016-02-17 16:34:21

标签: asp.net asp.net-mvc architecture mef

我可能正在搜索错误的关键字,但我很难找到适合以下情况的解决方案。我们有一个内部应用程序,在应用程序中有五个独立的业务区域。过去,这一切都已经在网站项目中进行了设置,我们已经对这个环境进行了部署变更。我们总是遇到一个改变整个网站的问题。

为了减轻这种影响,同时也为单元测试提供了更简单的方法并可能进入持续集成用例,我希望有一个结构,其中特定业务领域(域)的所有事务都保留在他们自己的独立项目中。该体系结构可能类似于:

  • 主要项目(房屋认证,基础母版页,样式)
    • 订购(房屋订购)
      • 模型/视图/控制器
    • 定价(房屋所有物品定价)
      • 模型/视图/控制器

我的问题是如何整合所有这些并让我自己能够在任何时候单独部署每个项目。因此,例如,我对Ordering域进行更新,编译它,然后上传项目而不影响其他域。

明显的其他问题围绕着路由。如何使路线正确?我假设RouteConfig中有设置命名空间的方法吗?这是什么解决方案?

这是MEF的作用吗?

1 个答案:

答案 0 :(得分:0)

查看Areas

  

MVC模式分离应用程序的模型(数据)逻辑   从其表示逻辑和业务逻辑。在ASP.NET MVC中,这个   逻辑分离也在物理上在项目中实现   结构,其中控制器和视图保存在使用的文件夹中   用于定义关系的命名约定。这种结构支持   大多数Web应用程序的需求。

     

但是,某些应用程序可能拥有大量控制器,并且   每个控制器可以与多个视图相关联。对于这些类型   应用程序,默认的ASP.NET MVC项目结构可以成为   笨重。

     

为了适应大型项目,ASP.NET MVC允许您对Web进行分区   应用程序分为较小的单元,称为区域。地区   提供一种将大型MVC Web应用程序分离为更小的方法   功能分组。一个区域实际上是一个MVC结构   一个应用程序。应用程序可以包含多个MVC结构   (区域)。

(来自MSDN,上面链接)

哪个会给你逻辑分离,但不是功能。

要部署订购而不可能取消定价,最简单的方法就是拥有单独的网络应用程序(如果是这样的话,可以在一个网站中托管)要求)每个。您可以将任何共享逻辑提取到类库项目,并在两个前端引用它。