1. 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创建和销毁昂贵相关推荐

  1. 《Effective Java》学习笔记 第二章 创建和销毁对象

    第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...

  2. java创建和销毁一个对象_有效的Java –创建和销毁对象

    java创建和销毁一个对象 创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函 ...

  3. unity创建和销毁对象_如何创建和销毁对象

    unity创建和销毁对象 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它 ...

  4. 有效的Java –创建和销毁对象

    创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函数的一些优点: 工厂方法的名 ...

  5. [Effective Java]第二章 创建和销毁对象

    第一章      前言 略... 第二章      创建和销毁对象 1.            考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Bool ...

  6. swift中单例的创建及销毁

    最近项目重构时使用了oc和swift的混编,遇到了关于单例的创建及销毁,这里记录一下 //创建单例private static var _sharedInstance: ViewController? ...

  7. QWidget一生,从创建到销毁事件流

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流     本文地址:http://techieliang ...

  8. 函数调用过程详解:函数栈帧的创建与销毁

    前言:我们在学习C语言的过程中,可以会产生很多疑问,比如: 局部变量是怎么创建的 为什么局部变量的值不做初始化就是随机值 函数是怎么传参的?传参的顺序是怎么样的? 形参和实参是什么关系? 函数调用是怎 ...

  9. 《Effect Java》学习笔记1———创建和销毁对象

    第二章 创建和销毁对象 1.考虑用静态工厂方法代替构造器 四大优势: i. 有名称 ii. 不必在每次调用它们的时候都创建一个新的对象:   iii. 可以返回原返回类型的任何子类型的对象: JDBC ...

最新文章

  1. 计算机网络-网络层(一)
  2. 好用的NSPredicate
  3. php7与php5的区别,PHP7和PHP5区别
  4. linux环境下ntp客户端,多种操作系统NTP客户端配置
  5. 《从零构建前后分离的web项目》准备 - 前端了解过关了吗?
  6. 迈向万亿市场的直播电商
  7. MYSQL临时表创建索引
  8. 【原型设计】第二节:Axure RP9制作自己的元件库的操作教程
  9. mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
  10. python3.6安装pip3_python3.6如何安装pip
  11. Spring源码解析
  12. lmi克罗内克积 matlab_行正交矩阵的分层克罗内克积扩大法
  13. 在 uniapp 中使用阿里图标
  14. 流行于大学里的30个脑筋急转弯
  15. 图片切换马赛克动画效果
  16. MOT 指标汇总 (详讲 说明 含义 )
  17. php增加sqlserver扩展
  18. includes()的用法
  19. Tecohoo VD-206全高清视频会议摄像机
  20. 直接建内网穿透服务器替换TeamViewer和向日葵可以实现远程操控

热门文章

  1. is 和 == 以及 编码和解码
  2. [快速数论变换 NTT]
  3. jquery 使用animate来改变高度自动添加样式overflow:hidden的问题
  4. POJ 2455 Secret Milking Machine (二分+无向图最大流)
  5. 域名查询精灵V1.0 我写的软件,大家多多提建议
  6. jquery easyui datagrid 分页 详解
  7. html语言中span,html元素span标签的使用方法及作用
  8. acwing yxc总结时间算法复杂度
  9. c语言程序设计实验教学,C语言程序设计实验教学改革研究
  10. matlab 读取csv_利用Pytorch进行数据加载1--CSV文件的读取和显示