成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF單向協定基本創建步驟解析

開發 開發工具
我們今天將會通過一個簡單的示例來為大家演示WCF單向協定的創建過程,對這方面有需要的朋友可以通過我們介紹的內容充分掌握這一應用技巧。

WCF開發工具的出現,幾乎整合了.NET平臺下所有的技術,為開發人員帶來了非常大的好處。我們今天將會通過這篇文章介紹的內容充分的了解到有關WCF單向協定的相關創建方法,希望對大家有所幫助。#t#

創建WCF單向協定

通過將 ServiceContractAttribute 類應用到定義服務將要實現的方法的接口,創建服務協定。

通過將 OperationContractAttribute 類應用到相應的方法,指示客戶端可以調用接口中的哪些方法。

通過將 IsOneWay 屬性設置為 true,可將不得具有輸出(沒有返回值且沒有 out 參數或 ref 參數)的操作指定為單向操作。注意,默認情況下,使用 OperationContractAttribute 類的操作都滿足請求-答復協定,原因是默認情況下 IsOneWay 屬性為 false。因此,如果需要對方法使用WCF單向協定,則必須將 attribute 屬性的值顯式指定為 true。

 

此示例演示具有單向服務操作的服務協定。客戶端不會像在雙向服務操作中那樣等待服務操作完成。此示例基于入門示例并使用 wsHttpBinding 綁定。此示例中的服務是自承載控制臺應用程序,通過它可以觀察接收和處理請求的服務。客戶端也是一個控制臺應用程序。

注意:

本主題的末尾介紹了此示例的設置過程和生成說明。

若要創建單向服務協定,請定義服務協定,將 OperationContractAttribute 類應用于每個操作,并將 IsOneWay 設置為 true,如下面的示例代碼所示:

  1. [ServiceContract(Namespace="http://Microsoft.
    ServiceModel.Samples"
    )]  
  2. public interface IOneWayCalculator  
  3. {  
  4. [OperationContract(IsOneWay=true)]  
  5. void Add(double n1, double n2);  
  6. [OperationContract(IsOneWay = true)]  
  7. void Subtract(double n1, double n2);  
  8. [OperationContract(IsOneWay = true)]  
  9. void Multiply(double n1, double n2);  
  10. [OperationContract(IsOneWay = true)]  
  11. void Divide(double n1, double n2);  

為了演示客戶端不會等待服務操作完成,此示例中的服務代碼實現了五秒鐘的延遲,如下面的示例代碼所示:

 

  1. / This service class implements the service contract.  
  2. // This code writes output to the console window.  
  3. [ServiceBehavior(ConcurrencyModeConcurrencyMode = 
    ConcurrencyMode.Multiple, 
    InstanceContextModeInstanceContextMode 
    = InstanceContextMode.PerCall)]  
  4. public class CalculatorService : IOneWayCalculator  
  5. {  
  6. public void Add(double n1, double n2)  
  7. {  
  8. Console.WriteLine("Received Add({0},{1}) - sleeping", n1, n2);  
  9. System.Threading.Thread.Sleep(1000 * 5);  
  10. double result = n1 + n2;  
  11. Console.WriteLine("Processing Add({0},{1}) - result: 
    {2}", n1, n2, result);  
  12. }  
  13. ...  

當客戶端調用服務時,調用不等待服務操作完成即返回。

運行示例時,客戶端和服務活動將顯示在服務和客戶端控制臺窗口中。您可以看到服務從客戶端接收消息。在每個控制臺窗口中按 Enter 可以同時關閉服務和客戶端。

客戶端在服務之前完成,說明了客戶端沒有等待單向服務操作完成。客戶端輸出如下所示:

 

  1. Add(100,15.99)  
  2. Subtract(145,76.54)  
  3. Multiply(9,81.25)  
  4. Divide(22,7)  
  5. Press < ENTER> to terminate client. 

服務輸出如下所示:

 

  1. The service is ready.  
  2. Press < ENTER> to terminate service.  
  3. Received Add(100,15.99) - sleeping  
  4. Received Subtract(145,76.54) - sleeping  
  5. Received Multiply(9,81.25) - sleeping  
  6. Received Divide(22,7) - sleeping  
  7. Processing Add(100,15.99) - result: 115.99  
  8. Processing Subtract(145,76.54) - result: 68.46  
  9. Processing Multiply(9,81.25) - result: 731.25  
  10. Processing Divide(22,7) - result: 3.14285714285714 

在進行WCF單向協定時,需要注意:

HTTP 從定義上講是一個請求/響應協議;當發出請求時,即返回響應。即使對于通過 HTTP 公開的單向服務操作,也是如此。當調用操作時,服務在執行服務操作之前返回 HTTP 狀態碼 202。此狀態碼表示請求已被接受進行處理,但處理尚未完成。調用操作的客戶端在從服務收到 202 響應之前處于阻止狀態。當使用綁定(配置為使用會話)發送多個單向消息時,這可能會產生某些意外行為。此示例中使用的 wsHttpBinding 綁定配置為默認使用會話來建立安全上下文。默認情況下,會話中的消息一定會按照它們的發送順序到達。因此,當發送會話中的第二個消息時,在處理完***個消息之前不會處理第二個消息。這樣的結果是,在處理完上一個消息之前,客戶端不會收到消息的 202 響應。因此,客戶端似乎是阻止了每個后續的操作調用。為了避免此行為,此示例對運行庫進行了配置,以便將消息并發調度給不同的實例進行處理。此示例將 InstanceContextMode 設置為 PerCall,使每個消息可以由不同的實例來處理。ConcurrencyMode 設置為 Multiple,以允許多個線程同時調度消息。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-01 10:54:29

WCF雙工會話通道

2009-11-06 16:22:35

WCF協定

2010-03-02 16:09:53

WCF框架

2009-12-07 10:46:08

WCF框架

2009-11-09 13:23:35

WCF協定

2010-02-24 13:38:18

WCF PreCal模

2010-02-26 09:33:18

WCF創建WebSer

2009-12-22 10:05:54

WCF編程生命周期

2010-03-01 17:35:29

WCF協定

2010-03-01 13:17:46

WCF單向服務

2009-12-22 10:29:59

WCF客戶端處理

2010-02-23 15:58:57

WCF Session

2009-12-22 18:29:10

WCF適配器

2010-03-01 15:08:05

WCF單向操作

2010-03-02 17:43:31

WCF框架處理流程

2011-06-20 17:02:04

SEO

2010-02-26 16:10:50

WCF傳送二進制流數據

2010-02-23 10:51:32

WCF Address

2009-12-21 10:27:52

WCF基本概念

2010-02-23 16:32:29

WCF服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲第一成人av | 国产欧美精品在线观看 | 嫩草视频网| 国产日韩欧美一区二区 | 欧美亚洲另类丝袜综合网动图 | 国产视频一区二区 | 天天干人人 | 国产精品呻吟久久av凹凸 | av一区二区三区四区 | 国产成人精品一区二区三区四区 | 国产精品av久久久久久毛片 | 亚洲日本欧美日韩高观看 | 欧美极品在线观看 | 成人影视网 | 欧美专区在线 | 欧美一区二区三区在线播放 | 婷婷综合久久 | wwww.xxxx免费| 国产三区在线观看视频 | 日韩在线精品 | 成人在线小视频 | 国产成人精品一区二区三区网站观看 | 久久精品超碰 | 婷婷色国产偷v国产偷v小说 | 亚洲国产精品成人无久久精品 | 欧美另类视频 | 美女福利网站 | 看av网 | 亚洲最新在线视频 | 91xxx在线观看 | 91 在线 | 超碰导航 | 黄色av网站免费看 | 久久国产精品久久久久久 | 国产精品久久久久一区二区三区 | 一区二区三区在线观看视频 | 日韩h| 国产精品久久久久无码av | 国产午夜精品一区二区三区嫩草 | 欧美日韩视频在线播放 | 在线色 |