WCF 第五章 一个单一实例中的多线程

2023-11-13

默认的InstanceContextMode行为设置指导WCF为每个请求创建一 个新的服务实例。然后在很多情况下,这不是最好的解决方案。例如,如果一个服务有一个代价很高的例行初始化(比如,一个构造器从一个数据库读取数据或者创 建一个大的内存结构),它对每个服务请求的实例创建都不是很高效。为了创建一个被当前线程共享的单一服务实 例,InstanceContextMode.Single应该与ConcurrencyMode.Multiple结合使用。 InstanceContextMode.Single意味着只能有一个实例被创建,而ConcurrencyMode.Multiple设置指导WCF 在那个实例中同时执行多个线程。这可以提供一个重要的扩展性改进,但是服务代码必须处理同步来保护TLS(本地线程空间)。
  列表5.3显示了使用InstanceContextMode.Single和ConcurrencyMode.Multiple 行为的服务端代码。注意在类上的ServiceBehavior属性,不是接口。这是因为ServiceBehavior属性修改了服务行为,而不是它的 契约。
  列表5.3使用InstanceContextMode.Single和ConcurrencyMode.Multiple的服务
01 [ServiceContract]
02 public interface IStockService
03 {
04     [OperationContract]
05     double GetPrice(string ticker);
06 }
07  
08 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
09 public class StockService : IStockService
10 {
11     StockService()
12     {
13         Console.WriteLine("{0}:Created new instance of StockService on thread", DateTime.Now);
14     }
15     public double GetPrice(string ticker)
16     {
17         Console.WriteLine("{0}: GetPrice called on thread {1}", DateTime.Now, Thread.CurrentThread.ManagedThreadId);
18         Thread.Sleep(5000);
19         return 94.85;
20     }
21 }
  图片5.3显示了客户端(左边)和服务端(右边)的输出结果。与先前的例子一样,客户端输出显示三个请求同步发送而且结果在5秒钟后返回。 服务端输出显示只有一个服务类的实例被创建,但是客户端请求仍然在它自己的线程中执行。InstanceContextMode.Single指导WCF 只创建一个服务类的实例,而ConcurrencyMode.Multiple设置指导WCF允许多个线程在实例中并发的执行。


=============

转载自

 

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 第五章 一个单一实例中的多线程 的相关文章

随机推荐

  • 【C#学习笔记】函数重载

    using System namespace ConsoleApplication class Program static void Print int a int b Console Write a b static void Prin
  • uniapp 即时通讯_uni-app app mqtt 实现消息通讯

    背景 使用uni app 打包 app 适用很多版本 mqtt 支持H5端 但是app端并不支持 资料 mqttws31 js mqttws31 js 其实是 paho mqtt 的早期版本 vue 无法直接引入 mqttws31 js 所
  • 把服务器sql数据库导出excel文件,从sql中导出到excel表格数据-如何把SQLServer表数据导出为Excel文件...

    从数据库导出到excel表格时怎样修改excel表格的日 这个用导出的功能不行的 它会把所有的数据全导到excel的第一列中 可以说没有使用价值的 另一个方法是复制 应为默认的复制是不复制表头的 你只要把 工具 选项 查询结果 SQL se
  • mysql视图

    1 视图 视图 View 是一种虚拟存在的表 视图就是一条SELECT语句执行后返回的结果集 视图相对于普通的表的优势 简单 使用视图的用户完全不需要关心后面对应的表的结构 关联条件和筛选条件 对用户来说已经是过滤好的复合条件的结果集 安全
  • 数字电路设计之verilog的define和parameter

    1 语法定义 parameter xx yy define xx yy 注 句尾无分号 2 作用范围 parameter 作用于声明的那个文件 define 从编译器读到这条指令开始到编译结束都有效 或者遇到 undef命令使之失效 后来我
  • 【小任务】.csv及数据处理

    1 任务描述 任务描述 本次任务要处理的数据共101227行 样例如下 txt 18 Jogging 102271561469000 13 53 16 89 6 4 18 Jogging 102271641608000 5 75 16 89
  • 深度学习学习率

    目录 1 什么是学习率 2 学习率对网络的影响 3 学习率的设置 3 1 分段常数衰减 Piecewise Decay 3 2 指数衰减 Exponential Decay 3 3 自然指数衰减 Natural Exponential De
  • 【tensorflow】AttributeError: module ‘tensorflow._api.v1.compat‘ has no attribute ‘v1‘

    2020年2月4日 0次阅读 共232个字 0条评论 0人点赞 QueenDekimZ tensorflow slim python object detection builders model builder test py 出现报错
  • 快速学会git版本管理——上传gitee仓库

    首先在gitee右上角有一个新建仓库 创建之后打开自己想要上传的文件 右键打开 Git Bash Here 接下来会弹出git的窗口 首先先初始化仓库 用git命令 git init 然后用git add 上传所有文件上传到暂存区 上一篇文
  • 刷脸支付优化用户体验赋能商家运营

    从前我们还在说以后要是能靠脸吃饭就好了 时至今日刷脸支付的到来 真正的可以实现靠脸吃饭了 刷脸支付用户两年或超7 6亿 2022年中国刷脸支付用户规模将突破7 6亿 刷脸支付同时具备优化用户体验和赋能商家运营的作用 在各大平台加速推广的情况
  • springboot整合jett实现模板excel数据导出

    一 jett的介绍 1 1 介绍 jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具 1 2 使用方式 1 使用 来标识我们需要填充的数据 2 使用
  • 多个版本的python共存,以及怎么使用不同版本的pip

    一 安装2 7 3 6 8 3 8 5三个版本的python 安装过程略 注意 添加上环境变量就行 二 实现多版本共存 1 修改python2的文件名 进入Python2 7安装目录找到如图内容 把python exe重命名为python2
  • redis中hash表内容删除的方法代码

    hash Redis hash是一个string类型的field和value的映射表 hash特别适合用于存储对象 Redis 中每个hash可以存储 232 1键值对 40多亿 实例 127 0 0 1 6379 gt HMSET run
  • 毕业设计-基于BP神经网络预测系统的设计- MATLAB

    目录 前言 课题背景和意义 实现技术思路 一 神经网络 三 图形用户界面的实现 四 神经网络预测系统的设计 五 神经网络预测系统的性能和特点 部分源代码 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业
  • vue开发调试

    1 调试方式 1 1 为什么调试 当遇到应用逻辑出现错误 但又无法准确定位的时候 同后台项目开发一样 可以在JS实现的应用逻辑中设置断点 并进行单步 进入方法内 跳出方法等调试 从而准确定位问题根源 1 2 调试方法 本文主要讲两种方式 d
  • Linux系统安装配置curl

    1 获得安装包 从网上直接下载或者其他途径 这里直接wget wget http curl haxx se download curl 7 20 0 tar gz 2 解压到当前目录 或者 http www linuxidc com Lin
  • 贝叶斯方法应用:检测时间序列拐点

    随着时间推移 制造设备比如贴片机的位置由于各种原因会产生小的偏差 这些偏差可能是阶跃 也有可能是渐变的形式 由于偏差值很小 产线的自动光学检测设备并不会报警 然而小的偏差如果不经处理 经过一定时间累积会产生较大偏差 影响产品质量 为了能够提
  • 最好看的代码雨特效

    上代码
  • 2010年10大热门的开源NoSQL服务器软件

    NoSQL 就是反SQL 是一项全新的数据库革新运动 特别是在 2010 年得以迅猛发展 而各种开源的 NoSQL 软件突然间涌现在你面前 目前似乎没有对 NoSQL 给出一个标准的定义 也没有相应的规范 但从这些软件可以看出 NoSQL
  • WCF 第五章 一个单一实例中的多线程

    默认的InstanceContextMode行为设置指导WCF为每个请求创建一 个新的服务实例 然后在很多情况下 这不是最好的解决方案 例如 如果一个服务有一个代价很高的例行初始化 比如 一个构造器从一个数据库读取数据或者创 建一个大的内存