谁能讲讲COM,VCL,ActiveX的区别。(50分)

  • 主题发起人 主题发起人 tbl
  • 开始时间 开始时间
T

tbl

Unregistered / Unconfirmed
GUEST, unregistred user!
as title.
thanks.
 
问题好大!
我只能说COM和ActiveX很接近, VCL和MFC很接近 ,-- 不对清指教.
 
COM 和 AxtiveX市微软提出的.
COM说他是一个比较抽象的思想也不足为过,因为现在WIN98,NT等等其系统本身都是建
立在COM的基础之上,或正朝此方向努力.
ActiveX是COM思想的控件化实现.
而VCL是Borland公司的控件库.
除此之外,CORBA的实现层次与ActiveX相似,值得参考.
 
我来关注一下
 
faint!
COM and ActiveX
ActiveX是用COM来实现的;
COM是通用组件模型。使不同语言开发程序的共同使用成为可能。
COM的直接产物是ActiveX Control and DirectX
ActiveX and VCL
简单的说:VCL只在DELPHI/BCB中用,ActiveX理论上可以在任何支持ActiveX的环境下用,包括WEB
 
COM, VCL与ActiveX都是现代OOP编程的产物。
它们的目的总的来说都是为了代码复用与程序
开发与维护的方便。
VCL是Inprise用来包装WinAPI的。
我们用可视化的方法把一个又一个的VCL控件
放在窗口上面就可以以类的调用格式来调用它
的方法,设置它的属性,并利用它的消息响应
来进行面向用户响应的开发了。
但是VCL只能在Delphi与BCB中间使用,虽然我
个人很喜欢它。
COM与其说是一个具体的对象,不如说是一个技术
方案。它提供的是一个简单易用的用户界面层的概念,
那就是接口(Interface)的概念。一个用户能够从
一个COM对象得到的只有接口。接口内部的类的实现
是对用户隐蔽的。把实现与对外接口分开是一个对程
序员和用户来说都不错的方案。对程序员来说他可以
完全不管用户会看到什么和希望看到什么(用户要求),
因为这部分与他无关只与接口有关,他可以以任何自己
方式来实现任何一个功能。用户看到的则永远是一个又
一个简单的接口(看看windows中的接口,每个都不是
特别复杂,方便使用)。
要注意的是接口是不能继承的,虽然在很多编程语言中(如
VC和Delphi等),一个接口被说成是从另一个继承的。而且
在程序中间也是与其它类的继承简单的写成一样的形式如:
IMyInterface2 = class(IMyInterface1, Txxxx)
...
但是接口的继承只是表面上的,一切的功能实现还要类来!
继承在原来的意义上是要继承代码的实现以进行代码复用的,
接口是没有实现的,因此接口的“继承”是假继承。
ActiveX控件是COM技术的一个具体实现。
作为一个ActiveX控件它要支持与实现一系列接口如IDispatch
等等,一个正确的实现了MS对ActiveX控件要求的那些接口的COM
对象就是一个ActiveX控件。
ActiveX控件是二进制兼容的,windows系统都支持,一般的编程
语言都能在其中使用它。比VCL当然要用的广啦。

 
COM仅仅是一个编程标准,小BILL说只要是按COM的接口来,任
何的编程语言都可以作为编写工具.
VCL是Inprise的类库,他只能在DELPHI中采用.当然,他也可以
转换为AtiveX.看看HELP吧.
ActiveX在Microsoft的环境中用的多,另外,网络开发是也用的
比较"滥"
 

软件部件(SoftwareComponent)的应用可使系统维护或开发变得简单易行。但是,由
于一直没有统一的编程语言,原有的程序库也不能轻易移植。因此软件部件的设想一直
无法真正实现。Java语言出现之后,解决了多平台及各种编程语言的不兼容性,软件部
件技术才真正用于加快大型程序的开发进程。
微软在其ActiveX技术中蕴含了"软件部件"的概念,而且进一步将这种技术拓展为DCOM
技术。DCOM是对原COM技术的延续,主要是增加了远程调用COM部件的功能。另外,由于
它结合原来COM中的ActiveX技术,使得原有的各种ActiveX部件,也因DCOM的兼容性而
变成可被远程调用的部件。
因为DCOM派生于ActiveX技术,所以它可以支持现有的TCP/IP、HTTP等网络协议,还对
Java语言兼容。同时,微软也授权在UNIX、SOLARIS等其他操作系统平台上使用这种技
术。
DCOM的技术特点在于每个程序模块无需存储各客户端,更无需下载程序本身在客户端运
行。只要在服务器内存放一份DCOM部件,不同地方的用户即可通过网络来访问这一
DCOM部件。当然DCOM技术并不只是节省了存储空间。而且,使用DCOM部件构成的大型
程序,可以把处理相同工作的部分分割出来交给一个专门的软件模块完成。而其他程序
或其他DCOM部件只需对其进行调用,即可获得所需信息。当程序流程发生变化时,程序
员只要对变更的部分进行修改,即可同时对其他单位的程序更新,有效地提高了整个系
统的灵活性。
以现在人们谈及最多的2000年计算机时钟问题为例,如果程序是由DCOM部件组成的,那
么只需对日期模块进行更改。而其他界面部分由于只是调用日期模块来计算时间差,因
此就不会出现这种因资料规模制订错误而导致的不便。而资料规模的制订,往往是程序
设计中最困难的部分,稍有失误便会使程序无法运行。而且,问题还经常在很长一段时
间之后才被发现,使得程序难于修正。因而,采用DCOM技术设计程序才是解决这类问题
的较好方法。
通过Internet的通用HTTP协议,客户端程序能在极小的投资下达到更大的效益。因为
客户端程序只需稍加整理,便能从DCOM部件内调用网络上的众多公用信息。由于DCOM
经常会透过网络来传递资料,因此系统的安全性则至关重要。目前,Internet上除了提
供身份认证以外,还增加了原来在NT上使用的调度安全结构,以得到双重的安全保护。
无论企业的服务器软件,还是个人应用软件都免不了要与整个企业资源进行信息交换。
当这些软件都采用DCOM技术编写后,便可将各程序模块安排在适当的地方运行,力求获
得最具效果的资源利用。各程序模块既可在用户端又可在应用程序服务器上运行,还可
设计成依照需要下载到用户端,或同时在应用程序服务器上运行,以待其他用户调用。
一般来说,客户端程序是直接调用DCOM部件的,但由于系统安全性的要求,在目前的操
作系统中,各个程序段是相互隔离的。因此,客户端程序需要经过操作系统来向另一个
DCOM部件申请服务,从而形成单一操作系统中的内部网络。所以,当客户端程序与DCOM
部件分处于不同机器时,也可采用这种调用方式,只需要把交互协议换成网络通讯协
议。当然,目前在单机上已开发的COM部件同样可以转换成DCOM部件使用,这就使得开
发新的客户端程序变得简单易行。
当真正开发基于网络使用的DCOM部件时,就需要注意系统固有的一些限制。例如,一些
使用频繁的部件需要放得比较接近;某些部件需要在指定的地点运行;使用较小的部件
可增加系统的弹性,但会增加网络的流量;较大的部件会减轻网络的负担,但会使系统缺
乏弹性。然而,由于DCOM部件是完全隐藏其本身位置的,因此,无论是位于同一台机器,
或是位于遥远的异地,客户端对DCOM部件的调用也都是一样的。即使要修改客户端程序
的流程,也只需稍加改动各部件间的连接顺序,而不必对源程序进行改动。
目前可以支持DCOM部件开发的编程语言很多,如Java、Visual C++/ VisualBasic、
Delphi、PowerBuilder等。在网络环境里,要想使各部件自动工作,DCOM采用一个调
用计数器来管理客户数目。当某一DCOM部件被启动后,会有其他客户机继续对它进行调
用。当用户计数器变成零时,系统会自动终止这一部件的运行。而DCOM部件也会不断地
检测是否有某一客户机对它的调用依然存在。当超过三个检测周期仍没有反应时,该部
件会自动将该客户机从计数器中删除(对于同一客户机到同一服务器的DCOM部件调用,
不论其数量多少,也只需一次检测,以节省网络带宽)。所以,客户机也可以用这种方式
自动脱离曾调用的网络部件,而无需使用下沉的脱离程序。
以上是从别人那儿摘来的。
 
高手如云,
佩服
我就不多说了
 
DCOM在互联网上的实现方式有哪些呢?
ASP里面的Server.CreateObject是不是一种?
 
多人接受答案了。
 
后退
顶部