如何让一个COM+对象单实例,急,在线等,问题解决多加100分

wzg1031 2006-12-18 03:17:51
想用一个COM+对象实现数据库访问的功能,业务对象创建数据访问对象通过它来与数据库交互。在使用过程中,发现对于每个业务对象都会产生一个单独的数据访问对象,这样的话,占用资源比较多,我希望每于每个请求都共用一个数据访问对象的实例,而不对于每个请求都生在一个实例。

请各位有此经验的大哥们,帮帮忙了。
...全文
224 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
GARNETT2183 2006-12-19
  • 打赏
  • 举报
回复
使用单例模式。。。去查查模式设计的这一章吧。。。
dabaicai 2006-12-19
  • 打赏
  • 举报
回复
我们原来做的时候也是用一个ADOConnection的,没遇到什么特别的问题,因为它仅仅是一个连接,线程应该也不会有问题

另外对于单实例的问题(好像你上面的问题解决了,就没有这个问题了,呵呵),在C++/C#类中由于有静态这个概念,比较好办,在delphi中,没有试过,不敢乱说啊
wzg1031 2006-12-19
  • 打赏
  • 举报
回复
附带问一个问题:一个套间如果是STA,那么那个套间有且只有一个线程和其关联.此处的"一个线程"指的是同一个线程吗,还是只能和一个线程关联(即多个线程,并不要求是同一个线程)
wzg1031 2006-12-19
  • 打赏
  • 举报
回复
楼上各位所说的单实例,其实在Jave和C++中是好实现,因为有静态变量的概念,在delphi中没有静态变量的概念,另外我觉得如果要实现单实例,并且允许多线程访问的话,只能在MTA,NA中实现,用STA我觉得根本就不能实现单实例.
wzg1031 2006-12-18
  • 打赏
  • 举报
回复
to:yi10000()
能说具体点吗?

我现在的做法是用一个MtsDM做数据访问接口,做成一个单独的COM+对象,里面提供查询,增,删,改等与数据库操作相关的操作。
yi10000 2006-12-18
  • 打赏
  • 举报
回复
你可以统一数据库输入和输出接口,都在一个Com+中实现就可以了
wzg1031 2006-12-18
  • 打赏
  • 举报
回复
to:dabaicai(不再做菜鸟)
你说的“一般情况下其他的操作都是在一个连接访问上完成的”,这个不会出现问题吗?每个线程如果用一个ADOConnection不行吧,不能保证线程安全啊。请具体说说你的方法。还有单例在COM+中的实现谢谢

to:wizardqi(男巫)
用对象池是可以实现。用对象池有什么要注意的吗?请指点
wizardqi 2006-12-18
  • 打赏
  • 举报
回复
这个应该简单呀,如果是COM+的话你可以使用Neutral模型,将Pooling数量设为固定值即刻节约资源.
dabaicai 2006-12-18
  • 打赏
  • 举报
回复
怎么实现单实例,看看设计模式里面的单一模式就知道了
对于你的情况,该怎么使用,要考虑清楚,一般情况下其他的操作都是在一个连接访问上完成的

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧