天天看點

《微軟雲計算Windows Azure開發與部署權威指南》——6.8 AppFabric服務總線的多點傳播服務開發

本節書摘來自異步社群《微軟雲計算windows azure開發與部署權威指南》一書中的第6章,第6.8節,作者: 尹成 , 郝庭毅 , 張俊強 , 孫奉剛 , 寇睿明 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

本節将建立一個簡單的網絡中繼聊天應用程式,利用該應用程式來讓大家對服務總線的多點傳播服務有一個認識。多點傳播通信允許在一個uri上有多個監聽者和發送者,每一個動作執行者既是監聽者又是發送者。與多點傳播模式對應的是簡單的釋出—訂閱模式。

為了實作多點傳播消息的模式,服務總線提供了另一個綁定,稱為“neteventrelaybinding”。這個綁定在wcf上的釋出—訂閱通信模式,其他的wcf内置的綁定都不支援。neteventrelaybinding允許多個應用程式向一個端點訂閱和發送消息,任何發送到該端點的消息會被所有的應用程式接收。

服務總線通過允許多個監聽者在第一個發送者指定的uri上注冊來實作neteventrelaybinding。每個擁有一個端點來監聽相同uri的主機服務都變成了一個訂閱者。當一個用戶端向該uri發送消息時,該消息就被發送給了目前所有訂閱的服務終端。圖6-73所示為多點傳播服務的簡單原理圖。

《微軟雲計算Windows Azure開發與部署權威指南》——6.8 AppFabric服務總線的多點傳播服務開發

具體的開發步驟如下。

建立internet中繼聊天服務

① 以管理者身份運作visual studio 2010,新建立項目,選擇visual c#的控制台工程,命名為“multicastdemo”,單擊“确定”按鈕。

② 在“解決方案資料總管”中找到multicastdemo工程下的引用,單擊右鍵選擇“添加引用”,添加對system.servicemodel.dll、microsoft.servicebus.dll,system.identitymodel.dll、system.runtime. serialization.dll的引用,前者在“.net”頁籤中可以找到,後者在“浏覽”頁籤中本地sdk安裝目錄下可以找到。

③ 建立一個接口檔案作為服務契約。右鍵單擊multicastdemo工程,選擇“添加”→“建立項”,選擇接口檔案,命名為“multicastcontract.cs”。下面是修改和添加後的該檔案代碼。

由于neteventrelaybinding要求wcf接口協定智能暴露單向(one way)的操作,是以所有的操作都需要标記為“isoneway=true”,來表明該操作隻有單一的輸入資訊,沒有對應的輸出資訊。有一些操作沒有傳回值,并且用戶端并不關心其調用成功與否,此時可以将接口協定标記為one-way,此類接口傳回值必須聲明為void,任何在伺服器抛出的異常也不會傳回用戶端。

④ 建立服務契約的實作類multicastservice.cs。右鍵單擊multicastdemo工程,選擇“添加”→“建立項”,選擇類檔案,命名為“multicastservice.cs”。該類實作multicastcontract接口,實作代碼如下。

⑤ 打開program.cs檔案,将其命名空間也改為microsoft.servicebus.sample,添加對system. globalization和system.servicemodel命名空間的引用,具體代碼如下。

⑥ 為program類添加一個構造方法,方法中設定服務總線中繼的連接配接模式,具體代碼如下。

⑧ 在main函數中生成program執行個體并調用其run()方法,最終program.cs的完整代碼如下。

⑨ 右鍵單擊multicastdemo工程,選擇“添加”→“建立項”,選擇“應用程式配置檔案”,單擊“确定”按鈕。添加後的app.config代碼如下。

10 輕按兩下multicastdemo工程下的properties檔案,檢視“應用程式”頁籤中的“目标架構”,如果是“.net framework client profile”,請改為對應的“.net framework ”。右鍵單擊multicastdemo工程,選擇“調試”→“啟動新執行個體”,連續啟動多個執行個體,使用相同的會話名就可以實作多人聊天,如圖6-74所示。

《微軟雲計算Windows Azure開發與部署權威指南》——6.8 AppFabric服務總線的多點傳播服務開發

繼續閱讀