Asp.net mvc 独立开发/部署MVC区域

Asp.net mvc 独立开发/部署MVC区域,asp.net-mvc,version-control,deployment,asp.net-mvc-3-areas,Asp.net Mvc,Version Control,Deployment,Asp.net Mvc 3 Areas,目前,我们有两个MVC web应用程序完全独立运行。其目的是将这两个站点连接在某种内部网中,具有共享授权等功能,并通过某种主页链接到每个站点 到目前为止,我们已经创建了第三个MVC应用程序,并将两个现有站点作为MVC区域添加到该应用程序中,效果很好。我们还设法在一个解决方案下将每个区域划分为各自的VisualStudio项目 这两个领域中的每一个都由完全不同的业务部门指定,并且(通常)由不同的开发人员开发,并且需要遵循独立的发布周期 当前的方法是让每个区域位于单独的存储库路径中,并让构建服务器为

目前,我们有两个MVC web应用程序完全独立运行。其目的是将这两个站点连接在某种内部网中,具有共享授权等功能,并通过某种主页链接到每个站点

到目前为止,我们已经创建了第三个MVC应用程序,并将两个现有站点作为MVC区域添加到该应用程序中,效果很好。我们还设法在一个解决方案下将每个区域划分为各自的VisualStudio项目

这两个领域中的每一个都由完全不同的业务部门指定,并且(通常)由不同的开发人员开发,并且需要遵循独立的发布周期

当前的方法是让每个区域位于单独的存储库路径中,并让构建服务器为每个区域签出适当的分支,构建主web应用程序(Intranet主页),该应用程序将反过来构建引用的区域项目。问题是我们每次都必须部署所有3个项目,即使只有一个区域需要发布

这不是一笔大交易(假设我们没有意外地在该区域部署一个未经测试的主intranet web应用程序的新版本),但这也意味着构建服务器将使用相同的版本号标记特定构建的所有程序集

第二种方法是,主intranet项目只引用区域项目的集合,而不引用项目本身,因此它可以独立构建,而无需再次构建每个区域,反之亦然。有两个问题,我看不到MS WebDeploy(buildserver用来发布代码)只发布某些程序集的方法。其次,独立程序集中的MVC区域似乎需要添加为项目引用,而不仅仅是程序集引用,因为视图不能正确地动态编译(缺少~/views/web.config?)

有没有更好的方法

编辑:我已经设法让主web应用程序以对区域的常规程序集引用而不是项目引用运行(不完全确定如何运行,它只是工作)。这意味着我现在可以根据需要独立于主应用程序构建区域


下一个问题是使用MSDeploy部署所有组件。区域程序集与主应用程序一起部署在/bin目录中,但不包括区域的视图/脚本/内容。我正在研究将视图编译到程序集本身的各种技术,但似乎还不能实现这一点

我觉得这是一个非常复杂的方法。我希望不久之后,共享安全代码的好处似乎不会成为您将经历的痛苦的理由,让两个本质上不同的应用程序的代码基础像这样交织在一起

更好的方法可能是分离应用程序,并为两者开发一个单一的登录组件。如果您希望用户对两个应用程序都只有一个帐户,那么它可以管理自己的数据库;如果需要每个应用程序管理自己的用户帐户,那么它可以使用每个应用程序的数据库(假设它们有单独的数据库)。有大量的成员组件可以为这种类型的特征提供基础(ASP.NET MembershipProvider和简单的成员资格,但有两个名称)。
如果希望两个应用程序在生产环境中的同一个域下运行,只需将它们部署到单独的虚拟目录即可。您将得到一个类似于使用区域的url方案。

除了身份验证之外,您还有其他原因尝试合并它们吗?与尝试合并应用程序相比,共享身份验证方法(OAuth、Active Directory或Windows identity framework)似乎更适合解决此问题。它们被转换到主web应用程序下的区域(而不是3个单独的web应用程序)的主要原因是减少重复内容,即登录/帐户控制器、共享布局、,脚本、css等。所有这些都必须看起来像一个网站。你试过便携区吗?