2011-04-15 54 views
2

我打算構建一個可以由客戶以傳統方式或雲(SaaS)託管的應用程序。針對雲和自我託管的應用程序?

由於兩個目標之間存在很多差異,我必須遵循哪些準則來減少未來的問題?

我特別想到持久化存儲...一方面,我有傳統的RDBMS(SQL Server,Oracle等),或者可能是像MongoDB,couchDb等nosql系統,另一方面,我必須使用「專有」和特定的存儲(MS世界中的Azure Table,Sql Azure)。

我覺得這將是可能的,但有很多國際奧委會,但由於我是新來的雲,我會很感激任何反饋。

當然,我希望(樂觀?)要能夠方​​法之間很方便地切換...

THX

回答

2

您正在思考正確的路線。當你設計圍繞一個特定的平臺解決方案,你應該瞄準的方式,在平臺中特定的功能,消費者從implementation.This屏蔽封裝的依賴關係是你不喜歡

  • 東西創建abtraction到平臺 接口。
  • 使用IOC容器或任何其他方法來解耦組件。
  • 明確地從其他邏輯分離平臺相關代碼 。例如,如果使用Azure存儲庫,則將存儲處理代碼完全保存在單獨的項目中。


說起來容易做起來難,但同樣適用於Azure。如果團隊在設計和開發過程中意識到這些事實,則可以有一個可以遷移到任何虛擬化平臺的解決方案。

2

SQL Azure是SQL Server的一個大的子集。從編程的角度來看,它們基本上是等價的(例如SP,表格,索引,觸發器等)。有幾件事情今天已經啓用或者不同(例如沒有CLR,沒有Sql Broker,大小限制)。您可以編寫一個應用程序,以最大限度地減少或消除對那些不支持的功能的依賴,並且您的應用程序將更「便攜」。

Windows Azure表(和其他存儲組件)是Windows Azure特定的。您需要封裝使用它們的組件,併爲依賴於它們的其他應用程序提供兼容接口。一個典型的例子是數據訪問組件。或異步通信的隊列訪問。

IoC/DI可以幫助,但他們不是強制性的。

+0

您實際上並未回答整個問題......您只提到RDBMS周邊。實際上,我也想知道如何構建應用程序,而不僅僅是如何選擇數據庫引擎 – 2011-04-15 14:36:13

+0

好吧,你說「我特別想着持久存儲」,所以我專注於此。 Windows Azure計算幾乎是Windows Server 2008.所以兼容性非常高。如果您正在構建ASP.NET MVC應用程序,那麼代碼實際上是相同的(數據訪問除外)。 – 2011-04-16 00:39:05

+0

我不能標出兩個答案,但我提出了你的答案...即使這只是我審訊的一部分,它仍然是一個有價值的答案。 – 2011-04-19 07:19:27