做爲Windows Azure的託管服務被設計和開發的應用程序由這兩部分組成:windows
1,託管代碼安全
2,XML配置文件網絡
託管代碼對應不一樣的角色app
XML文件對應不一樣的配置設置異步
咱們能夠看一下下面這張圖,它詳細說明了在Windows Azure應用程序中主要包含哪些組件:操作系統
注意:這是Windows Azure SDK中的一張圖。線程
接下來,咱們會一個一個地仔細分析上面這張圖中提到的每個組件。設計
首先是角色blog
有三種類型的角色進程
1,Web角色
2,Worker角色
3,VM角色
Web角色
1,這是一個爲IIS定製的角色。
2,若是咱們選擇了這種類型的角色,IIS會被自動地配置好。
3,這個角色主要用於獲取輸入。
4,這個角色已經針對HTTP請求作好相應的配置了。
5,它包含被IIS支持的Web站點或其餘的代碼。
6,它會包含一些ASPX頁面,或者,它也可能會包含一些WCF服務。被IIS支持的任何應用程序均可以做爲Web角色來使用。
7,任何一個應用程序均可以做爲Web角色來使用,只要它支持HTTP協議就能夠了。
8,當咱們在Windows Azure中把WCF服務做爲Web角色來使用的時候,咱們須要確保在WCF服務中使用的綁定是「basicHttpBinding」。把WCF服務做爲Web角色來使用,咱們不能 使用其餘的綁定。
Windows Azure SDK 1.3中Web角色的改進
1,支持IIS的所有功能。
2,Web應用程序和站點徹底運行在IIS之下。
3,Web角色用和IIS徹底同樣的方式來使用應用程序域。
最大的改進是如今咱們可讓把多個站點或應用程序當作一個Web角色了。
在建立Azure項目的時候,咱們能夠選擇咱們想爲這個應用程序添加的Web角色的類型。已經安裝的模板包括:
1,ASP.Net Web Role
2,ASP.Net MVC Web Role
3,WCF Service Web Role
4,CGI Web Role
在剛剛建立好的Windows Azure項目中,你能夠看到,嚮導會爲你自動地建立兩種類型的配置文件。
在ServiceConfiguration.cscfg文件中,咱們能夠指定Web角色的實例數:
Worker角色
它主要用於後臺任務。值得注意的是,Worker角色不支持IIS。因此,它能夠處理任何類型的應用程序,包括非託管代碼。Worker角色不用直接和用戶進行交互,因此,當遇到那些異步的,須要很長時間才能完成的處理任務的時候,它就能夠大顯身手了。
Worker角色的主要用途
1,用於那些無需用戶進行等候的任務。
2,用於那些異步的任務。
3,用於運行非HTTP服務(例如:TCP服務)。
4,託管不須要用戶進行輸入的應用程序。
Worker角色和Web角色之間的區別
讓咱們理解一下Web角色和Worker角色之間的區別:
1,Web角色是一個Web應用程序,它能夠獲取來自於用戶的HTTP輸入,它被IIS支持。Worker角色不支持IIS。這是Web角色和Worker角色之間的主要區別。
2,Web角色面向用戶界面,而Worker角色獲取來自於Web角色的輸入,主要用於異步執行批量的操做。
3,在Web角色中,線程是經過IIS來管理的,而在Worker角色中,線程是開發者或者咱們本身來管理的。
4,在Worker角色中,咱們必須提供Run方法來啓動這個進程。
5,Web角色和Worker角色的安全參數並不相同。
6,對於IIS和網絡服務來講,默認是支持基於證書的ACL(Access Control List)的,而在Worker角色中,必須由開發者本身來管理。
在csdef文件中,Worker角色的定義以下,在下面這個配置文件中,這個Worker角色的名字是「WokerRole1」:
<WorkerRole name="WorkerRole11">
<Imports>
<import modulename="Diagnostics" />
</Imports>
</WorkerRole>
Worker角色類主要包含兩個方法:
VM角色
第三種類型的角色是VM角色。這是很是特殊的一種角色,它主要用於虛擬機中的操做系統升級。
Web角色和Worker角色運行在一個虛擬機上,而VM角色是一個虛擬機,它能夠全面控制虛擬機上的各類操做。
咱們可使用VM角色來控制虛擬機中的操做系統和升級,而操做系統是VM角色的實例。這個角色最適合用來遷移要做爲託管服務在Windows Azure中運行的應用程序。
一個VM角色的定義以下所示:
<VirtualMachineRole name="MachineRole" vmsize="Medium">
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
</VirtualMachineRole>
原文名:Windows Azure for Developers Task 3: Understanding Windows Azure Application 做者:Dhananjay Kumar