2015-02-11 26 views
0

我有一個產品和一個人們可以購買產品的前端網站。購買後,我有一個系統在我的DNS服務器上創建一個指向IP地址的A記錄。然後它創建一個具有所需綁定的新IIS網站。處理多個應用程序的部署ASP.NET

所有這一切都很好,但我現在正在考慮發展業務,爲此我需要處理應用程序的升級。

目前,我有我的應用程序運行40個網站。這是所有相同的代碼庫,每個網站使用它自己的SQL Server數據庫。每個網站都運行在一個單獨的應用程序池中,並完全獨立運行。

我已經着眼於使用TeamCity來構建應用程序,然後有一個手動步驟爲每個網站運行MSDeploy,但這不是特別理想,因爲我需要a)購買完整許可證和b)總是記得在TeamCity構建中添加一個新網站。

如何處理運行許多不同網站和單獨SQL Server數據庫的相同代碼庫的升級和部署?

回答

1

首先,可以在TeamCity中構建和部署到特定位置的構建配置,無論是本地路徑還是網絡驅動器。我不記得具體如何,但是我在珀斯工作的一家公司擁有完全相同的環境。這假設所有網站都指向文件系統中的相同物理路徑。

現在,建議的一句話,我不知道你是如何設置的,但如果這個A記錄只是創建一個子域名,我會將我的方法轉移到一個真正的多租戶環境。也就是說,一個網站,所有客戶端的一個應用程序池以及與特定子域關聯的多個綁定。這種方法更具可擴展性,並且使用更少的內存資源......過去我做過一些基準分析,每個進程(apppool)消耗的內存量都是大量的資源浪費。有一個問題,雖然,你需要準備你的應用程序的多租戶架構,以避免任何形式的出血,如

  1. 避免任何每個客戶端的單獨組件
  2. 避免靜態變量的
  3. 緩存不能是全球性的,而且必須在客戶端上下文相關
  4. 要特別注意如何您的客戶端文件保存到文件系統

在其他的東西。如果您需要更多關於在當前環境中設置TeamCity的詳細信息,請告訴我。我可能會找到一些有用的信息

+0

我很想轉移到一個真正的多租戶環境,但每個網站都使用它自己的緩存策略(取決於客戶端),使用唯一的SQL Server數據庫和整個堆的安裝設置。把所有東西都合併爲一個真正的多租戶環境,不幸的是需要重新寫入。也許我可以使用團隊城市部署到一個位置,然後有一個自定義應用程序來部署到每個站點......我認爲無論我做什麼都會是一大堆樂趣! – Paul 2015-02-12 00:55:00

+0

@保羅我確實感到你的痛苦伴侶。我討厭這樣說,但這聽起來像是從一開始就做出錯誤決定的結果。我仍然強烈建議你看看多租戶,它不一定涉及完整的重寫,只處理客戶端數據處理與客戶端上下文無關的數據。有一個每客戶端緩存策略,它不是一個顯示限制器,你可以在運行時使用IoC/DI模式簡單地加載一個基於當前上下文的特定緩存組件。有幾個第三paty工具在那裏爲此目的,如溫莎城堡IoC – Leo 2015-02-12 01:41:49

+0

感謝您輸入獅子座,欣賞它。 – Paul 2015-02-18 00:20:57