2013-02-17 24 views
3

對於如何獲得Azure角色(無論是Web角色還是工作者角色)與其他Azure角色進行通信,我感到非常困惑?如何與Azure進行角色間通信?

我看了一下服務總線中繼,速度很荒謬 - 調試時花費大約6個小時才能從一個角色獲取數據到另一個角色。當我通過在雲中運行的Web服務公開完全相同的數據時,我可以在一分鐘內將該數據下載到我的手機中。荒謬。我假設數據正從我的機器發送到雲端,然後從那裏返回到我的機器。

服務總線繼電器有一個稱爲混合模式,它應該打開一個直接的套接字連接以便進行快速通信,但實際上沒有關於如何完成此操作的文檔。

我已經通過WCF NetTcpBinding公開了一個角色的服務,但我不知道如何讓其他角色能夠調用它。

我也看過服務總線隊列/訂閱,但是您可以發送的消息有256KB的限制!

我無法相信缺乏文檔和教程在那裏什麼應該是一個常見的場景 - (!那是在居住的確切同一臺物理計算機上的所有可能性)兩個角色之間的快速通信

任何幫助非常感謝,謝謝!

回答

0

我沒有找到任何令人滿意的答案在這裏,所以作爲後續行動,我採取的方法是將數據寫入到SQL Azure的,通過服務總線通知,有一個更新,並讓所有訂閱者從sql本身獲取更新的數據。它適用於這種特定場景。

試圖通過服務總線發送數據本身的速度非常慢。將它用作角色間事件系統(使用服務總線主題/訂閱)效果很好。

+0

您確實從@Shaun得到了答案,您甚至從來沒有對任何類型的跟進或澄清進行評論。您的原始問題從未指定您的角色在同一雲服務中的位置。 – 2013-05-09 00:52:51

+1

我覺得很清楚,沒有一個答案是足夠的。只有一個鏈接發佈在此頁面上,基本上說通過(公開訪問的)WCF服務向公衆公開您的服務。這不是一個充分或最佳的方法。 – Arash 2013-05-09 01:22:36

+0

由於聽起來你想從一臺虛擬機發送大包數據到另一臺虛擬機,Azure存儲可能會讓你的速度比SQL Azure更快。在主線程中查看我的完整答案。 – Brent 2014-08-07 14:28:10

3

如果您的角色屬於同一個雲服務,則可以通過內部端點訪問它們。您可以獲取角色和端口的內部IP地址,並建立WCF呼叫。

這裏是一個話題可能有助於http://msdn.microsoft.com/en-us/library/windowsazure/hh180158.aspx

+0

正確。並且提供了豐富的文檔和教程,以提供一個常見的場景 - 兩個角色之間的快速溝通。我應該補充說,隊列可以提供更高的可伸縮性和彈性。除了服務總線隊列外,還有存儲服務隊列。 – 2013-02-17 11:58:21

+0

那麼......如果他們不在同一個雲服務中,那麼你必須使用公共端點? – 2013-02-28 23:21:29

+0

是的,這是正確的。 – 2013-03-01 02:55:48

0

您是否考慮使用Azure存儲?這聽起來像是你想從一臺虛擬機發送大包數據到另一臺虛擬機。發送數據的相對直接的方法是使用存儲Blob和隊列。首先,將數據寫入一個blob。然後將一條消息寫入一個指示數據可用位置的隊列(每個接收者都有自己的隊列)。接收器然後下載消息並刪除Blob。這比直接套接字連接慢,但也更簡單並且是異步的。異步通信在雲系統中是一大優勢。有了這個解決方案,如果接收器關閉以進行更新,它將在稍後恢復時收到消息。

相關問題