这两天COM 组件,COM+组件,.Net组件都写过了之后,坦白说,我已经糊涂了。糊涂的地方不是实现,配置这些组件的功能,这些的细节正是这段时间来我搞明白了的。而是,为什么要用这样用?COM的设计本初的目的是跨越边界,可是如果跨越边界的代价比完成服务本身还要高的话,那还跨越边界干吗,不能为了跨越而跨越啊 。于是就想写这个文章,理理清楚。
如果是只是跨越线程边界的话,那没得说使用.net的托管组件是最方便也是最实际的,获得的实现以及管理效率提升比损失的执行效率高太多。
真正麻烦的比较是在跨越进程,直白的说是跨越网络进程的时候的效率讨论。有很多结合和可能。
web服务: iis + clr , iis + COM+,
(通信方式:HTTP,DCOM,MSMQ)
app服务:iis + clr,iis+COM+ ,SRM+COM+, SRM+COM,
(连接方式:直连,分布性事务)
资源管理器
这里的COM+ 是指用非托管代码写出来的。。。
经过这个表,我已经发现我想要说什么了。
那就是,任何受管的服务要与其他受管服务在连接层面同步通信,必须使用iis 在 http上进行,否则 如果是为了节省每次连接,http协议报头那几十上百个字节的话,就只能用DCOM。而一用DCOM的话 ,带来问题的问题是,
1在对象存在期不释放tcp连接,
2对象得是非托管语言写的
看来,该舍得花的时候还是得舍得啊。。。。。