基于_NET实现分布式数据库查询
2.系统实现
为了实现远程系统的资源共享,系统结合WebServices和.NET Remoting技术,实现内部和之间的分布式数据库查询,结合ADO.NET解决数据库一致性问题。WebServices和.NET Remoting技术都是非常强大的,但是这两种技术各自有各自的特点,它们适合不同的场合应用。WebServices适合在互操作能力强、Internet、不同的平台(Linux、Unix、Windows)之间进行数据库查询等场合。而对于内部网、平台安装有.NET组件的、数据库查询的性能特别关键的场合,.NETRemoting是更理想的选择。
本文系统结合两种技术,在内部各个校区、各个院系之间通过.NETRemoting进行分布式数据库查询,在之间,只能通过互联网进行访问,而且多为不同的操作系统,则采用Web Services实现,如图1所示。
用户调用层、业务逻辑层、数据处理层、远程数据调用接口和数据库。数据库为各个远程教学系统中的数据库,可以是SQLServer、DB2,也可以是Oracle、MySQL。远程数据调用接口为数据的调用部分,在内部,需要快速数据获取,采用Remoting技术实现。在之间利用WebServices技术实现数据的调用。上面一层为数据处理层,数据处理层负责将多个数据库来源的数据进行有效的整合。数据处理层上面是业务层,业务层负责根据用户的需求,进行分析,分析数据的调用逻辑。上面一层是用户调用层,用户可以通过WebServices的客户端或者IE进行调用,也可以通过Remoting的客户端调用。
调用流程为:用户(内部用户和外部用户)将数据查询的请求通过客户端的调用或者Web Services服务提交给业务逻辑层。业务逻辑层根据用户提交的需求,进行相关的分析,将分析结果传给下层的数据处理层,如需要查询哪个数据库的哪张表,数据处理层透明的进行数据处理后,将结果返回给业务层,业务层将数据传输给用户。数据处理层根据业务逻辑层传递下来的处理逻辑,从各个不同地点的数据库系统之上的Web Services服务和Remoting远程对象进行查询。然后进行整合处理,然后将最后的结果传回客户端。
3 Web Services的实现
Web Services通过WSDL(web services description language)来描述和定义应用程序,通过SOAP(simple object access proto-col)进行访问,在注册中心UDDI(universal description discoveryand integration)发布,从而应用程序可以搜索并定位到该服务。Web Services的构架包括3个清晰的角色定义,如图2所示。
图2 Web Services系统架构
Microsoft.NET的Web Service技术为实现分布式数据库的访问提供了强有力的支持。由于Web Services的所有协议都基于标准的Web协议。客户端可以通过Internet调用WebSer-vices,获得和发送基于XML的串行格式数据。这样,即使各数据库在地理上分布地很广,对于位于不同地点的不同数据库系统之上的WebService,其客户端仍然可以穿越防火墙,通过Internet得到相同格式的数据。由于各个在地理上是分布的,而且系统之间存在着差异性,且均采用了防火墙对其进行了相应的数据保护措施,采用Web Services技术,则是最合适的选择。
系统在各分布的数据库之上架构了WebServices服务,如图3所示。各个现存的各个系统提供相应的WebServices服务,各个根据自身的逻辑与数据库处理方式,开发与部署Web Services。
数据处理层根据用户提交的请求,调用单个或多个远程的Web Services服务,如图所示,获得远程数据库中的数据。
4基于.NET Remoting的实现
.NET框架的远程处理技术是Visual Studio.NET提供的构建分布式应用的一种编程模型,是DCOM的改进和替代版本。该技术简化并系统化了创建分布式应用程序的方法,支持HTTP、SOAP及XML标准,支持进程间协同工作。从而为分布式数据访问提供了一个良好的模型。远程处理过程如图4所示。
图4远程处理过程
服务器端创建一个服务器类实例,远程处理系统创建一个表示该类的代理对象,并向客户端对象返回一个对该代理的引用。当客户端调用方法时,远程处理代理检查类型信息,并通过信道将该调用发送到服务器进程。侦听信道获得该请求并将其转发给服务器远程处理系统,服务器远程处理系统查找(或在必要时创建)并调用被请求的对象。然后,此过程将反向进行,服务器远程处理系统将响应捆绑成消息并由服务器信道发送到客户端信道。最后,客户端远程处理系统通过代理将调用的结果返回给客户端对象。
客户端通过.NET Remoting,以TCP通道进行访问服务端对象。这种方式不但可以以服务的方式来发布服务器对象。而且实现客户端和服务器端对象的松散耦合,同时也优化了通信的性能。对内部各个院校、各个部门、各个系之间的数据查询需要较高的性能,利用.NET Remoting可以更有效的提供数据库查询。
如图5所示,客户端根据用户的查询需求,对查询SQL进行解析,解析后通过透明代理向各个远程对象发送命令。远程对象调用其通过ADO.NET接口访问数据库,生成数据库的一份拷贝缓存到数据集中,服务器端维护该对象中数据集的状态,根据用户的请求向客户端返回数据。客户端将返回的结果集进行合并,显示给用户。
图5基于.NET Remoting技术的分布式
数据库查询实现过程
在内的各个系统上实现远程对象,远程对象部署在各个服务器端。远程对象通过服务器端进行注册,客户端通过TCP通道与服务器端远程对象通信,实现数据集的查询和传输。服务器端对象通过ChannelServices类的RegisterChannel方法建立服务器通道,利用RemotingConfiguration类的Regis-terWellKnownServiceType方法激活远程对象,使服务器端处于监听状态。服务器激活模式设置为Singleton模式。在这种激活模式中,任何时候内存中均只有一个实例,所有客户端都接受该实例提供的服务。客户端同样用ChannelServices类的Re-gisterChannel方法建立客户端通道,通过Activator类的静态方法GetObject激活客户端同服务器端通信,服务器接收到客户端的请求后,按客户端SQL语句调用远程对象上的方法实现对数据库的访问。
5 ADO.NET技术的使用
除了利用Web Services和Remoting技术对数据库实现远程的查询外,如何整合各个数据查询的数据,实现各数据之间的完整性调用等问题是系统的关键。系统利用数据处理层,结合ADO.NET技术,实现统一数据处理。
ADO.NET以XML为核心,是.NET数据库应用程序的解决方案。它使用离线数据结构,数据源中的数据被缓存到数据集DataSet对象中,用户无须锁定数据源,数据以XML格式保存。在分布式数据库系统中,很可能出现多个用户同时访问和修改数据的情况,因此,对于分布式数据库系统,数据一致性是不可或缺的。ADO.NET通过使用乐观一致性方案来控制数据一致性,即数据行只有在数据库中真正被更新时才会被锁定。因此,使用ADO.NET能够在更少的时间内响应数量巨大的用户。另外,对于数据库一致性的问题,ADO.NET,即使用DataSet对象为每一条修改过的记录维护两个版本:原始版本和更新版本,在更新的记录被写回数据库之前,先要把数据集中记录的原始版本与数据库中的当前版本进行比较,如果两个版本匹配,就在数据库中更新记录;否则,就会出现违反一致性原则的错误。
通过ADO.NET访问数据库,可以方便地连接数据库,将数据源中的数据导入DataSet对象中,在DataSet对象中可对数据表进行各种操作,而且DataSet对象本身也可
上一篇:
基于net和ArcGIS_Engine房产信息系统设计与实现
下一篇:
马原:环境保护与可持续发展论文(word)