DCOM

2024-08-21

DCOM(共4篇)

DCOM 篇1

0 引 言

随着不断改进和发展,分布式系统逐渐形成了三种具有代表性的主流技术,即CORBA、DCOM( Distributed ComponentObject Model) 和J2EE。DCOM是COM的扩展,为网络环境中不同位置的组件提供了互操作的基础,可以作为构建多层分布式应用系统的基本框架。

1 DCOM 的技术特性

1. 1 DCOM 简介

COM是一个独立于语言的、基于对象的编程规范。这是微软建立的基于二进制标准的模型,定义了组件和客户程序之间互相作用的方式,但COM本身只能在本地生成组件对象。为了能在网络环境中构建多层分布式系统,就需要进一步使用DCOM。DCOM可以实现在网络环境中不同计算机之间组件的通信,而且不论这些组件是运行在局域网、广域网、还是Internet上。对于客户程序而言,组件程序所处的位置是透明的,而且开发者不必编写任何处理远程调用的代码,DCOM处理了底层网络协议的所有细节[1,2],如图1所示。

COM运行库根据调用产生代理和桩,向客户和组件提供服务。当客户进程和COM组件位于不同的机器中时,DCOM用网络协议来代替本地进程之间的通讯。DCOM协议也被称为对象RPC ( Object Remote Procedure Call,简称ORPC) ,是建立在DCE RPC协议的基础上,可用于各种基于组件的分布式系统[3]。ORPC建立了一套面向对象的远程调用规范,指定了如何在网络上进行对象调用、同时也包括了对象的引用应如何表示以及维护。在网络环境下,ORPC仍使用标准的RPC数据包,并附加了专用于DCOM的一些信息,如接口指针标识符、版本信息和扩展信息,再将其作为调用和返回的附加参数进行传送。

1. 2 DCOM 的技术特性

DCOM具有一些技术特性使其可以作为多层分布式系统的基本架构,如位置透明性、语言无关性、优越的执行性能和良好的安全性等。下面将对每一技术特性进行综合的阐释和解析。

首先,在位置透明性方面,开发者在使用DCOM开发分布式系统时,可以使用配置程序预先完成组件配置,这就使得组件的位置完全透明。DCOM不仅无需改变源码,而且也无需重新编译程序,客户程序连接组件和调用组件的方法都是一样的。DCOM的位置透明性极大地简化了将应用组件分布化的任务,使其能够达到最合适的执行效果。例如,某个组件必须位于某台特定的机器上或某个特定的位置,并且该应用有许多小组件,此时即可通过将这些组件配置在同一个局域网上,或者同一台机器上,甚至同一个进程中来减少网络的负载。而当应用是由比较少的大组件构成时,网络负载已不是问题,此时就可将组件配备在速度快的机器上,而无需考虑这些机器的具体位置。

其次,在语言无关性方面,当设计和实现分布式应用系统时,一个常规问题就是为开发一个特定的组件而选择语言以及工具的问题。其中,语言选择就是一个在开发费用、技术支持以及执行性能之间发生的典型折中过程。很多语言都可以用来开发COM组件,具体来说,主要有Java、MicrosoftVisual C + + 、Microsoft Visual Basic、Delphi、Power Builder和Micro Focus COBOL。这就使得DCOM能够直接且透明地改进对现存组件和工具的投资,因此基于DCOM的系统设计和实现即可使开发者的组件无论是现在、或是将来均能实现良好的可重用性。

第三,在执行性能方面,组件和客户程序之间的通信常态都是双向的。微软开发了许多标准接口来支持双向通信[4]。在COM术语中,双向通信是由一种称为连接点的机制来提供支持的,实现连接点需要两个重要的接口: IconnectionP ointC ontainer和Iconnection Point,前者是连接点容器,因其知道源对象支持的所有连接点,即可选择可用的连接点实现第二个接口,这样客户和组件之间就建立了连接。使用连接点机制来建立网络连接减少了数据在网络中的往返开销,在整体效果上就提高了执行性能。

最后,在安全性方面,网络在分布式系统的广泛使用,催生了一些诸如关系到客户间、组件间以及客户和组件之间的安全问题。如果分布式开发平台没有提供安全支持,那么每一个分布式系统就必须设计完成自己的安全机制。DCOM是基于windows系统的,因而可以使用Windows NT提供的安全框架。Windows NT提供了一套稳固的内建式安全模块,可以通过提高操作系统自身安全和网络安全两方面来实施其具体解决,主要表现在提高账号安全性、权限安全性、环境安全性以及加密数据、设置防火墙等方面。

除了以上特性之外,DCOM还具有其它很多特性使其适宜于构造多层分布式系统,如编程控制、良好的容错性、可扩展性等。

2 使用 DCOM 开发分布式系统

COM扩展到DCOM之后,对象的创建过程有所不同。为了标识一个远程对象,仅仅提供一个128位的GUID并不足够,还须提供远程对象所在的机器名,也称为远程服务器名“RemoteS erver Name”。下面介绍了使用DCOM开发高校分布式教务系统的过程。

2. 1 高校分布式教务系统设计

经过需求分析,高校教务系统应包括以下信息: 学生学籍、教师课务、学校通知、网络教学、考试题库、图书馆、学报和邮件。显而易见的是,教务系统的数据量是非常巨大的,其中包括的功能也最为繁琐,学生和教师的并行访问量也不会是个小数目。同时,开发者不可能完全独立开发高校教务系统,必定会用到很多第三方组件或遗留系统,否则开发成本将太过昂贵。基于此,设计者就不能使用集中计算的方式来开发高校教务系统,而应该将其设计为分布式系统。

DNA( Distributed i Nternet Applications) 体系结构是基于Windows平台的应用程序开发模型,代表了创建高分布式应用程序的方法[5]。该体系结构指定了如何使用Windows平台开发强壮的、可伸缩的、分布式的应用程序,其中采用的是一种逻辑上三层的、基于组件的体系结构。具体地,三层分别是表现层、业务逻辑层和数据层。这样就使客户机/服务器和基于WEB的应用程序依托这一公共的应用体系结构而融合为一体。图2就是使用DCOM开发的高校分布式教务系统的结构图。

由图2可以看出,客户端或Web服务器根据用户的请求调用相应功能组件服务器上的功能组件,由此完成计算任务或操作管理数据库中数据。因为设计者将不同用户的请求分散到不同的服务器处理,从而提高了执行性能、扩展性等技术指标。下面给出客户程序调用DCOM组件的两种方法。

2. 2 创建 DCOM 组件

( 1) 方法一

通过DCOM配置工具指定远程服务器名,这种方式使得DCOM组件具有位置透明性。在Windows系统平台上,远程服务器名称、即RemoteS erver Name值将保存在系统注册表HKEY_CLASSES_ROOT APPID键下。如果操作系统发现了一个使用该值的计算机名,就将激活在此远程机器上的组件。如下例即可调用学籍功能组件服务器( Stu JServer) 上的组件对象:

每个App ID可用于多个组件对象,通常就是代表了由多个CLSID共享的进程,该进程中的所有对象均共享同样的配置信息,包括远程服务器名以及安全信息。在DCOM中引入App ID概念可以避免太多的注册表关键字。

在Windows NT中提供了一个DCOM配置工具( dcomconfg. exe) ,开发者可以凭此来配置远程服务器,而不必直接修改注册表。

( 2) 方法二

有些应用要求在程序运行过程中控制要连接的服务器。DCOM允许在创建函数中指定远程服务器名字,这些函数有: CoC reateI nstanceE x、CoG etC lassO bject、CoG etI nstance FromFile、CoG etI nstanceF rome IStorage。这些函数以一个指向可选的COSERVERINFO结构的指针作为参数,该结构可用于指定一个应对COM对象进行实例化的远程服务器,结构中包含成员pwsz Name是用于对组件进行实例化的远程服务器名。而此名字则可使用能在网络中被识别的任一格式,包括IP地址、UNC名以及域名。

现给出各函数的实现功能分别如下: CoC reateI nstance Ex函数可以用指定的类标识符创建一个远程COM对象。CoGetC lass Object函数返回一个对象类的类工厂接口指针,可以创建多个同CLSID的对象。CoG etI nstanceF rom File函数创建一个对象类的新的实例,并用文件进行初始化。CoG et InstanceF rome IStorage函数创建一个对象类的新的实例,并用Storage进行初始化。

下面程序清单中使用CoC reatelnstance Ex函数创建教师课务功能组件服务器( Tec KServer) 上的查询教师上课信息的组件对象。清单内容如下:

3 结束语

使用DCOM可以创建远程COM组件,从而实现在不同计算机之间的对象通信。这样,应用系统就可以分布在不同的地方,例如一个局域网、广域网,甚至是在Internet环境里。使用DCOM来构建高校分布式教务系统可以使得教师和学生在校园内外均能较为方便快捷地访问并获取所有需求信息。

DCOM 篇2

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

1 引 言

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

2 COM/DCOM组件基本原理

2.1 COM组件

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

2.2 DCOM组件

为了支持局域网、广域网甚至是Internet上不同计算机对象之间的通信,DCOM对COM进行了扩展。DCOM技术就是将COM技术移植到网络上并在网络中应用,这样用户可以将COM服务器安装在一台机器上,而把访问服务器的客户程序放置在其他连网的机器上,实现COM对象的远程访问。DCOM成为业界扩展早期C/S应用和编写多层数据库应用程序的首选技术,应归结为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()和RELEASE()来实现。当客户与组件建立连接时,DCOM就调用ADDREF()增加一个引用计数的值,当客户与组件断开连接时,DCOM就调用RELEASE()减少一个引用计数的值。

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

(5) DCOM的安全性

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

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

3.1 多层结构简介

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

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

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

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

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

3.2 多层结构工作流程

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

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

3.3 编写客户端应用程序

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

(1) DCOMConnection实现DCOM的连接。

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

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

② 使用File/Data Module加入1个数据模块,在这个数据模块中加入3个非可视组件 TDCOMConnection,TClientDataSet,TDataSource;

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

3.4 编写应用服务器程序

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

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

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

(3) 设置相关组件属性,设置TDataSet的DataBaseName以使数据集访问数据库,设置TDataSetProvider的DataSet以与数据集连接,设置TSession组件的AutoSessionName和KeepConnections为True以防止访问冲突。

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

4 DCOM多层应用实例分析

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

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

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

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

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

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

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

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

5 结 语

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

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

参考文献

[1]Microsoft Corporation.DCOM Architecture[EB/OL].ht-tp://www.microsoft.com/com.

[2]Microsoft Corporation.DCOM Technical Overview[EB/OL].http://www.microsoft.com/com.

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

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

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

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

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

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

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

DCOM 篇3

随着计算机网络技术和分布式计算的飞速发展, 越来越多的用户希望能够访问和处理多个不同数据源中的数据。这些数据源有以下特点: (1) 异构。 (2) 各数据源独立自治。 (3) 数据源所在地理位置上分散。 (4) 语义冲突。为了解决这个问题, 必须将多个数据源中的数据集成起来, 为用户提供统一和透明的访问, 在此情况下, 出现了多数据库系统。

多数据库系统是多个现存的、自治的、异构的数据库系统的联合。构成多数据库系统的各数据库系统称为局部数据库系统, 它们有自己的局部数据库管理系统。多数据库系统在所有局部数据库系统之上构成全局系统管理层, 提供外部用户接口, 使用户能实现对异构数据库的透明访问。

二、基于COM/DCOM的多数据库系统结构

COM (Component Object Model, 组件对象模型) 是Microsoft建立的基于二进制标准的模型, COM定义了组件和它们的客户之间互相作用的方式。它使得组件和客户端无需任何中介组件就能相互联系, 允许程序员用特定的编程语言来创建模块话的、面向对象的、可升级的应用程序, 并帮助程序员开发与其他组件通信的组件, 而不管他用什么语言或开发工具。

DCOM (Distributed Component Object Model, 分布式组件对象模型) 是COM的进一步扩展, 它支持不同的两台机器上的组件间的通信, 而且不论它们是运行在局域网、广域网、还是Internet上。DCOM为分布式应用提出了良好的规范和应用标准, 具有平台无关性、协议无关性、语言无关性、组件位置独立性和可扩展等优点, 借助它, 应用程序将能够任意进行空间分布。

构成多数据库系统的局部数据库系统是已经存在的, 由于各个局部系统中存储数据的模式之间可能存在冲突, 每个局部数据库系统定义的完整性约束也可能相互矛盾, 所以多数据库系统的主要任务就是隐藏这些局部数据库系统之间的不同, 使多数据库系统的全局用户忽略这些不同, 能够从分布式异构系统中获得有效的数据。多数据库系统中的数据源一般不是存放在同一个地方, 而是分散存储在多个能够相互通信的不同场地数据库系统或文件系统中, 而这些数据库系统又具有高度自治性, 每个局部数据库系统不受其他系统的影响和控制。异构性体现在平台和数据两方面, 环境的异构性意味着每个数据源可能具有独立的平台, 包括不同的系统硬件、不同的操作系统和不同的通信协议等。数据的异构性意味着不同的系统采用不同的数据描述方法。

多数据库系统的体系结构如图所示。

三、系统实现

C#是一种现代的面向对象语言, 是在C++基础上发展起来的一种面向对象的可视化编程语言, 是一个更为灵活、高集成的软件开发环境。它使程序员快速便捷地创建基于Microsoft.NET平台的解决方案。这种框架使C#组件可以方便地转化为X M L网络服务, 从而使任何平台的应用程序都可以通过Internet调用它。在C#中, 每个对象都自动生成为一个C O M对象。开发者不再需要显式的实现IUnknown和其他COM接口, 这些功能都是内置的。类似的, C#可以调用现有的COM对象, 无论它是由什么语言编写的。C#面向对象的卓越设计, 使它成为构建各类组件的理想之选。

数据库访问技术主要有ODBC、OLE DB, DAO, ADO等, 本文采用目前流行的ADO (Active X Data Object) .NET。ADO.NET是ADO的一个跨时代的改进, 它提供了平台互用性和可伸缩的数据访问, 允许和不同类型的数据源及数据库进行交互。由于现在使用的数据源有多种, SQL Server、OLE DB、ODBC、Oracle等, 在编写应用程序的时候就要针对不同的数据源编写不同的接口代码, 这很麻烦, 效率也不高, 针对这一问题ADO.NET的Data Provider (数据提供者) 向应用程序提供了统一的编程界面, 向数据源提供了多种数据源的接口, 这样一来就可使应用程序不需关心什么数据源, 即对数据源进行了屏蔽, 其好处是无论什么样的数据源, 对于应用程序来说只提供一种编程模式即可。ADO.NET主要用于分布式应用程序提供数据访问机制。除了访问来自数据源的数据外, ADO.NET可以修改、添加和删除来自数据源的数据。ADO.NET中包含数据提供者, 他们用于连接到相应的数据源, 并使得用户可以访问或修改数据源中的数据。

1. ADO.NET由Data Provider和数据集Data Set两大组成部分, 有以下六个数据访问对象:

(1) Connection对象:与数据源建立连接。

(2) Command对象:Command的作用主要是把一条SQL语句解释成一个命令对数据库进行相关的操作 (如插入、查询、更新、删除等) 。

(3) Data Reader对象:Data Reader提供一个对数据库进行快速、只读数据流的访问方式。

(4) Data Adapter对象:数据适配器, 在Data Set与数据库之间, 形成了Data Set与数据库的桥梁, 执行从Data Set到数据源的数据读写操作或相反方向上的操作, 充当Data Set与数据源之间的接口, 将数据源中的数据写入Data Set, 或根据Data Set中的数据更新数据源。

(5) Data Set对象:数据集对象, 为来自数据源的数据提供关系视图。

(6) Data View对象:用于显示Data Set中的数据, 用来在观察数据时提供排序和过滤的功能。

通过上述ADO.NET的数据访问对象描述中可得到C#中从数据库查询记录的方法有两种:一种是通过Data Reader对象直接访问;另一种则是通过数据集Dataset和Data Adapter对象访问。

2. 按照以下几个基本步骤来用ADO.NET连接数据库:

(1) 创建和数据库连接的Connection对象。

例如与SQL Server数据库创建连接的部分代码:

sting cs="Data Source=数据库服务器名;user id=登陆名;password=登陆密码;Initial Catalog=数据表名称";//创建连接参数

Sql Connection my Connection=new Sql Connection (cs) ;//创建一个Sql Connection实例

my Connection.Open () ;//打开连接

...

my Connection.Close () ;//断开连接

(2) 配置Data Adapter对象并创建和操作数据集Data Set。

(3) 将数据库中的表添加到Data Set中。

(4) 把数据集Data Set绑定到Data Grid上。

数据在用户终端的显示是通过在页面上调用Data Gid控件, 通过HTML表现出来。

系统中, 利用ADO.NET技术实现了在多个数据库中灵活透明的访问数据源, 并且能够通过程序的方法对这些数据源中的数据进行动态的添加、修改、删除等操作。

四、结束语

本文提出一种基于COM/DCOM的多数据库模型, 可以有效地集成各种分布的、异构的数据库系统, 使之成为一个多数据库系统。系统利用ADO.NET技术实现了对多个数据源的访问, 根据用户所要操作的数据库, 来连接不同的数据库服务器, 并且能够通过编程的方法对这些数据进行动态的添加、修改、删除等更新操作, 具有一定的事务处理能力, 为用户提供一个透明的访问接口。该系统具有可扩展性, 操作性强, 可靠性高等特点, 在企业集成应用系统中将起到重要的作用。

摘要:本文提出一种基于COM/DCOM的多数据库系统模型, 利用COM/DCOM解决系统的分布性和异构性, 该方案可以有效地集成各种分布的、异构的数据库系统。该系统的研制对企业集成系统等的应用起到重要作用。

关键词:COM/DCOM,多数据库,C#,ADO.NET

参考文献

[1]李瑞轩:《多数据库系统原理与技术》.电子工业出版社, 2005年11月

[2]徐成敖等:《c#专业项目实例开发》.中国水利水电出版社, 2007年1月

[3]王家华等:《基于COM+异构数据库访问实现技术》.西安石油学院学报 (自然科学版) , 2003年11月

DCOM 篇4

网络技术的迅速发展使分布式计算与面向对象的结合具有良好的应用前景。越来越多的系统采用了分布式对象技术, 这些系统通常具有一些共同的需求, 比如远程调用、版本控制、负载平衡和容错性等[1]。

日志作为试验过程的运行过程的记录和描述,在测试数据较多的测试系统中占有重要的地位。本文以DCOM(分布式组件对象模型)技术为基础,通过LAN总线读取分布在该网络上的测试仪器参数,将获得到的参数信息转化为直观的日志信息,通过VC编程,自动化生成日志文件,较大的方便了测试人员和后期数据处理人员, 提高了速度和效率。

2需求分析

在紧缩场测试系统日常小目标RCS测试试验中,测试系统主控软件针对测试的项目类型,生成不同的数据文件(背景文件rcsb.dat,定标体文件rcsc.dat,目标体文件rcs t.dat ),在试验开始后,主控软件通过自身配置的GPIB卡与矢量网络分析仪的GPIB总线接口进行通信, 读取测试数据并将数据写入已生成的数据文件中,在测试过程中,数据文件不断增大,测试结束后,数据不再写入, 数据文件大小固定。

在测试结束后, 需要对测试过程进行记录, 包括测试的项目、测试内容、天线极化方式、测试人员、测试日期等基本内容,还包括本次测试的设备参数、被保存文件名称等详细信息。由于该测试系统主控软件没有设计日志生成功能模块,且该软件为封装好的e xe可执行文件, 无法对功能模块进行更新或添加, 在日常的测试任务中, 只能手动填写相关信息, 建立所需要的试验日志, 来满足测试任务后期的数据处理工作。

作为RCS小目标反射特性测试系统,每次试验任务产生的数据文件较多, 采用手工方式进行日志记录, 占用时间较多,严重阻碍了试验速度和效率;且一旦出现一点错误, 都会严重影响后期数据处理的准确性, 甚至需要重新进行测试。

针对测试软件存在的不足,提高试验任务的速度和效率, 降低由于失误而引起的数据误差, 设计了试验日志自动生成系统。

3主要技术及方法

矢量网络分析仪作为该系统的主要测试仪器, 提供了两种仪器控制方式,即GPIB总线方式和LAN总线方式[2]。

测量主控软件采用的是GPIB总线方式实现对测试仪器的数据读取及远程控制,且该测量软件为封装好的应用程序,无法对测试软件进行更新改进。主控计算机只配备一个GPIB卡,已被测试主控软件占用,无法再通过G P I B总线方式实现测试参数的读取,故该系统在设计时,只能采用LAN总线方式实现对测试参数的读取。对读取到的测试参数信息进行转换,得到所需要的日志信息, 并进行临时存储和最后日志文件的转换。

3.1DCOM技术实现测试仪器参数远程读取

DCOM(Distributed Component Object Model)技术实现了COM组件的远程调用。DCOM是COM的扩展, 它可以支持在不同计算机上组件对象与客户程序之间或者组件对象之间的相互通信,这些计算机可以在局域网内,也可以在广域网上,甚至通过Internet进行连接。DCOM为在网络不同节点的组件提供了互操作基础,它可以作为分布式应用系统的基木框架, 客户程序与DCOM组件之间形成了客户/ 服务器关系,进一步可以构成多层软件模型[3]。

在本系统中,矢量网络分析仪相当于DCOM组件的服务器, 主控计算机通过网线模式与矢网进行连接, 采用V C+ + 语言,对矢网进行远程访问,控制矢网参数的读取{ 4 , 5 }。其实现过程如下:

(1) DCOM设置

DCOM设置由以下4部分组成:

1在计算机上注册网络分析仪应用程序;

2在计算机上复制和注册835xps.dl;

3在计算机上复制和注册PNA类库835x.tlb;

4在计算机上复制和注册FCA类库fca.tlb;

其实现方法是打开矢量网络分析仪计算机, 按照下列路径, 打开该文件夹C :P r o g r a m FilesAgilentNetwork AnalyzerAutomation,复制该文件夹下pnaproxy.exe文件到需要配置的计算机上,双击该文件,按照默认路径进行安装,安装完成后,以上4部分均注册完成。

此时,已成功在计算机上完成了PNA的DCOM数据库的配置。

(2) 参数读取

在头文件中加入#import "C:/ProgramFiles/Common Files/Agilent/PNA/835x.tlb"no_namespace, named_guids语句,通过以下代码,即可实现对矢量网络分析仪测试参数的读取。

通过DCOM技术利用LAN总线实现对矢量网络分析仪的参数的远程读取。

3.2数据文件检测及命名。

检测流程如下图所示:

数据文件检测以试验开始前所选择的测试项目为依据,根据测试项目对数据文件进行检测。在测试过程中,数据文件用来保存通过G P I B总线采集到的测试仪器数据, 其数据文件大小是变化的, 故在检测到该数据文件存在后, 需要对数据文件大小是否变化进行判断, 如果数据文件大小固定, 则认为本次测试结束, 对数据文件进行重命名; 否则,继续判断。

3.3日志文件临时存储

由于在试验过程中测试数据较多, 数据文件多少不定, 为了及时释放系统存储空间, 对测试过程中产生的需要存储的日志信息进行临时存储, 测试结束数据存储转换以后对临时文件进行删除。其存储过程如下: 软件启动以后, 检测临时文件是否存在, 如果不存在, 则自动生成临时文件, 并将转换好的日志信息存储到临时文件中; 如果临时文件存在, 则查找文件尾部, 将转换好的日志信息继续写入文件尾部。测试结束以后, 关闭临时文件。

临时文件存储过程如图2所示:

3.4Excel试验日志自动生成

在VC++ 中采用Excel组件对象模型,实现测试数据由文本文件到E x ce l文件的自动化存储。

在V C + + 中实现E x c e l的自动化编程, 采用以下步骤[6]:

(1) 初始化COM组件。

(2) 建立Application对象。

(3) 调用Application对象提供的方法和属性,实现自动化。

(4) 关闭Application对象。

(5) 取消COM组件的初始化。

通过上述方法,可以实现V C对E x c e l组件对象模型的调用, 实现试验日志的自动生成。

其生成过程如下: 读取临时文本文件数据, 获得存储数据个数及需要存储的日志基本信息, 通过循环程序,将日志基本信息写入S h e e t表格中,并依据测试内容, 对表格进行命名。其实现流程为如图3所示。

4系统组成及流程

该系统主要实现试验日志的自动生成功能,并工作于R CS测试系统试验的全过程。

4.1系统组成

该软件主要由测试参数获取模块、日志信息转换模块、数据文件检测及命名模块、日志文件存储及生成模块等4个功能模块组成。

4.2工作流程

系统的工作流程如下: 在测试开始前, 根据试验任务实际, 填写试验信息, 包括测试项目、测试内容、天线极化方式、测试人员、备注等详细信息;在试验过程中, 每次测试结束后, 通过参数获取模块获得矢量网络分析仪的测试参数, 包括起始频率、终止频率、中频、 功率、扫描点数等信息;并将读取到的参数信息按照一定的数据格式重新组织, 结合试验信息, 将测试参数信息转换为所需要的数据格式并进行存储;存储结束后,依据本次测试的项目类型, 对生成的数据文件进行检测, 并对检测到的数据文件按照日志信息转换模块组织好的数据格式进行重命名; 重命名结束后, 对日志信息以txt文本的形式进行临时存储,在该项目测试结束后,将临时存储在文本文件中的测试信息读取出来,以测试要求的EXCEL文件进行存储,得到所需要的试验日志。

其工作流程如下图所示:

4.3生成日志文件结果

按照上述方法, 对某一目标进行测试, 测试数据文件在测试过程中进行自动记录, 生成相应的日志文件, 生成日志文件内容如下图所示:

5结束语

通过DCOM技术,利用LAN总线实现了对矢量网络分析仪的远程参数读取, 通过信息转换, 将读取到的参数信息转换为所需要的日志信息,实现了测试过程中日志信息及日志文件的自动化存储与生成。效率和准确度较之手动存储都有了较大幅度的提高。该日志文件在后期数据处理过程中,为数据处理人员提供了参考依据。同时,该系统的设计思路和设计方法可为其他测试系统日志文件的生成设计提供一定的参考依据。

摘要:针对紧缩场测试系统手工录取测试信息存在的问题,设计与实现了一种基于DCOM技术实现的自动录取与生成系统。借助于该系统,可以通过网络通讯技术对矢量网络分析仪测试参数的读取,实现试验过程的参数记录和测试数据文件的重命名,并自动生成测试日志信息,较大幅度的提高了试验效率和速度。该系统也可为其他测试系统的测试数据文件的自动化存储提供参考依据。

【DCOM】推荐阅读:

上一篇:灾变特点下一篇:汉语标识语

本站热搜

    相关推荐