zoukankan      html  css  js  c++  java
  • 谈谈异步请求吧

    第一种呢,就是“双工模式”了

    如果终结点绑定类型是“wsHttpBinding”就要改下啦, 改成“wsDualHttpBinding”, 还有就是 

    服务行为别忘了哦: [ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple)]

    来来来 (~o ̄▽ ̄)~o 添加个服务先

     1 public void Register(string name, string pass)
     2 {
     3     ICallBackContract callBack = OperationContext.Current.GetCallbackChannel<ICallBackContract>();
     4     if (name.Length < 6 || pass.Length < 6)
     5     {
     6          callBack.Reply("1");
     7     }
     8     else
     9     {
    10         callBack.Reply("0");
    11     }
    12 }        

    come on,首先跟普通的服务约定一样,要先定义一个回调模板。不过呢,不需要实现,因为实现是客户端的事

    1 namespace ServiceLib.CallBackContract
    2 {
    3     [ServiceContract]
    4     public interface ICallBackContract
    5     {
    6         [OperationContract]
    7         void Reply(String message);
    8     }
    9 }

    然后呢,就是客户端实现这个接口咯

     1 namespace Client.ClientCalcBack
     2 {
     3     class MyCallBack:ICalcServiceCallback
     4     {
     5         public void Reply(string msg)
     6         {
     7             if (msg == "0")
     8                 Console.WriteLine("注册成功");
     9             else if (msg == "1")
    10                 Console.WriteLine("注册失败,用户信息不符合要求");
    11             else
    12                 Console.WriteLine("错误信息:" + msg);
    13         }
    14     }
    15 }

    最后就是消费这个服务了

    1 InstanceContext callBack = new InstanceContext(new MyCallBack());
    2 CalcServiceClient service = new CalcServiceClient(callBack, "WSDualHttpBinding_ICalcService");
    3 String name, pass;
    4 Console.WriteLine("Please input name:");
    5 name = Console.ReadLine();
    6 Console.WriteLine("Please input pass:");
    7 pass = Console.ReadLine();
    8 service.Register(name, pass);

    (-。-;) 这个算不算异步呢?

    第二种 客户端异步调用

    我用的是VS2013社区版,然后呢,它默认生成异步方法(基于任务的操作)

    直接使用就可以啦

    1 var t = service.WelComeAsync(name);
    2 t.ContinueWith(task => Console.WriteLine(task.Result));

    参考链接:基于通道什么的

    至于另外一种异步和服务端异步处理等想起来再补上吧 (●ˇ∀ˇ●)

  • 相关阅读:
    ajax传json
    JSON 转 VO
    字符串转数组
    "No 'Access-Control-Allow-Origin' header"跨域问题CROS
    jdbc连接SQLServer
    Jquery判断checkbox选中状态
    JSON与null
    点击劫持
    Eclipse 入手配置
    SQL练习(一)
  • 原文地址:https://www.cnblogs.com/hualongbei/p/4154134.html
Copyright © 2011-2022 走看看