看到了自动化看不下去了

    COM本身的原理是比较简单的,但是在他基础上实现的应用却是相当麻烦,自动化、ActiveX、COM+,通过简单的基础理论变换出无穷的应用,microsoft的工程师把宏应用到了极致,每种应用都伴随着一堆DYN_和IMP_宏,让人看得好生郁闷。若非专职于相应技术的开发,学习这些理论基础,实在是一件很痛苦的事情。所以,我决定暂停《COM原理与应用》的学习。
    COM除了给了我全新的对于接口、组件的认识,并且叹服于MICROSOFT的宏伟工程的同时,最重要的是,使我对软件复用有了新的认识。COM通过接口的方式,屏蔽了进程内和进程外的组件调用的差异,通过STUFF和PROXY对象,使得在网络上复用组件成为可能,这使我不得不想到我们的DA板卡驱动层,若是用COM实现驱动层的接口,就可以在局域网内共享驱动层接口,就可以在局域网内实现一台主机控制多台打标机、编辑软件与驱动层分离等功能吗?
    当然,若是能够将软件做成WEB版本的,通过浏览器访问标记机,WEB本地编辑好标记内容以后,直接将标记内容上传给远程标记机进行打标,这样也是可以实现上述两个功能,而且这样的情况下,标记机的控制PC可以做的很简单,可以很好的控制成本。
    总之,我认为信息化技术、自动化技术在标记环境中的应用,会是一个趋势,WEB技术会在工业领域大显身手,探讨WEB技术在标记软件上的应用,是很有意义的一件事情。

COM印象记(续)

    总的来说,我觉得COM的实现与ps的插件机制有很多底层机制是非常相似的,最近下到一套solidgraph的源码,它实现了很多非常酷的技术,包括:
    1. 2d/3d绘制、属性设置
    2. 组合功能
    3. 插件机制
    4. .net风格对话框
    5. lua脚本语言控制
    6. 强焊而熟练的opengl渲染
    所有代码基于mfc开发,特别适于我来学习。如果有时间,一定尝试用com来实现一个最小的插件系统。

COM印象记

    《From CPP to COM》,虽然只是一个很小的册子,但是深入浅出,把COM的实现从C++函数逐步推进到COM实例。短短1天时间,不太可能对COM有准确把握,只是把自己的理解写下来。
     1. 什么是interface?
     interface是COM中一个很重要的概念,那么它到底是什么呢?是一个对象的指针,还是类的成员函数指针?在传统C++中,interface总是与function相关的,在COM中也是如此吗?我们看一段代码:
     

以下内容为程序代码:

HRESULT CDB::QueryInterface(REFIID riid, void** ppObject) 
{
    if (riid==IID_IUnknown || riid==IID_IDB) 
    {
        *ppObject=(IDB*) this;
    }
    else 
    {
        return E_NOINTERFACE;
    }

    AddRef();

    return NO_ERROR;
}