自动化的内容还是比较丰富的,建议楼主还是找些书或者文章具体看看。
但是我觉得,对于一项陌生的技术,如果能在学习之前得到一两句高度概括的总结,会使学习更有效率。
如果你已经完全知道COM(或者知道C++类也行),那么可以这样对比:
在一个COM接口中,一个个接口方法都是以函数的形式暴露给调用者的,比如
interface IMyInterface : IUnknown
{
HRESULT func1();
HRESULT func2();
HRESULT func3();
}
而对于自动化来说,在一个自动化接口中,多个接口方法,并不是以多个函数形式呈现,而是以一个函数,外加多个代号实现。然后调用者以不同代号调用那一个函数,而那个函数不做实质工作,只是根据代号,继续辗转调用组件内部的真正的函数,来实现功能。比如:
interface IDispatchSample : IUnknown
{
HRESULT Invoke(DWORD dwFuncID);
}
HRESULT Invoke(DWORD dwFuncID)
{
switch(dwFuncID)
{
case 1:
return InnerFunc1();
case 2:
return InnerFunc2();
case 3:
return InnerFunc3();
}
//......
}
同时,函数的参数是采用打包和解包的方式传送的。
正想上面的人说的,这种方式只是为了支持那些,不支持VTable却又想支持COM,的开发语言设计的。对于支持VTable的语言,自动化几乎一无是处,只是增添麻烦而已。