服務定義描述了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可以展現出一個圖形化服務配置界面。可以很人性化進行配置。