WCF服务实例的并发模式是在服务实现类上,使用 ServiceBehaviorAttribute 的 ConcurrencyMode 属性来指定.其值由 ConcurrencyMode 枚举来界定,这个枚举只有三个值: Single——服务实例只在单个线程上运行,如果服务是单个实例,那么同一时间只有一个传入的调用被接收,其他调用请拿票排队. Multiple——这个好理解,服务实例支持多个线程同时调用,所以状态数据可能会不同步(单个服务实例),如果某些变量担心被其他线程意外修改,可以适合地 lo…
1. ReentrantLock简介 jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock.虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景. 2. ReentrantLock和synchronized的相同点 2.1 ReentrantLock是独占锁且可重入的 例子 public class Reentr…
对于线程重入,在C#中有lock关键字锁住一个SyncObject,而SQL Server也可用一个表来模拟实现. 先创建一个同步表,相当于C#中的SyncObject,并插入一条记录(初始值为1) create table SyncTable(id bit) go ) 然后假设有个存储过程,有一系列操作,需要防止多线程同时访问到,可以这样写.   SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create PROCEDURE Proc_Tes…
可重入和不可重入 的基本概念 ---简介--- 可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误:而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的. 重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括sta…
以下内容转自http://ifeve.com/reentrance-lockout/: 重入锁死与死锁和嵌套管程锁死非常相似.锁和读写锁两篇文章中都有涉及到重入锁死的问题. 当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死.可重入的意思是线程可以重复获得它已经持有的锁.Java的synchronized块是可重入的.因此下面的代码是没问题的: (译者注:这里提到的锁都是指的不可重入的锁实现,并不是Java类库中的Lock与ReadWriteLock类) public cl…
原文链接:http://www.cr173.com/html/19026_1.html 国外的一篇文章:Sharing DataContracts between WCF Services 文中提到的AutoMapper的两个相关链接:AutoMapper完成Dto与Model的转换.AutoMapper使用笔记 调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Service2.User,对于C#…
不说废话,直接上代码.以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Service Contract),即:定义一个服务接口 using System.ServiceModel; namespace WcfServiceLibrary1 { [ServiceContract(Namespace="http://www.zuowenjun.cn")] public in…
问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapUI输入用户名和密码调用接口调试. 解决方案: 1.建立IIS站点a,指向--src\WCF(右键项目名称->在文件资源管理器中打开文件夹,直接复制该打开的文件夹路径,建立站点,指向该路径) 2.设置站点a的IP为127.0.0.1 ,端口随便,无冲突即可 3.在IIS站点中找到服务所在,如"S…
1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 4.WCF服务文件建好后,系统会添加一个App.config的文件,打开此文件,我们进行相应的修改. 我们修改baseAddress地址: <add baseAddre…
并发 Single重入模式.对于每一个服务实例,同一时刻只能处理一个请求,其他对该实例的请求被排队. PerCall,每一线程会分配一个新的服务实例上.不会有并发性问题.不影响吞吐量. PerSession,保护服务实例不会受到多线程客户端的影响.多客户端可以并发访问,无并发性问题.减少单一客户端吞吐量. Singleton, 实例不受任何并发访问影响.多线程和多客户端都无法并发访问.吞吐量最小. Retrant重入模式. 客户端可以对同一服务实例,可以进行第2次或者多次的请求进入. 单线程,用…