摘要: DatacontractSerializer在命名空间System.Runtime.Serialization下。它能够序列化DataContract、DataMember标记的类。一、序列化规则: 1.没有显式声明DataMember特性的成员不会参与序列化。 2.DataMember标记的属性... 阅读全文
posted @ 2015-04-26 22:42 lh_cn 阅读(3039) 评论(0) 推荐(3) 编辑
摘要: XmlSerializer在命名空间using System.Xml.Serialization下。序列化和反序列化的代码:using System.IO;using System.Xml;using System.Xml.Serialization;namespace ConsoleApplic... 阅读全文
posted @ 2015-04-26 14:21 lh_cn 阅读(808) 评论(0) 推荐(1) 编辑
摘要: 当发布一个服务端之后,客户端可以通过服务端的元数据,用VS2010添加服务引用的方式生成对应的代码。并且可以选择生成相应的异步操作。WCF实现代码,Add操作延时5秒后再返回结果。[ServiceContract] public interface ICalculator { ... 阅读全文
posted @ 2015-04-08 23:34 lh_cn 阅读(1895) 评论(2) 推荐(2) 编辑
摘要: 客户端调用服务方法时附加上一个回调对象,服务端方法执行完后通过回调对象调用客户端中的方法。双方需要定义回调契约,并且客户端需要实现这个回调契约。先定义两个接口,一个作为WCF类库服务ICalculator接口,另一个回调契约接口ICallback: [ServiceContract(Callba... 阅读全文
posted @ 2015-04-08 22:30 lh_cn 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 二、绑定元素 每一个类型的绑定最重要的就是绑定元素了,每个绑定的功能特性都由绑定元素决定。BasicHttpBinding由用于编码的TextMessageEncodingBindingElement和用于httpp协议传输的HttpTransportBindingElement 构成。NetTc... 阅读全文
posted @ 2015-04-05 21:51 lh_cn 阅读(209) 评论(0) 推荐(1) 编辑
摘要: 一、利用BasicHttpBinding实现消息通信 WCF基础架构由服务模型层和信道层构成,而绑定是两层直接的纽带。绑定创建了处理消息的信道栈,实现消息的传输和处理。在绑定模型中涉及很多通信对象,信道监听器、信道工厂等,它们处于一个层链表中,层链表的每一层都是一个单链表维护自己的消息处理关系和信... 阅读全文
posted @ 2015-04-05 20:16 lh_cn 阅读(847) 评论(0) 推荐(1) 编辑
摘要: 一、在前一章中主要介绍了服务端的监听地址与逻辑地址。本节模拟消息转发机制来实际体验一把终结点的监听地址是如何使用的。先下载一个叫做TcpTrace的小软件(108k),它能够截取端口消息,并转发消息。先来看看服务端代码,服务端的绑定使用WS2007HttpBinding的不加密模式,因为我们等会还要... 阅读全文
posted @ 2015-03-30 23:12 lh_cn 阅读(1335) 评论(0) 推荐(3) 编辑
摘要: ServiceEndpoint具有一个可读可写的ListenUri属性,该属性表示服务端终结点的物理监听地址,该地址默认和终结点逻辑地址一致(即ServiceEndpoint的Uri)。对于客户端来说,请求真正发送的目标地址是服务的监听地址,默认情况下终结点的逻辑地址和监听地址是一样的。监听地址可... 阅读全文
posted @ 2015-03-30 21:54 lh_cn 阅读(2025) 评论(0) 推荐(1) 编辑
摘要: 在同一台机器上一个端口在某时刻只能被一个应用程序占用。对于WCF服务来说,如果服务器上有多个服务并且这些服务寄宿在不同的应用程序中,我们需要某种途径来共享它们的端口。下面是一个示例来演示使用TcpBinding进行端口共享。在VS2010中创建两个WCF服务工程,使用TCP绑定并且使用同一个端口进... 阅读全文
posted @ 2015-03-29 23:31 lh_cn 阅读(2523) 评论(1) 推荐(1) 编辑
摘要: 客户端发送请求给服务端,服务端根据请求消息把消息转发给对应的终结点。这里面有个消息筛选机制,如果请求消息中带有地址报头相关信息,则会用地址报头匹配当前的所有终结点。所以默认情况下客户端和服务端的地址报头信息一致才可以正常通信。 AddressHeader地址报头是一个抽象类,并且没有构造方法。创建... 阅读全文
posted @ 2015-03-29 21:53 lh_cn 阅读(558) 评论(0) 推荐(0) 编辑