急:COM+如何设置COM为即时激活(JIT) ?(很多问题见内)(200分)

  • 主题发起人 主题发起人 cfm001
  • 开始时间 开始时间
C

cfm001

Unregistered / Unconfirmed
GUEST, unregistred user!
我对Delpi/COM+知之不多,只是现学现用;这个问题已烦了我一个星期
了,查了
不少文章也未得要领。因为项目着急,甚至有很多基本概念都未清楚,
临时抱佛
脚(看书)也来不及,只好有劳各位了。
目的:
我想Client创建(获得引用)COM后,COM+不马上激活,
而是在调用方法时再激活,调用完后又激死,以便放入对象池供
其他Client使用。
环境:D7, Win2000 Professional SP3, MS SQL 2000, ADO
应用:Client运行后就创建业务COM(约10个),以便快速调用方法

我的片面或错误理解:
(1)Client创建COM后,COM+未实际创建,Client
调用方法时,COM+才实际创建(或从Pool中取出),这样,
Client创建COM后一直不释放,也不会增加COM+的太大负担。
(2)但Client调用方法速度却加快(不用现创建)。

问题1:
COM对象创建后,在COM+中就处于激活状态,如何设置为即时激活(JIT)?
问题2:
D6/D7关于Just-In-Time的Help中说:
Type Lib Editor->CoClass->COM+页,有JIT的Check项,
而我的D6/D7中却无,请问如何设置?
我对COM+管理中的一些含义不清楚:
Prog标识 对象 已激活 池化 调用中 调用时间
------------------------------------------------
<Security> 1 1 0 0
<COM1> 1 1 0 0
上面是Client创建COM后(还未设置池化), Win2000组件服务(COM+)显
示.
(线程模式:Apartment 或 Rental(同步Neutral))
问题3:
对象:是指Client引用数还是COM+已创建的?
问题4:
已激活:正在运行的?占用一个线程?
问题5:
设置池化后,Client创建后,池化数跟着增加。为何?
问题6:
Client退出后,对象、已激活都为0,再进入,对象、已激活同前,
池化数不变。池化起作用?
问题7:
第2个Client进入,对象、已激活、池化数增加一倍,对象只能为
一个Client服务?
问题8:
Client调用一个方法后(方法中SetComplete/SetAbort),
已激活数变为0,对象数不变,再调用时才激活。这倒符合JIT,
但为什么一创建就激活?
 
你用ISAPI试试看,这个是第一次调入内存后就常驻内存,所以速度奇快!
不过请神容易送神难呀,想要它从内存撤出还要费一番周折!!!
 
to skyon: 多谢! [:)]
我对ISAPI不了解
现在是采用Win2000 + COM + MIDAS
 
1,2。在Win2000组件服务中选取你的Com+组件,在右击菜单中选取属性,在激活中有相关选项
有Just in Time 选项
3。Com+已创建
5。你没有用SertComplete/SetAbort释放
6。池化,即是对象并不释放,等待下一次调用
7。同5
 
to shiningplus:谢了![:)]
1.COM对象创建后,在COM+中就处于激活状态,此时我还未调用过对象方法。
5.同1,我是想它应该从池中取出;我在方法中已SertComplete/SetAbort。
另外,再问:
问题9:
COM+中显示的池化数是否包括正在使用的?
 
1.client 启动时就应该创建com+实例,协调对象会自动维护。
 
to osto:[:)]
问题是COM对象创建后,在COM+中就显示处于激活状态,
应该调用方法时才激活,SertComplete/SetAbort后又激死。
 
请继续关注!
 
后退
顶部