我这样分个类: WCF中, 以同步、异步角度考虑通讯的方式分为四种:跨进程同步、跨进程异步、发送队列端同步、发送队列端异步。之所以造成这样的结果源于两个因素,一个是传统概念上的同异步,一个是对于WCF方法自定义属性OperationContract中IsOneWay是True还是False的选择。
    记住下面的结论:
    1:IsOneWay配置为False

当一个WCF服务方法IsOneWay配置为False时,当你用同步方法调用它时,他就是“跨进程同步”的,你的当前线程最终会被设置为等待,直到对方执行完毕或者抛出异常,将执行完的信息返回调用端后,你的当前线程才能被恢复,从而继续执行,对应的异步方法是与他的同步方法对应的,这不用多说。

2:IsOneWay配置为True

当一个WCF服务方法IsOneWay配置为True时(注意:只能设置在没有返回值的方法上),当你用同步方法调用它时,它就是“发送队列端同步”的,你的当前线程同样最终会被设置为等待,但只要能在一定的时间内和对方正确连接上,并将方法参数无误的发过去,你的当前线程便会恢复执行,而不需等待对方任何执行结果(什么结果?执行完毕或者异常信息),同样,“发送队列端异步”也是与之对应的,这也不用多说。”
    例子代码我实在没时间写了,希望对此感兴趣的自己去建个例子,自己试验试验。WCF虽然上手容易,不过涉及的东西其实很多,在实际开发的时候你会时不时遇到各种“意想不到”的意外,所以平时就关注一些细节问题显得很重要。

ps:现在不知道这个等待是可以等待多久来返回值,期间是否一直需要连接?

转 WCF中同步和异步通讯总结的更多相关文章

  1. WCF的同步和异步(以WPF连接为例)

    2016-06-0711:05:44 在学习WCF时,学到WCF服务的同步和异步. 我理解的同步是: 当WCF服务是同步执行时,程序只有一条线程,代码只能按顺序一步一步来执行,当执行客户端/服务端某方 ...

  2. IO中同步、异步与阻塞、非阻塞的区别

    一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ...

  3. IO中同步、异步与阻塞、非阻塞的区别(转)

    转自:http://blog.chinaunix.net/uid-26000296-id-3754118.html 一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步, ...

  4. HTTP请求中同步与异步有什么不同

    普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项. 同步:提交请求->等待服务器处理->处理完毕返回.这个期间客户端浏览器不能干任何事. 异步: ...

  5. 在JavaScript中同步与异步

    在JavaScript中,一个线程执行的时候不依靠其他线程处理完毕我们称为异步,相反一个线程必须等待直到另一个线程处理完毕我们则称为同步.打个比方: (1)同步就是你在煮方便面的时候必须等水开了,你才 ...

  6. Linux中同步与异步、阻塞与非阻塞概念以及五种IO模型

    1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...

  7. JS中同步和异步

    首先,我们要知道,JavaScript的本质是一门浏览器脚本语言,在执行的时候是一行一行的执行,只有前面的代码执行完了才会执行后面的代码.JS是单线程语言指的就是这个意思. 同步和异步其实在进行任务执 ...

  8. js中同步与异步处理方法

    在使用异步请求时,有时需要将异步请求的结果返回给另一个js函数,此种情况下会出现未等异步请求返回请求结果,该发送请求所在js函数已经执行完后续操作,即已经执行return ,这样会导致return的结 ...

  9. iOS:对GCD中 同步、异步、并行、串行的见解

    1.GCD-同步执行多线程时          GCD中不管向什么类型的队列加同步任务,实际上都会加到当前线程中(一般为主线程). 2.GCD-异步执行多线程时          GCD中不管向什么类 ...

随机推荐

  1. memory prefix retro,re out 2

    1● retro retr əu 向后,倒退     2● re 重新,一再,   不,反向后

  2. Excel中输入身份证后3位变成0,怎么办?

    1.问题介绍: 1)问题: 在使用excel输入身份证号时,会发现直接输入数字后最后面的三位数字都变成0了,这可怎么办呢?

  3. SecureCRT的脚本+快捷键设置

    场景描述: 每次输入命令对远程svn进行提交非常麻烦,原来SecureCRT有脚本录制函数,类似于Excel的宏录制. 解决方法: 在菜单=>script=>start recording ...

  4. c++ 发送消息,模拟拖拽文件

    #include <ShlObj.h> BOOL SimulateDropFile(CString strFilePath) { }; wcstombs(szFile, strFilePa ...

  5. PHP:第一章——PHP中的魔术常量

    <?php //__LINE__输出常量所在的行 //echo __LINE__; //2.__FILE__常量返回文件的完整路径和文件名; //echo __FILE__; //3.__DIR ...

  6. learning shell args handing key=value example (2)

    Shell args handing key=value example [Purpose]        Learning how to handing ker=value args   [Eevi ...

  7. Delphi 项目 结构 文件夹 组织

    Delphi Project Structure Folder Organization http://delphi.about.com/od/delphitips2008/qt/project_la ...

  8. KMP 详解图

  9. DevExpress v18.1新版亮点——WinForms篇(二)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...

  10. anu - reactShime

    import { Component } from "./Component"; import { options } from "./util"; impor ...