怎么对WCF异步调用进行服务操作

本篇内容主要讲解“怎么对WCF异步调用进行服务操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么对WCF异步调用进行服务操作”吧!

创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目网站设计制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元揭西做网站,已为上家服务,为揭西各地企业和个人服务,联系电话:18982081108

我将服务契约的定义单独形成了一个程序集,并在客户端直接引用了它。然而,在这样的服务契约程序集中,是没有包含异步方法的定义的。因此,我需要修改在客户端的服务定义,增加操作的异步方法。这无疑为服务契约的重用带来障碍。至少,我们需要在客户端维持一份具有异步方法的服务契约。

所幸,在客户端决定采用WCF异步调用用我所设计的服务操作时,虽然需要修改客户端的服务契约接口,但并不会影响服务端的契约定义。因此,服务端的契约定义可以保持不变,而在客户端则修改接口定义如下

[ServiceContract]  public interface IDocumentsExplorerService  {  [OperationContract]  Stream TransferDocument(Document document);  [OperationContract(AsyncPattern = true)]  IAsyncResult BeginTransferDocument(Document document,  AsyncCallback callback, object asyncState);  Stream EndTransferDocument(IAsyncResult result);  }

注意,在BeginTransferDocument()方法上,必须在OperationContractAttribute中将AsyncPattern属性值设置为true,因为它的默认值为false。

WCF异步调用方式如下:

BasicHttpBinding binding = new BasicHttpBinding();  binding.SendTimeout = TimeSpan.FromMinutes(10);  binding.TransferMode = TransferMode.Streamed;  binding.MaxReceivedMessageSize = 9223372036854775807;  EndpointAddress address = new EndpointAddress  ("http://localhost:8008/DocumentExplorerService");  ChannelFactory factory =   new ChannelFactory(binding,address);  m_service = factory.CreateChannel();  ……  IAsyncResult result = m_service.BeginTransferDocument(doc,null,null);  result.AsyncWaitHandle.WaitOne();  Stream stream = m_service.EndTransferDocument(result);

到此,相信大家对“怎么对WCF异步调用进行服务操作”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前名称:怎么对WCF异步调用进行服务操作
本文来源:http://scyanting.com/article/iigcph.html