wcf服务中服务要主动给客户端消息,所以要用到回调,但同时我要实现tcp方式和http方式,服务契约如何设计比较合理,谢谢!急!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    http方式不支持回调,这是http无连接导致的,你无法更改。
      

  2.   

    我知道http方式不支持回调,接口设计的时候把需要回调的方法和其他分开,用两套接口的话,会不会有什么风险呢
      

  3.   

    http可以使用异步长连接,模拟回调
      

  4.   

    你所谓的“服务契约”是指什么呢?你不能用wcf属于硬性套用在别的东西上,除非你自己发明一种契约。
      

  5.   

    http://download.csdn.net/detail/caozhy/5287998
      

  6.   

    你所谓的“服务契约”是指什么呢?你不能用wcf属于硬性套用在别的东西上,除非你自己发明一种契约。
     [ServiceContract]
        public interface ISMSServices
        {
            /// <summary>
            /// 入队是否成功
            /// </summary>
            /// <param name="simid">手机号码</param>
            /// <param name="content">发送内容</param>
            /// <returns></returns>
            [OperationContract]
            int PostSmsReq(string simid, string content);        /// <summary>
            /// 读取数据库中接收到的短消息
            /// </summary>
            /// <param name="startTime">开始时间</param>
            /// <param name="count">条数</param>
            /// <returns></returns>
            [OperationContract]
            List<MsgRecord> ReadSMS(DateTime startTime, int count);        /// <summary>
            /// 读取数据库中接收短信的总条数
            /// </summary>
            /// <returns></returns>
            [OperationContract]
            int ReadSMSCount();
        }
    [ServiceContract(CallbackContract = typeof(ISMSCallback))]
        public interface ISMSListenerServices
        {
           /// <summary>
           /// 注册监听短信到来事件
            /// </summary>
            [OperationContract(IsOneWay = true)]
            void RegisterListener();        /// <summary>
            /// 取消监听
            /// </summary>
            [OperationContract(IsOneWay = true)]
            void UnRegisterListener();
     }
    在同一客户端用tcp方式调用的时候总是出现通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。的错误。
    初学WCF 谢谢大家的回答