服務定義描述了Windows Azure在部署使用者服務時首先需要準備的環境要求。Fabric控制器會根據服務定義的描述來為服務執行個體準備相應的虛拟機環境。服務定義中包括了所有在服務部署時一開始就需要的資訊,這些資訊被統一定義在服務定義檔案ServiceDefinition.csdef中。下面是常見的包含在服務定義檔案中的資訊。
1、服務角色類型和名稱:
2、服務端點。包括服務協定和端口;
3、更新域的數量;
4、角色運作時的權限,比如完全新人或部分信任;
5、服務角色執行個體的規格/對應虛拟機的大小;
6、本地檔案存儲需要的磁盤控件;
7、使用者自定義的一些屬性;
由于在服務定義檔案中的資訊基本上都是在服務部署之前需要确定的資訊,而且這些資訊直接影響服務的具體部署的拓撲結構和資源配置設定檔案,那麼對應服務就需要重新打包和部署。這與服務配置檔案不同,後者可以被動态的修改。正因如此ServiceDefinition.csdef檔案與服務代碼打包一起成為一個ZIP格式的壓縮檔案(*.cspkg),而ServiceConfiguration.csdef檔案是獨立作為一個XML服務配置檔案存在。顯然把服務配置檔案單獨存放主要是為了友善更新服務配置。
ServiceDefinition.csdef檔案是一個XML格式的檔案,其主要内容包括角色定義和網絡通信規則。其最上層的結構如下:
<ServiceDefiniton...>
<WebRole...> ... </WebRole>
<WorkerRole> ..... </WorkerRole>
<VirtualMachineRole> ... </VirtualMachineRole>
<NetworkTrafficRules> ... </NetworkTrafficRules>
</ServiceDefiniton...>
由于服務定義檔案是XML格式的,是以可以使用任何文本編輯器對它進行修改和建立。為了保證文法的正确性和編輯效率,建議通過Visual Studio來修改。如果使用Visual Studio的項目建立向導生成一個Windows Azure服務項目,那麼基本的服務定義檔案和服務配置檔案會自動生成。
Visual Studio生成的Windows Azure項目主要包含一些服務定義及配置資訊,服務的主要邏輯實作都是在具體各個角色所對相應的項目中。從項目中的依賴項中可以看到 Windows Azure項目依賴于它所包含的不同角色項目。
在Visual Studio中打開ServiceDefinition.csdef可以展現出一個圖形化服務配置界面。可以很人性化進行配置。