软件部件(SoftwareComponent)的应用可使系统维护或开发变得简单易行。但是,由于一直没有 统一的编程语言,原有的程序库也不能轻易移植。因此软件部件的设想一直无法真正实现。Java 语言出现之后,解决了多平台及各种编程语言的不兼容性,软件部件技术才真正用于加快大型型程序的开发进程。
微软在其ActiveX技术中蕴含了"软件部件"的概念,而且进一步将这种技术拓展为DCOM技术。。DCOM是 原COM技术的延续,主要是增加了远程调用COM部件的功能。另外,由于它结合原来COM中的ActtiveX技术, 使得原有的各种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 部件申请服务,从而形成单一操作系统中的内部网络。所以,当客户端程序与DCOM部件分 处于不同机器时,也可采用这种调用方式,只需要把交互协议换成网络通讯协议。当然,目前在单机上已开发的COM部件同样可以转换成DCOM部件使用,这就使得开发新的客户端程 序变得简单易行。
当真正开发基于网络使用的DCOM部件时,就需要注意系统固有的一些限制。例如,一些使 用频繁的部件需要放得比较接近;某些部件需要在指定的地点运行;使用较小的部件可增加系统的弹性,但会增加网络的流量;较大的部件会减轻网络的负担,但会使系统缺乏弹性。
然而,由于DCOM部件是完全隐藏其本身位置的,因此,无论是位于同一台机器,或是位于遥远 的异地,客户端对DCOM部件的调用也都是一样的。即使要修改客户端程序的流程,也只需稍加改动各部件间的连接顺序,而不必对源程序进行改动。
目前可以支持DCOM部件开发的编程语言很多,如Java、Visual C++/ VisualBasic、
Delphi、PowerBuilder等。在网络环境里,要想使各部件自动工作,DCOM采用一个调
用计数器来管理客户数目。当某一DCOM部件被启动后,会有其他客户机继续对它进
行调用。当用户计数器变成零时,系统会自动终止这一部件的运行。而DCOM部件也
会不断地检测是否有某一客户机对它的调用依然存在。当超过三个检测周期仍没有
反应时,该部件会自动将该客户机从计数器中删除(对于同一客户机到同一服务器的
DCOM部件调用,不论其数量多少,也只需一次检测,以节省网络带宽)。所以,客户机也
可以用这种方式自动脱离曾调用的网络部件,而无需使用下沉的脱离程序。