2012-05-04 78 views
0

您好我正在Azure WorkerRole中實現TCPIP偵聽器。 WorkerRole偵聽傳入的TCP數據並將其存儲在Azure表存儲中。WebRole vs WorkerRole

當我在WorkerRole的Run()中執行此操作時,一切正常。

但是,當在WebRole的Run()中實現同樣的事情時,我得到一條消息「WebIIS已退出」並且調試模式在dev環境中退出。

這是爲什麼?

有人可以解釋WebRole與WorkerRole不同嗎?我們能否實現一個不斷在WebRole中監聽的TCPIP監聽器?

感謝 阿尼爾

+0

您的端口偵聽器是否位於與IIS相同的端口上? –

+0

@RichardAstbury號Http和TCP都在不同的端口 –

回答

0

試想WebRole就像一個Web應用程序。通過接收請求然後它返回一個響應,而工作者角色像Windows服務一樣工作。雖然兩個人都可以遞交TPC消息,但他們不同於他們交付的方式。 Web角色僅在處理請求時可用。工人角色將不斷提供。如果你想讓一個Web角色連續監聽一個TCP通道,最可能的是工作者角色將更好地滿足你的需求。

問候,

+0

這是不正確的。 Web角色具有RoleEntryPoint,就像工作者角色一樣,可以隨時運行任何代碼(有或沒有傳入請求)。 – smarx

+0

您好Smarx,所以根據您在http://stackoverflow.com/a/2610895/94559中的回答,WebRole = WorkerRole + IIS。在webrole的Run()中執行相同的代碼會使webrole變得不穩定,但是相同的代碼在WorkerRoel中工作正常。原因是什麼?在這種情況下,您認爲工人角色最適合的原因是什麼? –

0

我在一個類似的問題的答案:https://stackoverflow.com/a/2610895/94559

總之,網絡的作用是IIS,和工人的角色是一切。在這種情況下,我認爲你需要一個工人角色。

+0

您好Smarx,所以根據您在http://stackoverflow.com/a/2610895/94559中的回答,WebRole = WorkerRole + IIS。在webrole的Run()中執行相同的代碼會使webrole變得不穩定,但是相同的代碼在WorkerRoel中工作正常。原因是什麼?在這種情況下,您認爲工人角色最適合的原因是什麼? –

+0

是Web角色==工作者角色+ IIS。這取決於代碼是什麼。你得到的錯誤是什麼?需要注意的一件事是,在Web角色中,IIS綁定到(我相信)所有輸入端點,所以如果您嘗試綁定某些東西併發生錯誤,可能是因爲IIS已經取消了端口。 – smarx

+0

在開發機器中,我不斷收到錯誤,WaiISHost.exe:Managed(v4.0.30319)'已退出,代碼爲-66053(0xfffefdfb) –

0

什麼是Azure雲服務角色?

在Azure中,雲服務角色是託管的,負載平衡的平臺即服務虛擬機的集合,它們共同執行常見任務。雲服務角色由Azure結構控制器管理,並提供可擴展性,控制和定製的最終組合

什麼是Web角色?

Web角色是Azure中的雲服務角色,它配置和定製爲運行由Internet Information Services(IIS)支持的編程語言/技術(例如ASP.NET,PHP,Windows Communication)開發的Web應用程序基礎和快速的CGI。

什麼是工作者角色?

工作者角色是運行應用程序和服務級別任務(通常不需要IIS)的Azure中的任何角色。在輔助角色中,默認情況下不安裝IIS。它們主要用於執行支持後臺進程以及Web Roles,並執行諸如自動壓縮上傳圖像,在數據庫發生更改時運行腳本,從隊列和進程等獲取新消息等任務。

相關問題