博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF 第五章 行为 事务之事务服务行为
阅读量:6836 次
发布时间:2019-06-26

本文共 1669 字,大约阅读时间需要 5 分钟。

定义在操作层的行为TransactionScopeRequired和TransactionAutoComplete在这一章的先前部分描述 了。在服务层,有两个额外的行为需要考虑: TransactionIsolationLevel和TransactionTimeout.

  TransactionIsolationLevel属性,正如名字所暗示的,影响事务的隔离级别。隔离是指ACID中的I并指导事务如何与其周围环境隔 离。有很多隔离级别。Serializable,默认情况下,提供最高级别的隔离并阻止其他部分在事务完成前更新数据。例如,如果事务中包含了一条 “select count(*) from orders”语句,没有其他进程可以在事务完成前对orders表插入或者删除任何数据。ReadUncommitted提供了最低级别的隔离,允许任 何其他进程在事务完成前对一条事务正在更新的数据进行读取或者写入。在实际应用中,最好是将隔离级别保留成默认值,Serializable,对应的,避 免事务锁住非必须的数据,就像select (*) from order 这种情况应该避免。

  事务隔离级别在由客户端定义的TransactionScope和由服务行为定义的TransactinIsolationLevel间必须一致。如果没 有一个被设置值,按照默认,IsolationLevel.Serializable会被使用。列表5.22显示了客户端和服务端的设置,每个都是 ReadUncommitted.

  一个事务可能运行的时间也可以被控制。这可以在客户端或者服务端设置,它们的目的不同。在客户端,这可以用来限制一个用户初始化事务操作的运行时间总和。在服务端,这可以由系统管理员设置来确定不可以有更多的事务来使用太多资源。

  在列表5.22中,在客户端TransactionScopeOption.Timeout被设置成30秒,意味着用户自定义事务应该在它运行超过30秒 钟后推出。也在列表5.22中,在服务端ServiceBehavior, TransactionTimeout被设置成1分钟,意味着如果有任何事务运行超过1分钟,它将自动终止。

列表5.22 设置事务隔离级别和超时时间

01 //
02 //Client code
03 //
04 TransactionOptions opt = new TransactionOptions();
05 opt.IsolationLevel = IsolationLevel.ReadUncommitted;
06 opt.Timeout = new TimeSpan(0, 0, 30);
07 using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, opt))
08 {
09     localhost1.BankServiceClient proxy = new Client.localhost1.BankServiceClient();
10     proxy.Transfer("savings", "checking", 100);
11     scope.Complete();
12     proxy.Close();
13 }
1 //
2    //Service code
3    //
4    [ServiceBehavior(TransactionIsolationLevel = IsolationLevel.ReadUncommitted, TransactionTimeout="00:01:00")]
5    public class BankService : IBankService

=====

转载自

作者:
出处:
 

转载于:https://www.cnblogs.com/llbofchina/archive/2011/06/30/2094087.html

你可能感兴趣的文章
如何衡量个人在各自团队的效率和绩效
查看>>
testlink的下载地址
查看>>
通过cell里的UIView获得cell的indexpath
查看>>
【转载】请重新认识你作为程序员的价值
查看>>
canvas 之 - 精灵 钟表动画
查看>>
期末作品检查
查看>>
微软高层:拟改变支付方式 应对盗版问题
查看>>
微软中国:Morro可能将不进入中国市场
查看>>
静态方法、实例方法、继承
查看>>
&和&&的区别
查看>>
yuv和yCbCr的差异
查看>>
引擎设置
查看>>
策略模式
查看>>
log
查看>>
深入浅出 JQuery (一) 浅析JQuery
查看>>
[暴力]JZOJ 5882 雪人
查看>>
对python选修课的感想
查看>>
解决select下拉框禁用(设置disabled属性),后台获取值为空
查看>>
第四周进度条
查看>>
http delete 方法传参数遇到java.net.ProtocolException: DELETE does not support writing的问题...
查看>>