这是我说过的话吗?
看到两年前说过的话,现在在某些点上的认识多少发生了变化。
其实都是 复用技术。最原始的要属汇编吧。
依赖CPU的指令集,后来有了C来加速系统软件开发,在汇编和C里都可以使用子程序(函数,过程),C是面向过程的语言,通过结构化的
顺序 条件 循环控制结构,后来由于C的面向过程不符合人的思维方式也就是和实际事物的关系联系不紧密,就通过面向对象方法,
C++扩展了C,可以简单理解为更好的C,带类的C,由于C++支持
继承,多态,封装,派生,多继承等机制,通过这些机制可以
很好的复用和描述事物间的关系,如孩子是父亲母亲派生来的,
而孩子就继承了双亲的特点等。
无论是汇编还是C,C++都有基本的内置的数据类型,而这些数据类型
int float double char往往相同逻辑的算法因为不同的类型而不得不重新创建,而泛型的模板机制就是为了解决此问题。
于是STL C++标准容器算法库 Boost就应运而生。
但是这都是基于源代码的复用,
而COM是一套规范,定义它并没有给出实现,类似J2EE也是规范。
ActiveX和 CORBA等都算COM.
COM实现后最终应该产生二进制的代码来支持重用。而核心的接口通过纯虚的机制来定义,以保证其通用性。而具体实现则因平台而已。
就好比UI和底层相分离设计的形式,win32平台下ATL通过IDL来描述
接口,实现则通过C++的类来实现。
有了COM自然不满足单机环境,就有出现DCOM(分布式组件对象模型)
而DCOM在安全性和易用性,调试都问题多多,因为DCOM对服务器
和客户端的要求都相对较紧密,于是新一代.NET就通过
XML Web Service来实现松散的藕荷关系来实现跨Internet的分布式计算。从而在网络上建立分布式组件库和软件服务体系,最终要把
软件从盒装变成服务由用户来订阅,然后再酝酿新的盈利模式。
COM/ActiveX/ATL/DCOM COM+等的目的很明确就是为了重复的使用
让构造软件像做积木一样,最好像集成电路一样,通过定义标准化
的接口来达到软件的复用。interface在一定程度上实现了类似
硬件 PCI AGP IDE PCIe这样的接口原理。但是只不过还不标准化
和应用的广泛化其原理和实现由于深奥一定程度上制约了
COM技术的推广使用程度,但是新的.NET平台和Java里的概念
一定程度上大大简化了COM的使用。
下面简单介绍下
COM ActiveX等的关系。
COM是个规范
ActiveX是个商标
DCOM是分布式COM
ATL是为了简化手工实现COM的模板库。
COM+则将MTS COM DCOM做了集成。但仍基于COM,把一些处理完全
教给了系统。
如果现在还不清楚要学什么,那要学的就是
明白COM的用途,并学会使用基本的COM,比如DirectX就是
一套基于COM的功能强大的适合做游戏的编程接口。
其实都是 复用技术。最原始的要属汇编吧。
依赖CPU的指令集,后来有了C来加速系统软件开发,在汇编和C里都可以使用子程序(函数,过程),C是面向过程的语言,通过结构化的
顺序 条件 循环控制结构,后来由于C的面向过程不符合人的思维方式也就是和实际事物的关系联系不紧密,就通过面向对象方法,
C++扩展了C,可以简单理解为更好的C,带类的C,由于C++支持
继承,多态,封装,派生,多继承等机制,通过这些机制可以
很好的复用和描述事物间的关系,如孩子是父亲母亲派生来的,
而孩子就继承了双亲的特点等。
无论是汇编还是C,C++都有基本的内置的数据类型,而这些数据类型
int float double char往往相同逻辑的算法因为不同的类型而不得不重新创建,而泛型的模板机制就是为了解决此问题。
于是STL C++标准容器算法库 Boost就应运而生。
但是这都是基于源代码的复用,
而COM是一套规范,定义它并没有给出实现,类似J2EE也是规范。
ActiveX和 CORBA等都算COM.
COM实现后最终应该产生二进制的代码来支持重用。而核心的接口通过纯虚的机制来定义,以保证其通用性。而具体实现则因平台而已。
就好比UI和底层相分离设计的形式,win32平台下ATL通过IDL来描述
接口,实现则通过C++的类来实现。
有了COM自然不满足单机环境,就有出现DCOM(分布式组件对象模型)
而DCOM在安全性和易用性,调试都问题多多,因为DCOM对服务器
和客户端的要求都相对较紧密,于是新一代.NET就通过
XML Web Service来实现松散的藕荷关系来实现跨Internet的分布式计算。从而在网络上建立分布式组件库和软件服务体系,最终要把
软件从盒装变成服务由用户来订阅,然后再酝酿新的盈利模式。
COM/ActiveX/ATL/DCOM COM+等的目的很明确就是为了重复的使用
让构造软件像做积木一样,最好像集成电路一样,通过定义标准化
的接口来达到软件的复用。interface在一定程度上实现了类似
硬件 PCI AGP IDE PCIe这样的接口原理。但是只不过还不标准化
和应用的广泛化其原理和实现由于深奥一定程度上制约了
COM技术的推广使用程度,但是新的.NET平台和Java里的概念
一定程度上大大简化了COM的使用。
下面简单介绍下
COM ActiveX等的关系。
COM是个规范
ActiveX是个商标
DCOM是分布式COM
ATL是为了简化手工实现COM的模板库。
COM+则将MTS COM DCOM做了集成。但仍基于COM,把一些处理完全
教给了系统。
如果现在还不清楚要学什么,那要学的就是
明白COM的用途,并学会使用基本的COM,比如DirectX就是
一套基于COM的功能强大的适合做游戏的编程接口。
浙公网安备 33010602011771号