系统的实现及相关技术
1、分布式数据库
分布式数据库是一组逻辑上属同一系统,但物理上分布在计算机网络的不同结点的结构化数据的集合。与集中式数据库相比它有如下主要优点:可解决组织机构分散而数据需要相互联系的问题;均衡负载——可避免临界瓶颈;可靠性高——个别场地发生故障,不致引起整个系统的瘫痪;可扩充性好——可在对当前机构影响最小的情况下进行扩充。
分布式数据库中的核心问题就是如何来确定数据在计算机网络中各个场地的分配方案,包括数据的分布、分割和冗余设计。本系统中使用了水平分片和诱导分片相结合的分布方案,数据完整性通过表间关系来限定,并通过在程序中捕获异常来向用户报告错误信息。
2、ADO.NET
分布式数据库技术具有诸多优点,但同时也带来新的问题,如:数据一致性问题、数据远程传递的实现、通信开销的降低等,使得分布式数据库系统的开发变得较为复杂。解决这些问题的一个理想方案就是采用 .NET框架提供的ADO.NET数据访问模型。ADO.NET通过使用乐观一致性方案来控制数据一致性,能够在更少的时间内响应数量巨大的用户。这两种技术的结合相得益彰,大大简化了开发分布式数据库系统的工作量和难度。
3、远程对象的实现、发布和获取
首先,在类库中声明一个派生自MarshalByRefObject 类的远程对象类,其中定义了远程调用所需的服务,如:数据的查询、表间的连接和合并等。利用ADO.NET 的强大功能可以轻松实现各种数据服务,尤其它提供了对SQL SERVER的优化支持,如果底层数据库使用SQL SERVER,将获得比使用其他数据库系统更好的性能。然后通过动态链接库技术将该远程对象类封装为一个 dll,然后分发到各个场地。
服务器端发布远程对象时,首先要设置一个端口号,然后创建并注册一个通道,最后发布该服务器端的激活对象。其它场地的服务器根据IP地址和网络端口号即可方便地获取所发布的远程对象。实现远程对象发布和获取的关键代码如下:
远程对象的发布:
TcpChannel chan = new TcpChannel(8888); ChannelServices.RegisterChannel(chan); RemotingConfiguration.RegisterWellKnownServiceType(typeof(DbServerLibrary.DbServer),"DbServer", WellKnownObjectMode.Singleton); //以Singleton模式发布该服务器端激活对象 |
远程对象的获取:
dbServer = (DbServerLibrary.DbServer)Activator.GetObject(typeof(DbServerLibrary.DbServer), "tcp://219.224.xx.xx:8888/DbServer"); |
4、应用程序的部署
实现远程对象后,可以采用多种方式进行应用程序的部署,比如,可以将每个服务器端的远程对象程序集(DbServerLibrary.dll)部署到客户端应用程序,为增强安全性也可以通过部署元数据程序集或接口数据集来达到同样的实现。本系统实现时,采用了部署元数据程序集的方式,并进行了以下模拟:同样一台机器通过使用不同的数据库文件,来分别模拟一台服务器和本地客户端。这样,在两台机器上就可以测试本系统。
系统启动后,首先将各个场地的服务器应用程序启动,通过注册的端口接收客户端发来的请求。客户端在获取用户查询请求后,首先通过SQL命令解析模块,并查询数据字典,将命令进行分解和重组,然后初始化远程对象的代理,将命令分配被相应的远程对象代理,调用远程对象的方法,并将结果集返回,最后在界面上显示结果集,从而完成用户请求。
总结 分布式应用程序以其高度的可扩展性和可伸缩性,同时由于资源共享提高了系统的性价比,已经得到广泛的研究和应用,各种分布式计算对象和平台也得到了延伸和拓展。.NET Remoting 是.NET框架提供的一项强大的技术,利用它可以使位于任何位置的应用程序互相通信,这些应用程序可能运行在同一台计算机上,或者局域网内的不同计算机上,也可能位于相隔万里的有巨大差异的网络中。
使用.NET Remoting技术结合ADO.NET能够高效、可靠地建立分布式数据应用程序的解决方案。其优势在于:通过使用. NET Remoting框架能够方便地解决数据、命令远程传递问题;而通过ADO. NET 对数据库可以方便地进行操作,使分布式数据库系统中对数据库的各种操作更加高效、可靠,同时易于解决数据的完整性和一致性问题。
查看本文来源