ChannelFactory创建和销毁昂贵
- involves内部创建ChannelFactory<T>,每个proxy都持有一个ChannelFacotry的private field。ChannelFactory的生命周期由proxy完全控制。
- 构造ContractDescription树
- 反射所有需要的CLR类型
- 构造channel stack
- dispose所有的资源
在3.0SP1和3.5下两个主要的性能提升:
- ChannelFacotry缓存在ClientBase<T>里
- Channel管理逻辑改进
改进:
核心:ClientBase<T>的性能提升依靠缓存ChannelFactory对象
ChannelFacotry的生命周期不在被proxy控制,使用MRU cache(most recently used)。cache size为32(固定的)
· In the constructor of ClientBase<T>, a lookup is performed to find amatched ChannelFactory in the cache.
· If found, the ref-count of the ChannelFactory is incremented. Otherwise, a new ChannelFactory is created based on the settings.
· Before the inner channel (the transparent proxy) of ClientBase<T> is created, the caching logic for the current ClientBase<T> can be disabled if other public properties (such as ChannelFactory, Endpoint, and ClientCredentials) are accessed.
· Once the innerchannel if created successfully, the ChannelFactory object for the ClientBase<T> is added to the cache if it’s not grabbed from the cache and caching is not disabled.
转载于:https://www.cnblogs.com/fanweixiao/archive/2010/05/12/1733613.html
ChannelFactory创建和销毁昂贵相关推荐
- 《Effective Java》学习笔记 第二章 创建和销毁对象
第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...
- java创建和销毁一个对象_有效的Java –创建和销毁对象
java创建和销毁一个对象 创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函 ...
- unity创建和销毁对象_如何创建和销毁对象
unity创建和销毁对象 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它 ...
- 有效的Java –创建和销毁对象
创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函数的一些优点: 工厂方法的名 ...
- [Effective Java]第二章 创建和销毁对象
第一章 前言 略... 第二章 创建和销毁对象 1. 考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Bool ...
- swift中单例的创建及销毁
最近项目重构时使用了oc和swift的混编,遇到了关于单例的创建及销毁,这里记录一下 //创建单例private static var _sharedInstance: ViewController? ...
- QWidget一生,从创建到销毁事件流
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流 本文地址:http://techieliang ...
- 函数调用过程详解:函数栈帧的创建与销毁
前言:我们在学习C语言的过程中,可以会产生很多疑问,比如: 局部变量是怎么创建的 为什么局部变量的值不做初始化就是随机值 函数是怎么传参的?传参的顺序是怎么样的? 形参和实参是什么关系? 函数调用是怎 ...
- 《Effect Java》学习笔记1———创建和销毁对象
第二章 创建和销毁对象 1.考虑用静态工厂方法代替构造器 四大优势: i. 有名称 ii. 不必在每次调用它们的时候都创建一个新的对象: iii. 可以返回原返回类型的任何子类型的对象: JDBC ...
最新文章
- 计算机网络-网络层(一)
- 好用的NSPredicate
- php7与php5的区别,PHP7和PHP5区别
- linux环境下ntp客户端,多种操作系统NTP客户端配置
- 《从零构建前后分离的web项目》准备 - 前端了解过关了吗?
- 迈向万亿市场的直播电商
- MYSQL临时表创建索引
- 【原型设计】第二节:Axure RP9制作自己的元件库的操作教程
- mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
- python3.6安装pip3_python3.6如何安装pip
- Spring源码解析
- lmi克罗内克积 matlab_行正交矩阵的分层克罗内克积扩大法
- 在 uniapp 中使用阿里图标
- 流行于大学里的30个脑筋急转弯
- 图片切换马赛克动画效果
- MOT 指标汇总 (详讲 说明 含义 )
- php增加sqlserver扩展
- includes()的用法
- Tecohoo VD-206全高清视频会议摄像机
- 直接建内网穿透服务器替换TeamViewer和向日葵可以实现远程操控
热门文章
- is 和 == 以及 编码和解码
- [快速数论变换 NTT]
- jquery 使用animate来改变高度自动添加样式overflow:hidden的问题
- POJ 2455 Secret Milking Machine (二分+无向图最大流)
- 域名查询精灵V1.0 我写的软件,大家多多提建议
- jquery easyui datagrid 分页 详解
- html语言中span,html元素span标签的使用方法及作用
- acwing yxc总结时间算法复杂度
- c语言程序设计实验教学,C语言程序设计实验教学改革研究
- matlab 读取csv_利用Pytorch进行数据加载1--CSV文件的读取和显示