2012-03-21 22 views
0

您好我正在使用Windows Azure中的TCP/IP,並且能夠成功開發TCP客戶端來發送和接收TCP數據的Web角色。如何從.aspx頁面訪問WebRole數據?

我想在.aspx頁面顯示這個接收到的數據。我應該如何從.aspx頁面訪問webrole數據?

更新:

我看着MVC架構,並瞭解流程。

我的問題是如何從Webrole.cs/WorkerRole.cs文件中獲取數據到控制器。我使用下面的代碼來接收TCP數據:msdn.microsoft.com/en-us/hh285885

回答

0

無論哪種情況(web或worker角色),都有一個通用解決方案 - 使用中間存儲器想要轉移。對於工作者角色 - 很明顯,工作者角色本身的角色不同於網絡角色,因此他們之間沒有直接溝通。對於網絡角色來說,情況幾乎相同。 Your WebRole.cs is instantiated in different process (WaIISHost.exe) than your web application (w3wp.exe)

因此,通用解決方案 - 爲您的數據使用中間存儲。您可以在communicate between different roles(和herehere)上找到不同的方法。根據您的具體要求,您可能會發現使用Azure Table Storage Serivce來存儲來自TCP的數據更容易,然後從Controller讀取表格。你甚至可能需要使用Azure Storage Queues

最後,它確實取決於您的具體和具體要求 - 您可以選擇最適合您需求的解決方案。

UPDATE

嗨,數據讀取部件在Webrole做是爲我 run()函數器件的應用。

那麼,your run function has no direct communication point of contact with you rcontroller。所以我不知道你在那裏讀什麼,如果你只需要控制器中的數據。

我認爲你應該修改你的主應用程序arcitecture。您的控制器的方法(aka Action)僅在客戶端瀏覽器向您的應用程序發出有效的HTTP請求時執行。我沒有看到有什麼理由可以在請求之前閱讀數據。尤其是快速變化的數據。只需等待來自瀏覽器的請求(也可能是AJAX請求),然後讀取數據。你可以有一些很好的分區/行密鑰策略,這樣你就可以將讀取的數據存儲在本地應用程序緩存中,然後讀取尚未讀取的內容。或者只要讀取數據就從表中刪除?不知道你的總體應用需求,語義和arcitechture。

至於你的其他問題:

如果我實現數據讀取ASP.net MVC的控制器partt, 會出現什麼webrole做?

那麼,您的「webrole.cs」就在那裏,以便Windows Azure結構控制器知道您有一個Web應用程序正在運行並正在運行。你可以把它完全留空(非執行)!在RoleEntryPoint類中有一個Run()方法的默認實現,它只是無限的睡眠,對任何人都沒有傷害。

+0

我明白如何在Web,Eorker角色和MVC體系結構中的流程之間進行通信。我現在的問題是,在我們使用workerrole.cs查詢表中的數據後,MVC中的控制器如何獲取這些數據以在視圖中顯示?謝謝。 – 2012-03-30 06:08:33

+0

workerrole.cs(或webrole.cs)將**寫入表存儲。控制器只會**讀取表格。 – astaykov 2012-03-30 08:17:58

+0

嗨,數據讀取部分是在Webrole中爲我在Run()函數中的應用完成的。如果我在ASP.net MVC的控制器中實現數據讀取部分,webrole會做什麼?我的第二個問題是,我必須每隔10秒查詢一次表以獲取最新數據。如何從控制器做到這一點?謝謝。 – 2012-03-30 09:34:34