2012-01-09 150 views
0

我們正在準備爲學校創建一個以Web爲中心的平臺,並且我們計劃在Azure中託管它。但是,公立學校有一定的限制,阻止他們公開訪問互聯網,這意味着基於Azure的系統將無法在那裏工作。將Azure應用程序部署到Windows服務器

是否可以將相同的項目部署到本地服務器以及Azure雲而不碎片化我們的代碼庫?

+0

很多很好的答案!最好的StackOverflow :) – 2012-01-10 01:23:22

回答

7

這取決於您在解決方案中使用的Azure的哪些方面。如果您有一個manilla ASP.NET應用程序,並且不使用Azure依賴性(如AppFabric或任何Azure SDK(如blob存儲)),則可以將其部署到IIS的標準實例。

如果您使用的是Azure依賴關係,那麼我會盡力在您的代碼庫中分離這些依賴關係,按照慣例來抽象任何依賴關係。然後,您可以基於配置更改切換到不使用它們,並且在部署到Windows時還原爲本地或存根備份。這在運行CI /構建時也是一樣的。

+0

這就是我想說的。如果Azure與您的應用程序高度集成,例如Table Storage是您的主要存儲機制,而不是SQL Azure,則可能會很困難。但如果你只是將它撒在幾個地方,不應該很難抽象出來。 – Craig 2012-01-09 05:55:26

3

這真的取決於你的應用程序在做什麼。 Azure部署項目(.ccproj項目)和相關的.cspkg軟件包不適用於Windows Server部署。

如果您的應用程序使用Windows Azure的特定功能(例如表存儲),那麼您將不得不以某種方式處理內部部署。如果您希望擁有一個同時在本地和Windows Azure上運行的代碼庫,則可以選擇一種方法使用依賴注入方法,該方法可以注入基於目標部署的功能的正確實現。

1

我有一個客戶端這個真實世界的場景。他們有客戶想要繼續使用他們自己的服務器上安裝的產品。與此同時,他們有更新的客戶希望將他們的應用程序作爲服務租用,並使用現收現付模式。

這是否意味着兩個代碼庫?否,但這意味着你必須願意在發展抽象和控制倒置方面多走幾公里。

一般而言,我會去這個問題,像這樣:

  • 設計爲Windows Azure,這意味着使用了在Windows Azure SDK的API。
  • 在真正的Windows Azure SDK和您的代碼之間添加一個抽象層。
  • 爲內部部署安裝提供Windows Azure依賴關係的備用實現。

也...

  • 使用代碼是已經有像Azure Contrib。這個OSS項目包含了這樣一個抽象層的開始以及其他有希望的Windows Azure代碼。

別忘了玩得開心! ;〜)

相關問題