小弟最近在看delphi中关于com的部分,有几个问题想请教
1.进程内com服务器和进程内自动化服务器是不是一样的,我看书上的操作步骤不一样
用了activex后,一个用com object向导,一个用automation object向导,一个用createcomobject,一个用createoleobject,但是我觉得实现的功能好象都相似,没有什么不同,还有进程内的com对象应该是相当于dll吧?是吗?与如果是,那么上面两个创建的dll与用dll wizard创建的dll有什么区别?
2.进程外com服务器与进程外自动化服务器又有什么不同呢?
小弟对上面的概念有些模糊,还请高手请教,小弟先谢过!!
1.进程内com服务器和进程内自动化服务器是不是一样的,我看书上的操作步骤不一样
用了activex后,一个用com object向导,一个用automation object向导,一个用createcomobject,一个用createoleobject,但是我觉得实现的功能好象都相似,没有什么不同,还有进程内的com对象应该是相当于dll吧?是吗?与如果是,那么上面两个创建的dll与用dll wizard创建的dll有什么区别?
2.进程外com服务器与进程外自动化服务器又有什么不同呢?
小弟对上面的概念有些模糊,还请高手请教,小弟先谢过!!
创建ActiveX Library会在主程序单元中自动加上对ComServ单元的引用,并加上下面5行
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;
你也可以创建一个普通的DLL,然后手动加上这几句,效果是一样的。
进程外组件被调用时在自己的进程运行,通常都是一个EXE;进程内组件被调用时在创建者的进程运行,没有自己的进程,通常都是一个DLL或OCX。
用了activex后,一个用com object向导,一个用automation object向导,一个用createcomobject,一个用createoleobject,但是我觉得实现的功能好象都相似,没有什么不同,还有进程内的com对象应该是相当于dll吧?是吗?与如果是,那么上面两个创建的dll与用dll wizard创建的dll有什么区别?
2.进程外com服务器与进程外自动化服务器又有什么不同呢?
======================================================
进程内COM和AutoMation当然不是一样的。楼上的也说了,Automation实现了对IDispatch的支持,再者,他对各种调度应用也是很好的支持,看一看进程内的CreateObject它的实现过程,一个进程内COM可以没有TLB,但是如果一个AtuoMation没有了TLB的话,将会如何?而且,你可以式一试他们Link DataBase的不同后果,但是无论如何说,一个Automation还是COM。也可以这样理解,Automation都是COM的内容,它应用了OLE2.0的更多技术,而且应为实现了IDispatch的支持,他也可以实现回调。进程外COM应该和他有区别,而且是明显的,首先,进程外COM服务是和客户端运行在不同的进程中的,它是一个EXE可执行文件,自己可以在其它的应用程序没有进行任何的操作下进行运行,但是Automation or 进行内COM是不可以的。而Automation可以是不同形式的封装,DLL、OCX等,在应用它的时候,可以仅仅导出TLB,也可以直接以组件的形式让其应用。在某种程序上,Atuomation和COM一样的接近DCOM