高手请看:怎样让组件的多个实例共享同一个数据缓存(200分)

  • 主题发起人 主题发起人 dongdacun
  • 开始时间 开始时间
D

dongdacun

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi做了一个COM Dll组件供ASP调用,组件主要实现数据库访问功能,由于有很
多基础数据对所有的浏览器客户端都是相同的,所以我想将这部分数据在组件中以
TClientDataSet的格式缓存起来,避免重复访问数据库。但是由于每个客户端请求
组件接口都会创建组件的一个实例,所以组件各个实例运行在不同的内存控件,而我
显然不能在组件的每个实例中都创建一个数据缓冲区,而希望所有的组件实例共享一
个数据缓存,应该怎么一个思路,请各位高手指点。
 
可以用mts来实现date pooling,
李维的书有例子的
 
请继续或结束 请提问者20天内至少把自己的问题提前一次 否则你的问题被压在
最后是不会被注意的
如果实在不行 就用文件映射对象建立全局公共变量 但如何防止访问冲突我也
在提问中。。。
 
用Shared Property或者用Singleton.
 
同意HongJiang。
具体来说,可以使用MTS/COM+环境中的SharedPropertyGroup机制,它允许你共享一些数据。
步骤:1)取得SPM对象;
2)使用SPM对象建立一个SharedPropertyGroup对象
3)在这个SharedPropertyGroup中建立任意的SharedProperty对象来存放数据。
方法:1)在Uses中添加MTX单元
2)使用CreateSharedPropertyGroupManager方法创建接口
3)使用CreateSharedPropertyGropup(Const Name: WideString)创建SharedPropertyGroup
4)使用SharedPropertyGroup对象的CreateProperty方法来创建要保存的数据。
在李维的《ADO/MTS/COM+高级程序设计篇》中有详细论述。
 
结束了!
时间太久
 
后退
顶部