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,僅列出兩個)提供基礎。

如果您希望這兩個應用程序在生產環境中的同一個域下運行,只需將它們部署到單獨的虛擬目錄。您將最終得到一個類似於使用區域的網址。