转 WCF中同步和异步通讯总结
我这样分个类: WCF中, 以同步、异步角度考虑通讯的方式分为四种:跨进程同步、跨进程异步、发送队列端同步、发送队列端异步。之所以造成这样的结果源于两个因素,一个是传统概念上的同异步,一个是对于WCF方法自定义属性OperationContract中IsOneWay是True还是False的选择。
记住下面的结论:
1:IsOneWay配置为False
当一个WCF服务方法IsOneWay配置为False时,当你用同步方法调用它时,他就是“跨进程同步”的,你的当前线程最终会被设置为等待,直到对方执行完毕或者抛出异常,将执行完的信息返回调用端后,你的当前线程才能被恢复,从而继续执行,对应的异步方法是与他的同步方法对应的,这不用多说。
2:IsOneWay配置为True
当一个WCF服务方法IsOneWay配置为True时(注意:只能设置在没有返回值的方法上),当你用同步方法调用它时,它就是“发送队列端同步”的,你的当前线程同样最终会被设置为等待,但只要能在一定的时间内和对方正确连接上,并将方法参数无误的发过去,你的当前线程便会恢复执行,而不需等待对方任何执行结果(什么结果?执行完毕或者异常信息),同样,“发送队列端异步”也是与之对应的,这也不用多说。”
例子代码我实在没时间写了,希望对此感兴趣的自己去建个例子,自己试验试验。WCF虽然上手容易,不过涉及的东西其实很多,在实际开发的时候你会时不时遇到各种“意想不到”的意外,所以平时就关注一些细节问题显得很重要。
ps:现在不知道这个等待是可以等待多久来返回值,期间是否一直需要连接?
转 WCF中同步和异步通讯总结的更多相关文章
- WCF的同步和异步(以WPF连接为例)
2016-06-0711:05:44 在学习WCF时,学到WCF服务的同步和异步. 我理解的同步是: 当WCF服务是同步执行时,程序只有一条线程,代码只能按顺序一步一步来执行,当执行客户端/服务端某方 ...
- IO中同步、异步与阻塞、非阻塞的区别
一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ...
- IO中同步、异步与阻塞、非阻塞的区别(转)
转自:http://blog.chinaunix.net/uid-26000296-id-3754118.html 一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步, ...
- HTTP请求中同步与异步有什么不同
普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项. 同步:提交请求->等待服务器处理->处理完毕返回.这个期间客户端浏览器不能干任何事. 异步: ...
- 在JavaScript中同步与异步
在JavaScript中,一个线程执行的时候不依靠其他线程处理完毕我们称为异步,相反一个线程必须等待直到另一个线程处理完毕我们则称为同步.打个比方: (1)同步就是你在煮方便面的时候必须等水开了,你才 ...
- Linux中同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
- JS中同步和异步
首先,我们要知道,JavaScript的本质是一门浏览器脚本语言,在执行的时候是一行一行的执行,只有前面的代码执行完了才会执行后面的代码.JS是单线程语言指的就是这个意思. 同步和异步其实在进行任务执 ...
- js中同步与异步处理方法
在使用异步请求时,有时需要将异步请求的结果返回给另一个js函数,此种情况下会出现未等异步请求返回请求结果,该发送请求所在js函数已经执行完后续操作,即已经执行return ,这样会导致return的结 ...
- iOS:对GCD中 同步、异步、并行、串行的见解
1.GCD-同步执行多线程时 GCD中不管向什么类型的队列加同步任务,实际上都会加到当前线程中(一般为主线程). 2.GCD-异步执行多线程时 GCD中不管向什么类 ...
随机推荐
- Spring Boot的SpringApplication类详解
相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生.SpringApplication类的run()方法往往在Sprin ...
- entest1
1◆ ai I 2◆ ai I ir ɜː ie i: 3◆ u: ʌ ɜː ə ui u: ure ʊə
- adobe flash player不是最新版本
adobe flash player不是最新版本
- Python Django 前后端数据交互 之 HTTP协议下GET与POST的区别
99%的人都理解错了HTTP中GET与POST的区别(转自知乎) 作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转 ...
- Hibernate基于【XML】和【注解】——完整实例
Eclipse中新建Java Project工程: 工程结构 和 需要的Jar包: 我用的SqlServer数据库,所以连接数据库的Jar包是sqljdbc4.jar 一.基于XML配置 1.实体 ...
- L210 Ebola
Progress in fighting Democratic Republic of the Congo's Ebola outbreak, the second worst ever, will ...
- 对抗网络之目标检测应用:A-Fast-RCNN
对抗网络之目标检测应用:A-Fast-RCNN 论文:A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection ...
- HDU 1501 Zipper(DFS)
Problem Description Given three strings, you are to determine whether the third string can be formed ...
- 玩转TypeScript(引言&文章目录) --初看TypeScript.
JavaScript过去一直被当作一种玩具语言存在,直到2005年以后,这门语言又开始活跃并可以说是火爆,而且随着浏览器版本的不断升级和完善,各种DOM之间的兼容性已经渐渐的被各种技术解决了,比如经典 ...
- Docker入门讲解
1:容器重命名 [root@Docker ~]#docker run --name test_container -i -t centos /bin/bash[root@3ba67c6cf3f8 /] ...