zoukankan      html  css  js  c++  java
  • C# WCF


    wcf模式分为单工、双工、半双工三种模式

    1. Tcp服务-双工

    服务端

    双工定义:客户端 访问 服务器方法 回调 客户端方法

    服务端接口类:IChatService

    • 服务器添加回调接口类IChatServiceCallBack ,定义回调方法

          public interface IChatServiceCallBack
          {
              [OperationContract]
              void HelloClient(string msg);
          }
      
    • 签订回调契约:该契约签订在服务器接口类上方,接口方法中可以调用已经签订签约的回调方法

          [ServiceContract(CallbackContract =typeof(IReportServiceCallback))]
          public interface IChatService
          {
              [OperationContract]
              void HelloServer(string msg);
          }
      

    服务端继承接口类:ChatService : IChatService

    • 签订服务行为:实现接口的类需要声明服务行为

      [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
      
    • 回调

      public void HelloServer(string msg)
      {
          Console.WriteLine(msg);
          OperationContext.Current.GetCallbackChannel<IChatServiceCallBack>().HelloClient("SayHello from server");
      }
      

    客户端

    • 添加Wcf服务引用

    • 继承回调接口并且实现

    public void HelloClient(string msg)
    {
        textBox1.Text = msg;
    }
    
    • 回调函数声明

      [CallbackBehavior(UseSynchronizationContext = false)]

    • 调用服务器接口

      InstanceContext instanceContext = new InstanceContext(this);
      ChatServiceClient client = new ChatServiceClient(instanceContext);
      client.HelloServer("Sayhello from Client");
      

    2. WCF解决(413) Request Entity Too Large

    传输内容过大, wcf数据传输采用的默认的大小是65535字节

    • 服务端配置
    <system.serviceModel>
      <bindings>
        <basicHttpBinding>
          <!--设置 关闭超时 接收超时 发送超时 传送最大字节数  -->
          <binding   closeTimeout="00:10:00" receiveTimeout="00:20:00" sendTimeout="00:20:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
        </basicHttpBinding>
      </bindings>
    <system.serviceModel>
    
    • 客户端配置
    <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IService">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </binding>
          </basicHttpBinding>
        </bindings>
    <system.serviceModel>    
    
  • 相关阅读:
    Idea安装Scala插件(转)
    serialVersionUID的作用(转)
    [转]学习win10的bash使用ssh连接远程服务器
    [转]使用 Travis CI 部署你的 Hexo 博客
    【转】H5
    【转】Virtual DOM
    【转】hexo博客图片问题
    【转】V8 之旅: 垃圾回收器
    关于react-redux中Provider、connect的解析
    【转】webpack4
  • 原文地址:https://www.cnblogs.com/tangpeng97/p/14343830.html
Copyright © 2011-2022 走看看