原来在学习Silverlight的时候使用过WCF的双工通信,不过是使用pollingDuplexHttpBinding来实现双工,而且服务也是绑定在web程序中。也许是架构没有设计好,在客户端多了的时候有些消息通道就会异常,觉得很不爽,刚好网上看到一个大侠的基于netTcpBinding的聊天室代码(参见http://www.cnblogs.com/ShadowLoki/archive/2012/08/30/2663931.html)。于是就想重新使用netTcpBinding优化一下。大侠提供了两个程序代码,分别是WCF程序寄宿在控制台程序中,下载回来后应该是SimplePush.rar文件。另外一个程序则是silverlight +wcf,下载回来后的文件名是Chat.rar。
好了,按照上面链接介绍的步骤创建service和contract单独项目,这两个项目类型为'WCF服务库'。
一、我们定义一个基础的WCF服务契约(contract)
IPushService
/// <summary> /// 推送服务契约 /// /// Tips: /// 契约提供两个服务,一个是订阅,一个是退订。 /// 服务端会向订阅的客户端发布消息 /// </summary> [ServiceContract(CallbackContract = typeof(IPushCallback))] public interface IPushService { /// <summary> /// 订阅服务 /// </summary> [OperationContract(IsOneWay = true)] void Regist(); ///