2011-01-25 49 views
2

我正在開發使用隊列,blob存儲和SQL Azure的Azure應用程序。我們預計一些客戶不願意將其數據託管在雲中(出於偏執狂或對數據可以存儲的管轄區的法律限制的原因),並且希望在位於其自己的數據中的服務器上運行該系統中心,在一臺服務器上。使用SQL Server並構建blob存儲的替代應該很容易,但Azure隊列更加複雜。我想使用開發結構是不可取的,因爲MS文檔說它必須以管理員身份運行。如何在沒有Azure的情況下將Azure應用程序部署到生產中

我應該怎麼辦?

回答

8

我會在AzureQueues上添加一個抽象層。

喜歡的東西:

public interface IQueueService 
{ 
    // will create if not exists 
    IQueue GetQueue(string name); 
    IQueue GetQueueIfExists(string name); 
} 


public interface IQueue 
{ 
    string Name { get; set; } 

    void AddMessage(SimpleMessage message); 
    void DeleteMessage(SimpleMessage message); 
    SimpleMessage PeekMessage(); 

    void Clear(); 
} 

等等

這應該給你一個想法。然後,您可以提供兩個實現,一個使用AzureQueues,另一個使用MS隊列(http://en.wikipedia.org/wiki/Microsoft_Message_Queuing)

您可以選擇實施,具體取決於您是在Azure上運行還是在Azure上運行不。

我在過去做過非常相似的事情。

+2

聖地亞哥有正確的方法。如果您需要能夠在不同環境之間移植相同的代碼庫,則需要抽象出必要的依賴關係。這使您可以輕鬆地用那些提供相同行爲的新層替換這些層,即使這種行爲的基本機制如何提供也是有意義的。通過存儲過程的正確應用,您應該能夠模仿SQL Server中的Azure存儲隊列行爲。 – BrentDaCodeMonkey 2011-01-25 14:25:29

+0

我可能會這樣做,但我認爲我會在更高級別抽象行爲以避免複製太多的Azure隊列複雜性。 – 2011-01-30 23:48:27

1

您不需要在開發人員結構上運行以訪問天青資源。 Blob很容易通過網絡訪問,我相當肯定你可以使用表和隊列以及「http://'accountname'.queue.core.windows.net/」URL來公開發布。

對於一個簡潔的解決方案,您應該看看Azure AppFabric服務總線,它基本上允許您將內部應用程序Web服務端點連接或「投射」到雲中,它基本上是一箇中繼服務。 (聽起來很神奇,但其實很簡單)。您可以使用相同的服務總線爲Azure工作者角色服務提供公共Url端點。

http://msdn.microsoft.com/en-us/library/ee732537.aspx

http://www.microsoft.com/windowsazure/appfabric/overview/default.aspx

相關問題