用设计模式与.Net技术实现对象池设计.docVIP

用设计模式与.Net技术实现对象池设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用设计模式与.Net技术实现对象池设计

用设计模式与.Net技术实现对象池设计   摘 要:为有效管理应用程序执行过程中对资源的使用,通过增加对象池,在调用间根据对象状态动态共享实例,降低总体资源占用. 该对象池原型根据.Net平台配置访问对象和缓冲对象的特点,结合状态模式,在抽象可池化对象接口的基础上,实现对池化对象的动态分配与集中管理. 单元测试表明对象池原型可以根据配置,动态构造、重用、超时回收对象实例. 该原型可以为类似模块的设计提供参考.   关键词:.Net;对象池;设计模式   中图分类号:TP311.132.4 文献标志码:A      Design on object pool using design pattern and .Net   WANG Xiang   (Graduate School,Chinese Academy of Sci.,Beijing 100049,China)   Abstract:To manage the resources used by application under execution efficiently,an object pool is used to reduce the total resource usage by sharing object instance between invokes dynamically according to the states of invoked objects. With the .Net configuration and cache types,the prototype implements instance dispatch and centralized management by state pattern and design of pooling object interface. The unit-tests demonstrate that the prototype can dynamically initialize,reuse and recycle timeout instances according to configuration. It can provide reference for the design of similar modules.   Key words:.Net;object pool;design pattern      0 引 言      应用运行过程中经常会根据调用要求,生成指定类型的对象实例.对于复杂类型的频繁构造会消耗较多的系统资源,影响应用运行效率;对于直接与用户交互的业务逻辑对象,由于客户端调用的随机性,为每个会话单独保存对象实例会增加应用逻辑层系统开销.针对上面两种情况,可以设计1个专门管理对象实例的对象池(ObjectPool),由它间接控制对象实例的构造、激活、失效和释放等过程.对象池具有如下运行特性:(1)根据调用动态地生成对象实例;(2)根据已经池化实例的使用情况,将空闲实体直接提供给新的调用,减少重复创建的过程.   此外,随着.Net和Java等具有自动回收机制[1]平台的出现,多数情况下无用实例的回收都由平台自动完成,但由于回收机制运行优先级一般都很低,在密集业务调用过程中常常会因为无法获得执行机会导致系统资源快速膨胀,因此借助对象池的守卫(Guard)控制和实例重用可以比较有效地防止上述情况发生.设计模式[2]描述软件设计过程中某类常见问题的一般性解决方法,其中的创建型模式对于设计对象池管理和创建类型实例有借鉴作用.采用泛型[3]一方面是为了提高对象池的执行效率,尤其当算法参数类型为值型参数时,可以减少重复装箱―拆箱带来的性能损失;另一方面将类型检查提前到编译过程.      1 概要设计      1.1 整体逻辑结构   根据对象池的运行特征,设计上先划分出如图1所示的几个模块.      图 1 对象池的总体结构      通过几个主要模块间的协作,实现运行态的类型实例管理,分工如下:(1)Listener模块用于与客户程序的交互.一方面将客户程序需要使用的类型信息通知Dispatch,另一方面要把加工好的对象实例反馈给客户程序,实现对象池对客户程序的透明.(2)Dispatch模块的主要工作是调度,根据Listener发送的类型要求从ObjectCache中检查是否有已经构造完成但没有激活的实例,如果有则直接把实例反馈给Listener;否则通知ObjectBuilder创建1个实例,在其注册到ObjectCache之后,再反馈给Listener.(3)ObjectBuilder模块根据Dispatch输

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档