欢迎来到学术参考网

基于.NET的远程分布式数据库查询系统设计与实现

发布时间:2015-11-16 12:00

摘 要:本文以分布数据信息查询和应用实际出发,以分布在异地的两所高校为研发背景,实现远程分布式数据库查询系统,实现信息资源共享的目标。并对涉及的异地数据通信技术、远程对象的建立、发布等技术进行详细讨论。

关键词:C# ;系统设计; 系统实现;相关技术
随着计算机网络、数字通信技术和数据库的发展,办公方式逐渐向自动化方向发展,数据的分布存储和分布处理的分式数据库系统的应用越来越广泛,因此对数据的查询要求也越来越高,异地查询是急需解决的问题之一。本文以所在单位与其兄弟单位为研发背景,以远程分布式数据库查询系统为出发点,讨论基于.NET的远程分布式数据库查询系统的设计方案及实现,并着重介绍在此实现过程中涉及的c#.NET的Remoting技术解决各异地间数据的通信问题,远程对象的建立、发布与获得方面等技术。
1. 设计思路
  本系统以两所高校为例,建立一个简单的远程分布式数据库查询系统,以实现两所高校的学生住处的本地数据库查询、远程数据库查询及本地异地数据库联合查询的功能。
  查询分为3种类型,即本地查询、远程查询和联合查询。设计思路如下:首先为系统设计统一的数据库,分别存放于两地,数据库系统以SQL Server作为后台;其次,建立一个提供数据库服务(DbServer)的动态链接库(DLL),将查询时所要用到的一些服务(如远程对象的发布和获得等)和函数(如本地异地数据表的查询、数据表的远程创建和删除、表间的连接和合并等)置入该DLL中,各地需要使用此DLL,以便查询时对一些服务和函数进行调用。开发客户端查询界面,包括3个查询任务:本地查询、远程查询和联合查询,远程分布式数据库查询系统的业务流程如图1所示。
  
2. 关键技术
2.1 分布式数据库技术
  分布式数据库技术的关键是系统能够发布本地的远程对象并获取异地所发布的远程对象。要发布远程对象,首先要设置一个网络端口号,然后创建并注册一个通道,最后发布该服务器端的激活对象。异地服务器根据IP地址和网络端口号即可获取所发布的远程对象。
2.1.1 远程对象的发布
  创建一个信道:信道可跨越远程处理边界传输消息。当客户端调用远程对象时,该调用即被序列化为一个消息,该消息通过客户端信道发送并通过服务器信道接收。然后将其反序列化并进行处理。所有返回值都通过服务器信道传输,并通过客户端信道接收。如:TcpChannel MyChannel=new TcpChannel((port))。
2.1.2 远程对象的获取
     Activator类提供了相应的方法,用以在本地或从远程创建对象类型,或获得对现有远程对象的引用。其中,GetObject()方法为已知对象或XML Web Services创建一个代理。
2.2  访问数据库
  通过访问数据库,将数据源中的数据导入DataSet对象中,在DataSet对象中可对数据表进行各种操作,而且DataSet对象本身也可远程传递,这为开发分布式数据库系统提供了极大方便。使用访问数据库涉及以下两个类:1.访问数据库,首先建立与数据库的连接,使用OleDbConnection类连接到OLE DB数据源,通过SqlConnection类连接到SQL Server数据库。2.使用OleDbCommand类对象实现对数据库运行创建、插入、删除、更新、查询等操作。
3.基于.NET的远程分布式数据库查询系统程序实现
3.1 建立数据库服务对象(DbServer)的DLL工程
     为实现对远程对象的发布和获取,并完成本异地数据表的查询、数据表的远程创建和删除、表间的连接和合并等操作,首先建立一个提供数据库服务(DbServer)的动态链接库(DLL),将所要用到的服务置入该DLL中,和应用程序一起布置到异地,以便查询时对一些服务和函数进行调用。
3.2  创建数据库和系统表
     系统采用Access作为数据库管理系统,在应用程序布署的各地都有一个相同的本地数据库DDB,该数据库中至少含有4个结构相同的数据表,即:serverIP(服务器信息)表、studentInfo(学生信息)表、studentScoreInfo(学生成绩信息)表和tempNumber(临时表序号)表。
3.3  DBServer的查询方法
     系统的查询分为两种方式,一种是本地查询,另一种是异地查询。
3.3.1 本地查询实现
     本地查询只需传入查询的SQL串即可完成。具体实现代码如下:
  Public DataSet Query(string queryString)
  {
  If (==) ();
  DataSet ds;
  Try
  {
  Ds=new DataSet();
  dataTable dt=new DataTable(“Result”);
  OleDbDataAdapter adapter=new OleDbDataAdapter();
  OleDbCommand myCmd=new OleDbCommand(QueryString,Conn);
  Command=myCmd;
  (dt);
  (dt);
  }
  Finally
  {
  ();
  }
  Return ds;
  }
3.3.2 异地查询实现
     异地查询需要传入查询地的标识与查询的SQL串,即可通过远程对象进行查询。具体实现如下:
  Public DataSet Query(string location,string queryString)
  {
  If(==) ();  //如果连接关闭,则打开数据库连接
  DataSet ds;
  Try
  {
  If (ID==Location)
  {
  Ds=new DataSet();
  DataTable dt=new DataTable(“Result”);
  OleDbDataAdapter adapter=new OleDbDataAdapter();
  OleDbCommand myCmd=new OleDbCommand(QueryString,Conn);
  Command=myCmd;
  (dt);
  (dt);
  }
  Else
  {
  Int index=GetServerIndex(Location);
  Ds=((DbServer)DbServerList[index]).Query(location,queryString);
  }
  }
  Finally
  {
  ();
  }
  Return ds;
  }
4.结束语
   实践证明,以此方法构建远程分布式数据库查询系统的模型实现容易,具有较强的健壮性和实用价值。
参考文献
[1] 张友生等《软件体系结构》清华大学出版社 2006年11月出版
[2] 王东明,葛武滇. 《Visual C# .NET程序设计与应用开发》 清华大学出版社. 2008年5月出版
[3] 匡松,张淮鑫 《C#开发宝典》 中国铁道出版社 2010年11月出版
作者简介: 杨国军,(1974-),男,软件工程硕士,讲师,主研方向:工作流技术和应用系统集成。

上一篇:关于软件项目管理的未来

下一篇:RSSI距离位置评估的实验分析