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

創(chuàng)新互聯(lián)是一家專業(yè)提供沙雅企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為沙雅眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
本例子中,我們通過服務(wù)調(diào)用來讀取服務(wù)端的文件,在實現(xiàn)文件讀取操作的時候,采用異步文件讀取方式。
先來看看服務(wù)契約的定義。服務(wù)契約通過接口IFileReader定義,基于文件名的文件讀取操作以異步的方式定義在BeginRead和EndRead方法中。
- using System;
- using System.ServiceModel;
- namespace Artech.AsyncServices.Contracts
- {
- [ServiceContract(Namespace="http://www.artech.com/")]
- public interface IFileReader
- {
- [OperationContract(AsyncPattern = true)]
- IAsyncResult BeginRead(string fileName, AsyncCallback
userCallback, object stateObject);- string EndRead(IAsyncResult asynResult);
- }
- }
FileReader實現(xiàn)了契約契約,在BeginRead方法中,根據(jù)文件名稱創(chuàng)建FileStream對象,調(diào)用FileStream的BeginRead方法實現(xiàn)文件的異步讀取,并直接返回該方法的執(zhí)行結(jié)果:一個IAsyncResult對象。在EndRead方法中,調(diào)用FileStream的EndRead讀取文件內(nèi)容,并關(guān)閉FileStream對象。
- using System;
- using System.Text;
- using Artech.AsyncServices.Contracts;
- using System.IO;
- namespace Artech.AsyncServices.Services
- {
- public class FileReaderService : IFileReader
- {
- private const string baseLocation = @"E:\";
- private FileStream _stream;
- private byte[] _buffer;
- #region IFileReader Members
- public IAsyncResult BeginRead(string fileName, AsyncCallback
userCallback, object stateObject)- {
- this._stream = new FileStream(baseLocation + fileName,
FileMode.Open, FileAccess.Read, FileShare.Read);- this._buffer = new byte[this._stream.Length];
- return this._stream.BeginRead(this._buffer, 0, this._buffer.Length,
userCallback, stateObject);- }
- public string EndRead(IAsyncResult ar)
- {
- this._stream.EndRead(ar);
- this._stream.Close();
- return Encoding.ASCII.GetString(this._buffer);
- }
- #endregion 30: }
- }
采用傳統(tǒng)的方式寄宿該服務(wù),并發(fā)布元數(shù)據(jù)。在客戶端通過添加服務(wù)引用的方式生成相關(guān)的服務(wù)代理代碼和配置。你將會發(fā)現(xiàn)客戶端生成的服務(wù)契約和服務(wù)代理類中,會有一個***的操作Read。也就是說,不管服務(wù)采用同步模式還是WCF異步服務(wù)實現(xiàn),對客戶端的服務(wù)調(diào)用方式?jīng)]有任何影響,客戶端可以任意選擇相應(yīng)的模式進行服務(wù)調(diào)用。
- namespace Clients.ServiceReferences
- {
- [ServiceContractAttribute(ConfigurationName=
"ServiceReferences.IFileReader")]- public interface IFileReader
- {
- [OperationContractAttribute(Action =
" http://www.artech.com/IFileReader/Read",
ReplyAction = " http://www.artech.com/IFileReader/
ReadResponse")]- string Read(string fileName);
- }
- public partial class FileReaderClient :
ClientBase, IFileReader - {
- public string Read(string fileName)
- {
- return base.Channel.Read(fileName);
- }
- }
- }
直接借助于生成的服務(wù)代理類FileReaderClient,服務(wù)調(diào)用的代碼就顯得很簡單了。
- using System;
- using Clients.ServiceReferences;
- namespace Clients
- {
- class Program
- {
- static void Main(string[] args)
- {
- using (FileReaderClient proxy = new FileReaderClient())
- {
- Console.WriteLine(proxy.Read("test.txt"));
- }
- Console.Read();
- }
- }
- }
以上就是對WCF異步服務(wù)的實現(xiàn)做的詳細介紹。
【編輯推薦】
- WCF異步操作具體定義與應(yīng)用
- WCF自定義集合類型應(yīng)用注意事項探討
- WCF會話服務(wù)基本應(yīng)用技巧分享
- WCF編碼規(guī)范相關(guān)知識詳解
- Silverlight調(diào)用WCF服務(wù)相關(guān)應(yīng)用細節(jié)解析
網(wǎng)站標(biāo)題:WCF異步服務(wù)正確創(chuàng)建方式詳解
網(wǎng)站URL:http://www.dlmjj.cn/article/dpdphsi.html


咨詢
建站咨詢
