5

我们目前拥有2个完全独立运行的MVC Web应用程序。目的是通过共享授权等将这两个站点绑定在某种内联网上,并将某些主页链接到每个站点。独立开发/部署MVC区域

到目前为止,我们已经创建了第三个MVC应用程序,并将现有的两个站点都作为MVC区域添加到了此处,这很好地工作。我们还设法在单个解决方案下将每个区域分隔到自己的Visual Studio项目中。

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

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

这是不是一个巨大的交易(假设我们不小心与区一起部署的主要内部网的网络应用程序的一个新的,未经测试的版本),但它也意味着,在构建服务器将邮票的所有组件具有相同版本号的特定版本。

第二种方法是让主Intranet项目仅引用区域项目的程序集而不是项目本身,因此可以自行构建而不必再次构建每个区域或反之亦然。 2个问题,我看不到用MS WebDeploy(由buildserver发布我们的代码)发布某些程序集的方法。其次,独立程序集中的MVC区域似乎需要添加为项目引用,而不仅仅是程序集引用,因为视图不能正确动态编译(缺少〜/ Views/web.config?)

有没有更好的方法来实现?

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

下一个问题是使用MSDeploy部署整个批次。区域程序集与主应用程序部署在/ bin目录中,但该区域的视图/脚本/内容不包含在内。我正在寻找各种技术来将视图编译到程序集本身,但似乎无法完成此工作。

+0

除了身份验证之外,您是否还有其他原因想要合并它们?这听起来像一个共享的身份验证方法(OAuth,Active Directory或Windows身份框架)比尝试合​​并您的应用程序更适合该问题。 – Betty 2012-03-28 09:26:32

+2

他们被转换为主要Web应用程序(而不是3个独立的Web应用程序)的区域的主要原因是减少重复的内容,即登录/帐户控制器,共享布局,脚本,CSS等。它们都必须看起来像一个站点。 – SeeNoWeevil 2012-03-29 08:00:44

+0

您是否尝试过便携式区域? http://elegantcode.com/2012/04/06/mvc-portable-areas – Betty 2012-04-07 02:36:02

回答

0

让我觉得这是一个非常复杂的方法。我希望不久之后,拥有共享安全代码的好处看起来没有什么理由可以解决您将会遇到的两个本质上不同的应用程序的代码库交织在一起的痛苦。

更好的方法可能是分离应用程序并为两者开发单一登录组件。这可以管理自己的数据库,如果你希望用户只有一个帐户用于这两个应用程序,或者它可以使用每个应用程序的数据库(假设它们有单独的数据库),如果每个数据库都需要管理它自己的用户帐户。有很多Membership组件可用于为此类功能(ASP.NET MembershipProvider和Simple Membership,仅列出两个)提供基础。

如果您希望这两个应用程序在生产环境中的同一个域下运行,只需将它们部署到单独的虚拟目录。您将最终得到一个类似于使用区域的网址。