软件部件(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部件调用,
不论其数量多少,也只需一次检测,以节省网络带宽)。所以,客户机也可以用这种方式
自动脱离曾调用的网络部件,而无需使用下沉的脱离程序。
以上是从别人那儿摘来的。