1、創建服務協定
- 類和接口都可以定義服務協定
- 建議使用接口,因爲接口可以直接對服務服務協定建模,平時都以接口爲主
- 定義服務協定
- 在類或接口的上面使用ServiceContaratAtlnibute屬性來標記,則這個類或接口爲服務的類或接口
- 定義服務操作
- 在接口中的方法的上面使用OpenationContractAttribute屬性標記,如果沒有使用此屬性來標記則該操作(即方法)在客戶端是無法訪問到的
- 服務操作(即方法)它不會傳遞對象的引用(即是直傳遞而不是引用傳遞)它們傳遞的是對象的副本(“注:”此時可能不再是本機編程,服務可能不在本機上)
- 服務操作的消息模式
- a、默認的模式(請求與答覆模式)
- 即使該方法的修飾的返回值爲void都爲請求與答覆模式,如果方法的修飾爲void就人有一隱藏的返回值,用於判斷是否提出請求與是否回覆了請求
- 此模式只有接收到服務端的答覆後纔會繼續往下執行,這樣會造成客戶端出現很多的等待情況,例如:插入很多的數據的時候就需要長時間的等待,是是個請求與答覆的缺點
- b、單向模式
- 客戶端不必先行等待操作的完成就會立即的往下執行,除非發送的數據龐大或發送的數據錯誤,不然是不需要等待的,但它的缺點爲不會處理SoAp錯誤
- 它的使用格式爲:將Isoneway設置爲true
- 如:[OperationContract(IsOneWay=true)]
- 雙工模式
- 服務端和客戶端均能獨立地向對方發送消息
- 對於那些類似於事件行爲的服務來說這種雙向通信模式就很有用
- 設計雙工模式協定必須設計回調協定,並將該回調協定的類型分配給標記服務協定的ServiceContractAttribut屬性的CallbackContract屬性的propert
- 要實現雙式模式則必須創建第二個接口,該接口包含在客戶端調用的方法聲明
- //SessionMode = SessionMode.Required 說明開啓了對話模式
//CallbackContract = typeof(ICalculatorDupiexCailback) 說明了回調接口,即說明了客戶端的接口 - 如:[ServiceContract(Namespace = "http:Microsoft.ServiceMode1.Samples", SessionMode = SessionMode.Required,CallbackContract = typeof(ICalculatorDupiexCailback))]
- a、默認的模式(請求與答覆模式)