十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“怎么对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异步调用进行服务操作”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!