• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 人文社科 > 正文

    基于COM/DCOM的多层分布式应用

    时间:2020-09-18 07:56:04 来源:达达文档网 本文已影响 达达文档网手机站

    摘 要:分析COM/DCOM组件技术的结构和基本特点,分析基于DCOM的多层应用实现的过程。COM/DCOM是Microsoft提出的主流组件体系,COM提供一套允许同一台计算机上的客户端和服务器之间进行通信的接口,DCOM是组件技术COM的无缝扩展,可以将基于COM的应用、组件、工具以及知识转移到标准化的分布式计算领域中,当做分布式计算时,DCOM用于处理网络协议的低层次的细节问题。给出的实例对基于COM/DCOM的多层分布式模型进行了具体应用,并取得较好效果。

    关键词:COM;DCOM;分布式;多层结构

    Application of Multilayer Distributing Model Based on COM/DCOM

    YU Xi

    (chool of Information and cience,Chengdu University,Chengdu,610106,China)[J12/3]

    Abstract:he paper analyzes the construction and basic characters of COM/DCOM component technology,and also analyzes the procedure that base on the DCOM′s multilayer applicationCOM/DCOM is a mainstream discreteness system which Microsoft Corporation advanced,COM provids a set of interface that allow client-side and server-side in a computer to communicateDCOM is the extend of COM,the application,components,tools and knowledge based on the COM can be migrated to the area of standard distributing calculationDCOM can be used to deal with the details of the low layer in the network protocolhe presented example which based on the COM/DCOM multilayer distributing model gets good effect in the application

    Keywords:COM/DCOM;distributing model;multilayer structure[J12/3]

    1 引 言

    随着应用系统软件的需求变化和软件规模的增大,要求软件在开发过程中既要考虑功能,也要求开发周期缩短,从而对软件结构及开发模式及方法不断提出新的要求。其中基于组件的软件开发方法已经逐步成为主要方法之一,它可以缩短软件开发的时间,节约开发投入的经费,提高程序员开发软件的效率,形成更规范更稳定的应用软件。而COM(Component Object Model)组件对象模型是由微软倡导的组件技术的主流,是微软为了发展OLE技术,实现组件包装机制,跨语言互操作机制而设计的。程序员可以通过大量的开发工具开发COM服务器对象和基于COM/DCOM的分布式应用。

    2 COM/DCOM组件基本原理

    21 COM组件

    是目前使用主流的组件体系结构,采用IDL接口定义语言描述COM组件接口,以提供给外界访问。IDL实现应用程序对COM接口访问的语言和平台的无关性。微软在此基础上还提供了一些高级服务,如微软事务服务(Microsoft ransaction ervice,M)、微软消息队列服务(Microsoft Message Qqeuing ervice,MMQ),以支持开发企业级多层应用系统。这些工具和服务与COM这样的成熟组件模型分工合作,能够开发出复杂的多层系统,效率得到了很大程度的提高。

    22 DCOM组件

    为了支持局域网、广域网甚至是Internet上不同计算机对象之间的通信,DCOM对COM进行了扩展。DCOM技术就是将COM技术移植到网络上并在网络中应用,这样用户可以将COM服务器安装在一台机器上,而把访问服务器的客户程序放置在其他连网的机器上,实现COM对象的远程访问。DCOM成为业界扩展早期C/应用和编写多层数据库应用程序的首选技术,应归结为DCOM的以下特点:

    (1) 可重用性

    面向组件技术比面向对象技术具有更成功的重用性。其中组件的可插用性和可维护性使程序员能够更好地重用代码,提高开发效率。同时DCOM直接和透明地利用COM的技术和开发工具,可以降低开发时间,原来熟悉COM的程序员也能够很容易的将原有COM的知识应用到DCOM中。

    (2) 位置无关性

    无论DCOM组件和客户进程是否存在于同一台主机,客户连接对象和调用对象的形式都完全一样。DCOM对象提供外界访问的接口,至于它安装在哪台计算机并不重要,外界客户应用程序只需要指明连接的服务器名通过DCOM协议就可以访问这些接口提供的方法,如果服务器有变动,只要将客户端连接的服务器指向该服务器就可以,所以位置无关性还有利于动态平衡应用服务器的负载。 

    (3) 语言无关性

    COM/DCOM提供一种IDL接口描述语言将定义接口使用的语言和定义实现使用的语言分离开。COM/DCOM组件对象可以在一种语言下实现,而在另一种语言实现的应用程序中使用。通常任何一门语言都可以用来创建COM组件,而这些组件又可以被大量的语言和开发工具使用,包括Java,C++,VB,Delphi,PowerBuilder和COBOL等。基于DCOM的语言无关性,不熟悉C/C++的程序员也可以编写COM应用,他们可以选择自己熟悉的语言和工具进行开发,增加了语言选择的灵活性。

    (4) 连接管理

    DCOM使用一个有效的Ping协议来探测客户是否仍然和对象建立连接。如果组件对象在超过3个Ping时间段没有接受到来自客户的消息,则DCOM就认为连接已经终止。如果连接终止,DCOM减少一个引用计数,如果引用计数器减为0则释放该组件对象,其中引用计数的增加和减少是通过在IUNknown接口中定义的2个引用计数的方法:ADDREF()和RELEAE()来实现。当客户与组件建立连接时,DCOM就调用ADDREF()增加一个引用计数的值,当客户与组件断开连接时,DCOM就调用RELEAE()减少一个引用计数的值。

    从组件的角度看,不管客户应用是正常的断开连接,还是因发生错误而导致断开连接都是采用相同的计数机制,应用通过使用分布式垃圾回收机制得到释放。

    () DCOM的安全性

    DCOM使COM增强了大量的与安全性相关的补充功能。DCOM之前的COM体系已经非常适用于分布式系统,它允许客户透明地访问进程内DLL和本地服务器。DCOM很自然地扩展COM以便使用对象RPC来实现它的基本传输功能,保留透明性是为了使客户机无需担心服务器是否是进程内,是本地的还是远程的。DCOM为用户身份认证、数据完整性和隐私性都提供了不同级别的支持。

    3 DCOM开发多层应用在Delphi中的实现

    31 多层结构简介

    典型的C/体系结构中,数据库的管理在一层中进行,其他所有的数据处理都在另一层完成,这样给客户端带来很大的负担,也要求客户机具有很强的处理能力。为了改善传统C/的不足,出现了多层的体系结构,它将客户端的处理分为应用程序和业务逻辑处理,并将业务逻辑处理从客户端推到中间层实现。典型的多层结构如图1所示。

    多层分布式C/应用程序在逻辑上划分为多个部分,每一部分驻留在不同的机器上,这些机器可以在一个局域网内,也可以在Internet上。目前常见的多层结构主要包括3部分:

    (1) 客户端应用程序:在客户机上显示客户应用程序的用户界面,由于只包含应用界面所以又称为表示层。

    (2) 应用程序服务器:包含了事务处理业务逻辑,为客户端应用提供数据服务,由于处在客户端和数据库服务器之间又称中间层或业务逻辑层,在对客户机的连接上相当于服务器,在与后台数据库服务器交互时又相当于客户机。

    (3) 数据库服务器:提供关系数据库管理系统。

    32 多层结构工作流程

    用户首先启动客户应用程序,客户应用程序尝试使用DCOM连接应用服务器,如果应用服务器没有启动,客户应用程序就激活应用服务器,并从中获得IProvider接口。应用服务器从远程数据库服务器获得数据后,打包后经IProvider接口提交给客户应用程序,客户端通过ClientDataet从IProvider获得打包数据后分解数据包,然后通过Data Control显示或做相应的处理。当客户端应用向应用服务器提出更新数据申请时,需要将数据封装成数据包通过IProvider提交给应用服务器,应用服务器接受到请求后,先将数据分散解包,然后通过服务器事务管理向数据库服务器申请更新数据。如果更新数据成功,客户端将显示更新后的数据,如果由于某种原因数据不能正常更新,则客户端应用程序只有放弃或者重新尝试更新,Delphi中实现多层结构工作流程如图2所示。

    Delphi是由Borland公司开发的一个快速开发工具,使用Object Pascal作为实现语言。在创建COM/DCOM实现多层应用程序开发方面,Delphi一直都是较优的选择。

    33 编写客户端应用程序

    创建多层应用程序的客户端与创建2层应用程序的客户端没有什么太大的区别,不同主要是在多层应用程序的客户端使用:

    (1) DCOMConnection实现DCOM的连接。

    (2) 与应用程序服务器的DataProvider连接的ClientDataet组件,客户端通过ClientDataet上的Dataource获得数据。创建客户应用程序的基本步骤为:

    ① 使用File/New Application开始一个新的工程,设计客户应用程序界面;

    ② 使用File/Data Module加入1个数据模块,在这个数据模块中加入3个非可视组件 DCOMConnection,ClientDataet,Dataource;

    ③ 设置连接组件的参数,包括设置DCOMConnection的erverName以指定应用服务器名,设置ComputerName以指定应用服务器所在的计算机名。设置ClientDataet的Remoteerver属性以指定DCOM连接组件,设置ProviderName以指定应用服务器上的DataetProvider组件,这样客户程序就可以通过IProvider接口与应用服务器建立连接进而访问数据库服务器上的数据,设置Dataource的Dataet以为窗体上的Data Control提供数据集。

    34 编写应用服务器程序

    创建应用服务器和创建其他数据库应用程序的过程大致相同,主要的区别在应用程序服务器中必须包括一个远程数据模块和数据供应部件DataetProvider。创建应用服务器的主要步骤为:

    (1) 使用File/New Application建立一个应用程序

    (2) 使用File/New Other/Multitier/Remote Data Module添加远程数据模块,并在该远程数据模块上添加DataetProvider、ession、Dataet非可视组件

    (3) 设置相关组件属性,设置Dataet的DataBaseName以使数据集访问数据库,设置DataetProvider的Dataet以与数据集连接,设置ession组件的AutoessionName和KeepConnections为rue以防止访问冲突。

    (4) 注册应用服务器程序,应用服务器是一个EXE,只需要运行一次就自动在系统中注册。

    4 DCOM多层应用实例分析

    下面是一个应用系统示例,该多层结构的学生选课系统是用Delphi实现的基于DCOM组件的多层应用实例。鉴于学校选课的时间相对集中,要求系统具有较快的响应速度,稳定的性能,较快的数据处理能力。本系统采用多台应用服务器,实现动态负载,学生可以在校园网内的任一一台计算机上进行选课,结束以前学生选课完全靠手工操作的局面,大大提高学生选课的效率。图3是该选课系统中面向学生的选课界面。在程序设计时主要考虑数据库的设计和实现应用服务器的动态负载和任务的迁移上。

    数据库设计方面,因为系统是学校教务系统的一部分,只需要添加以下一些数据表:

    选课日志表 记录学生登录系统的一些信息包括登录时间,所在计算机的IP等。

    学生表 记录学生登录选课系统所需的密码,ID,选课码判断是否已经选择过等。

    选课表 记录学生已经选修的课程和学分。

    选课课程表 可供全校学生选修的课程信息。

    其他的表比如:教师信息表、学生信息表、学校专业表、学生所在专业的课程设置表、学生本期的课程表等等都是与教务系统的其他子系统共享的数据表,所以不必重复设置。

    动态负载和任务迁移方面,为了让学校上千的学生在相对集中的时间进行选课,本系统采用多台计算机作为应用服务器,为了实现和平衡它们之间的负载和当其中某台发生故障时迁移任务,可以采取构建一张记录应用服务器的数据表的办法,每当有学生要连接应用服务器时就顺序查找该数据表,确定可用的应用服务器,如果找到就建立连接进行通信否则挂起,等待一个可以容忍的时间段(在这个过程中可能有其他同学放弃了应用服务器的使用和其他应用服务器重新可用)后再尝试查找该表,重复上述操作。

    结 语

    DCOM是COM的一种表现形式,DCOM 实际上是一项协议,它能让软件组件以一种可靠、安全和高效的方式通过网络进行直接通讯。DCOM 以前称为“网络 OLE”,其设计使它能用在多种网络传输(包括 P 等 Internet 协议)上。对DCOM来说,应用系统可以将互相关联的组件放到靠的比较近的机器上,甚至可以将它们放到同一台机器上或同一个进程中。即使是由大量的小组件完成一个具有复杂逻辑结构的功能,它们之间仍然能够有效到相互作用。当组件在客户机上运行时,将用户界面和有效性检查放在客户端或离客户端比较近的机器上会更有意义。

    通过示例可以看到,基于COM/DCOM的分布式系统开发具有很好的特性和效果。

    参 考 文 献

    [1]Microsoft CorporationDCOM Architecture[EB/OL]http://wwwmicrosoftcom/com

    [2]Microsoft CorporationDCOM echnical Overview[EB/OL]http://wwwmicrosoftcom/com

    [3][美] Box DCOM本质论[M]潘爱民,译北京:中国电力出版社,2001

    [4][美] Jason PritchardCOM与CORBA本质与互用[M]徐金梧,译北京:清华大学出版社,2002

    陈锐Delphi分布式多层程序开发[M]北京:清华大学出版社,2002

    [6]冯秀芳,张德贤基于DCOM的远程教学系统开发[J]河南大学学报:自然科学版,2001,31(3):3-6

    [7]李维Delphi深入COM编程[M]北京:机械工业出版社,2000

    [8]李维Delphix ADO/M/COM+高级程序设计篇[M]北京:机械工业出版社,2000

    [9]李维Delphi7分布式组件开发[M]北京:机械工业出版社,2003

    [10]陈锐Delphi分布式多层应用程序开发[M]北京:清华大学出版社,2002

    作者简介

    于 曦,1973年出生,硕士,讲师。研究方向为软件工程。

    相关热词搜索: 分布式 多层 DCOM

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网