WCF框架的出现,为我们解决了许多以前不能实现功能。那么对于WCF双向通信的具体含义又有多少人真正了解呢。在这里我们就来初步的探讨下WCF双向通信。#t#

WCF整合了Remoting和webService等等。而且开发简单(相对的),它既弥补Remoting的只能在.net上运行,又弥补了asmx只能单向传送消息的缺点。也就是说,WCF是实现跨平台,在跨平台的同时,也可以双向通信。在WCF的编程思想中,无疑将SOA的思想体现的***。
首先要做的是就是定义服务契约。定义契约一般使用接口,使得实现和消费这个服务的双方都要按照这个契约来实现相应的接口。在双向通信中至少要定义两个服务,一个服务是供消费程序消费的,另一个则是在callBack的时候调用的服务,这个服务应该由消费程序实现。
其次,就是在服务端实现这些契约(说白了就是实现上面定义的接口)。在开发中,我们经常会把这个实现独立出来,方便在不同的宿主中发布这些服务。
***,实现客户端。在WCF双向通信中,客户端也是服务端,因为它也实现了服务契约。
- Contract:
 - namespace Lin.Contract
 - {
 - [ServiceContract(CallbackContract=
 
typeof(ICallBack))]- public interface IHello
 - {
 - [OperationContract]
 - void SayHelloTo(string userName);
 - }
 - }
 - namespace Lin.Contract
 - {
 - [ServiceContract]
 - public interface ICallBack
 - {
 - [OperationContract]
 - void ReceiveTime(DateTime time);
 - }
 - }
 - Service:
 - namespace Lin.Service
 - {
 - [ServiceBehavior(ConcurrencyMode
 
ConcurrencyMode = ConcurrencyMode
.Reentrant)]- public class ServiceHello : IHello
 - {
 - IHello 成员#region IHello 成员
 - public void SayHelloTo(string userName)
 - {
 - Console.WriteLine("Hello {0}", userName);
 - OperationContext.Current.GetCallbackChannel
 ().ReceiveTime(DateTime.Now); - }
 - #endregion
 - }
 - }Host:
 - class Program
 - {
 - static void Main(string[] args)
 - {
 - using (ServiceHost host =
 
new ServiceHost(typeof(ServiceHello)))- {
 - host.Open();
 - Console.Read();
 - }
 - }
 - }Client:
 - namespace Lin.Client
 - {
 - public class ClientCallBack:ICallBack
 - {
 - ICallBack 成员#region ICallBack 成员
 - public void ReceiveTime(DateTime time)
 - {
 - Console.WriteLine("服务器收到消息的时间是
 
:{0}", time.ToLongTimeString());- }
 - #endregion
 - }
 - }
 - 调用服务:
 - namespace Lin.Client
 - {
 - public class ClientHello :
 
DuplexClientBase, IHello - {
 - public ClientHello(InstanceContext
 
instance) : base(instance) { }- IHello 成员#region IHello 成员
 - public void SayHelloTo(string userName)
 - {
 - base.Channel.SayHelloTo(userName);
 - }
 - #endregion
 - }
 - }
 - class Program
 - {
 - static void Main(string[] args)
 - {
 - Hello();
 - Console.Read();
 - }
 - static void Hello()
 - {
 - ClientCallBack callBack =
 
new ClientCallBack();- ClientHello hello =
 
new ClientHello(new
InstanceContext(callBack));- string commandString = string.Empty;
 - while (commandString != "exit")
 - {
 - commandString = Console.ReadLine();
 - hello.SayHelloTo(commandString);
 - }
 - }
 - }
 
如同OO的出现一样,有些人是注重OO的思想,有些人注重OO的实现。同样的,WCF双向通信应该更多的是提倡一种面向服务架构的思想。SOA如何实现,这个不重要,每个平台都有自己的实现方式。这也体现了技术要服务于社会。
                网站栏目:WCF双向通信实现服务契约
                
                链接分享:http://www.csdahua.cn/qtweb/news2/441052.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网