WCF服務協定的理解

 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))]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章