av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

WCF異步服務正確創(chuàng)建方式詳解

在WCF應用程序中,如何才能正確的實現(xiàn)WCF異步服務這一操作技巧呢?今天我們將會在這篇文章中為大家詳細介紹一下有關這方面的具體應用方式,希望對于又需要的朋友們可以從中獲得一些幫助。

創(chuàng)新互聯(lián)是一家專業(yè)提供沙雅企業(yè)網站建設,專注與成都網站設計、網站制作、成都h5網站建設、小程序制作等業(yè)務。10年已為沙雅眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

本例子中,我們通過服務調用來讀取服務端的文件,在實現(xiàn)文件讀取操作的時候,采用異步文件讀取方式。

先來看看服務契約的定義。服務契約通過接口IFileReader定義,基于文件名的文件讀取操作以異步的方式定義在BeginRead和EndRead方法中。

 
 
 
  1. using System;   
  2. using System.ServiceModel;   
  3. namespace Artech.AsyncServices.Contracts   
  4. {   
  5. [ServiceContract(Namespace="http://www.artech.com/")]   
  6. public interface IFileReader   
  7. {   
  8. [OperationContract(AsyncPattern = true)]   
  9. IAsyncResult BeginRead(string fileName, AsyncCallback 
    userCallback, object stateObject);   
  10. string EndRead(IAsyncResult asynResult);   
  11. }   
  12. }  

FileReader實現(xiàn)了契約契約,在BeginRead方法中,根據文件名稱創(chuàng)建FileStream對象,調用FileStream的BeginRead方法實現(xiàn)文件的異步讀取,并直接返回該方法的執(zhí)行結果:一個IAsyncResult對象。在EndRead方法中,調用FileStream的EndRead讀取文件內容,并關閉FileStream對象。

 
 
 
  1. using System;   
  2. using System.Text;   
  3. using Artech.AsyncServices.Contracts;   
  4. using System.IO;   
  5. namespace Artech.AsyncServices.Services   
  6. {   
  7. public class FileReaderService : IFileReader   
  8. {   
  9. private const string baseLocation = @"E:\";   
  10. private FileStream _stream;   
  11. private byte[] _buffer;   
  12. #region IFileReader Members   
  13. public IAsyncResult BeginRead(string fileName, AsyncCallback 
    userCallback, object stateObject)   
  14. {   
  15. this._stream = new FileStream(baseLocation + fileName, 
    FileMode.Open, FileAccess.Read, FileShare.Read);   
  16. this._buffer = new byte[this._stream.Length];   
  17. return this._stream.BeginRead(this._buffer, 0, this._buffer.Length,
     userCallback, stateObject);   
  18. }   
  19. public string EndRead(IAsyncResult ar)   
  20. {   
  21. this._stream.EndRead(ar);   
  22. this._stream.Close();   
  23. return Encoding.ASCII.GetString(this._buffer);   
  24. }   
  25. #endregion 30: }   

采用傳統(tǒng)的方式寄宿該服務,并發(fā)布元數據。在客戶端通過添加服務引用的方式生成相關的服務代理代碼和配置。你將會發(fā)現(xiàn)客戶端生成的服務契約和服務代理類中,會有一個***的操作Read。也就是說,不管服務采用同步模式還是WCF異步服務實現(xiàn),對客戶端的服務調用方式沒有任何影響,客戶端可以任意選擇相應的模式進行服務調用。

 
 
 
  1. namespace Clients.ServiceReferences   
  2. {   
  3. [ServiceContractAttribute(ConfigurationName= 
    "ServiceReferences.IFileReader")]   
  4. public interface IFileReader   
  5. {   
  6. [OperationContractAttribute(Action = 
    " http://www.artech.com/IFileReader/Read", 
    ReplyAction = " http://www.artech.com/IFileReader/
    ReadResponse")]   
  7. string Read(string fileName);   
  8. }   
  9. public partial class FileReaderClient :
     ClientBase, IFileReader   
  10. {   
  11. public string Read(string fileName)   
  12. {   
  13. return base.Channel.Read(fileName);   
  14. }   
  15. }   

直接借助于生成的服務代理類FileReaderClient,服務調用的代碼就顯得很簡單了。

 
 
 
  1. using System;   
  2. using Clients.ServiceReferences;   
  3. namespace Clients   
  4. {   
  5. class Program   
  6. {   
  7. static void Main(string[] args)   
  8. {   
  9. using (FileReaderClient proxy = new FileReaderClient())   
  10. {   
  11. Console.WriteLine(proxy.Read("test.txt"));   
  12. }   
  13. Console.Read();   
  14. }   
  15. }   

以上就是對WCF異步服務的實現(xiàn)做的詳細介紹。

【編輯推薦】

  1. WCF異步操作具體定義與應用
  2. WCF自定義集合類型應用注意事項探討
  3. WCF會話服務基本應用技巧分享
  4. WCF編碼規(guī)范相關知識詳解
  5. Silverlight調用WCF服務相關應用細節(jié)解析

當前標題:WCF異步服務正確創(chuàng)建方式詳解
轉載來源:http://uogjgqi.cn/article/dpdphsi.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流