sno*_*ude 10
COM是一种'旧技术',就像C++一样.仅仅因为它陈旧并不意味着它已经过时了.微软不断回归的原因(Windows 8大量使用它)是因为它是一种相对低开销的基于对象的技术.在使用COM之前初始化没有大的运行时间(尽管组件可以在需要时初始化运行时,例如.NET CCW).
接口/实现边界严格分开,因此它以面向对象的方式公开Windows功能(以及Windows Shell基于COM的DirectX)非常有用.
COM普遍误解了什么是COM以及什么是基于COM构建的.ActiveX,DCOM,OLE,COM +等都是基于COM构建的,但没有定义COM是什么.COM本身作为核心技术一直保持相对简单.
我说比较,因为COM并不完美.公寓模型可能会导致严重的问题,例如需要应用程序泵送消息队列的跨公寓编组.早在九十年代后期,人们就疯狂地将COM全部用于COM组件,这导致了应用程序中不必要的复杂性.但是,它是经过良好测试的技术,如果使用得当,它可以很好地工作,特别是对于第三方的曝光或消费功能.如果您想真正了解Windows API,您需要了解COM的工作原理.
1)如果这是一种旧技术,那么替代方法是什么。
COM当然是旧的。微软对它的“替代”是.NET,但它意味着您需要与CLR一起使用(因此,本机C ++不能与之一起使用,为此您将需要C ++ / CLI)。最新的替代方法现在称为WinRT(Windows运行时)。WinRT当前仅适用于Windows 8和Windows Server2012。在最低级别上,WinRT实际上是COM,但是Microsoft已经重新考虑了许多陷阱。平台/语言不可知的替代方案包括Google协议缓冲区,Apache Thrift和SOAP。
2)为什么我不需要使用COM。即COM的缺点是什么。
COM的主要目的是进程间通信(IPC)。例如,如果您有两个用两种编程语言编写的应用程序并希望它们进行通信,则COM是(特定于Windows的)解决方案。COM在90年代广泛用于C ++和VB6应用程序之间的通信。如果您不需要IPC,则COM的前景非常低。今天,我们最常使用COM来跨本机C ++应用程序和用C#编写的托管.NET应用程序进行IPC。
| 归档时间: | 
 | 
| 查看次数: | 1072 次 | 
| 最近记录: |