知识大全 .NET Remoting 实现分布式数据库查询

Posted

篇首语:所谓的成熟、其实就是在不断看开狠多事情之后、更好的生活着。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET Remoting 实现分布式数据库查询相关的知识,希望对你有一定的参考价值。

.NET Remoting 实现分布式数据库查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  开始动手之前 你需要了解 NET Remoting 技术的基本理论 熟悉分布式数据库原理 熟练掌握ADO NET 并熟悉VS NET的开发环境 下面仅就这几个方面做些简单的介绍     Remoting 一种分布式处理方式 也可将它看作是D的一种升级 它改善了很多功能 并极好的融合到 Net平台下 NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架     在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的     首先 客户端通过Remoting 访问通道以获得服务端对象 再通过代理解析为客户端对象 这就提供一种可能性 即以服务的方式来发布服务器对象 远程对象代码可以运行在服务器上(如服务器激活的对象和客户端激活的对象) 然后客户端再通过Remoting连接服务器 获得该服务对象并通过序列化在客户端运行     在Remoting中 对于要传递的对象 设计者除了需要了解通道的类型和端口号之外 无需再了解数据包的格式 但必须注意的是 客户端在获取服务器端对象时 并不是获得实际的服务端对象 而是获得它的引用 这既保证了客户端和服务器端有关对象的松散耦合 同时也优化了通信的性能      分布式数据库系统    就其本质而言 分布式数据库系统的数据在逻辑上是统一的 而在物理上却是分散的 与集中式数据库相比它有如下主要优点     · 解决组织机构分散而数据需要相互联系的问题     · 均衡负载 负载在各处理机间分担 可避免临界瓶颈     · 可靠性高 数据分布在不同场地 且存有多个副本 即使个别场地发生故障 不致引起整个系统的瘫痪     · 可扩充性好 当需要增加新的相对自主的组织单位时 可在对当前机构影响最小的情况下进行扩充      ADO NET    分布式数据库系统虽然有诸多优点 但它同时也带来了许多新问题 如 数据一致性问题 数据远程传递的实现 通信开销的降低等 这使得分布式数据库系统的开发变得较为复杂 幸运的是 微软的 NET开发环境为我们提供了C#开发语言和ADO NET数据访问模型 结合两者来开发分布式数据库系统能够大大简化开发工作     ADO NET以XML为核心 是 Net数据库应用程序的解决方案 它使用离线数据结构 数据源中的数据被缓存到数据集(DataSet)对象中 用户无须锁定数据源 数据以XML格式保存 在分布式数据库系统中 很可能出现多个用户同时访问和修改数据的情况 因此 对于分布式数据库系统 数据一致性是不可或缺的 ADO NET通过使用乐观一致性方案来控制数据一致性(实际上DataSet对象被设计成支持使用乐观一致性控制机制) 即数据行只有在数据库中真正被更新时才会被锁定 而在悲观一致性方案中 数据行在从被提取出来到在数据库中更    新这段时间内一直被锁定 因此 使用ADO NET能够在更少的时间内响应数量巨大的用户     另外 在分布式数据库系统中 还会经常遇到当用户修改自从提取出来以来已经被修改的行时 违反一致性原则 对此问题ADO NET也作了很好地解决 即使用DataSet对象为每一条修改过的记录维护两个版本 原始版本和更新版本 在更新的记录被写回数据库之前 先要把数据集中记录的原始版本与数据库中的当前版本进行比较 如果两个版本匹配 就在数据库中更新记录 否则 就会出现违反一致性原则的错误     下面开始程序实现      第 章 系统总体结构     总体结构图    系统实现需要部署服务器端的远程对象(即一个DbServerLibrary dll) 服务器端要注册通道和该远程对象 客户端要实现一个本地查询的服务器 同时根据SQL解析的结果向各个服务器发送命令 并将结果显示在客户端界面 服务器端可以接受并显示相应的命令      关键组件结构图    系统结构中关键的组件有远程对象 和本地服务器 实现的功能基本一致 下面以远程对象为例 说明组件的实现 远程对象在服务器端解决方案下的库文件中声明 通过服务器端进行注册 客户端通过TCP通道与服务器端远程对象通信 实现数据集的查询和传输 主要的数据成员有 SqlConnection(SQL Server数据库的连接对象) SqlCommand (SQL命令对象) SqlDataAdapter(数据适配器 填充数据集)组件——DbServerLibrary:     第 章 数据字典结构    因时间仓促 未实现数据字典 所有实验要求的SQL经过解析后 直接通过代码判断 向相应场地发送命令      第 章 代码结构    代码分为三部分 远程对象 服务器端代码和客户端代码     其中 远程对象部署在各个服务器端 客户端除了实现查询命令的解析和传送外外 还有一个本地服务器 进行相应的本地查询     远程对象代码     using System;    using System Runtime Serialization;    using System Data;    using System Data SqlClient;    using System Windows Forms;    namespace DbServerLibrary        [SerializableAttribute]  //It is very important for Remoting Data    public class DbServer : MarshalByRefObject        private string connStr;    private string clientSql;    public SqlConnection sqlConn;    public SqlCommand sqlComm;    public SqlDataAdapter sqlAdapter;    public void GetClientSql(string sql)        if(clientSql != null)        clientSql = null;        clientSql = sql;    MessageBox Show(clientSql);        public DbServer()        //LocalData Initialize    connStr = Data Source = localhost;Initial Catalog=DDB;User ID=sa;Password=; ;    sqlConn = new SqlConnection(connStr);        public DataSet GetDataSet() // 执行select        DataSet ds = new DataSet();    if (sqlComm != null)        sqlComm = null;        if(sqlConn State == ConnectionState Closed)        sqlConn Open();        try        sqlComm = new SqlCommand();    sqlComm Connection = sqlConn;    sqlComm CommandText = clientSql;    sqlComm CommandType = CommandType Text;    sqlAdapter = new SqlDataAdapter();    sqlAdapter SelectCommand = sqlComm;    sqlAdapter Fill(ds);        catch(SqlException ex)        MessageBox Show(ex Message);        return ds;      public int ExecuteSql()  //执行insert和delete        int affectedNumber;    if (sqlComm != null)        sqlComm = null;        if(sqlConn State == ConnectionState Closed)        sqlConn Open();        try        sqlComm = new SqlCommand();    sqlComm Connection = sqlConn;    sqlComm CommandType = CommandType Text;    sqlComm CommandText = clientSql;    affectedNumber = sqlComm ExecuteNonQuery();    return affectedNumber;        catch(SqlException ex)        MessageBox Show(ex Message);    return ;                    服务器端代码     private void frmSupplierServer_Load(object sender System EventArgs e)        TcpChannel chan = new TcpChannel( );    ChannelServices RegisterChannel(chan);    //注册提供服务的远程对象     RemotingConfiguration RegisterWellKnownServiceType(typeof(DbServerLibrary DbServer)                 DbServer WellKnownObjectMode Singleton);        客户端代码     解析SQL SqlParse cs    namespace SupplierClient        public class SqlParse        //得到sql语句的类型    public string GetSqlType(string sqlText) //type of SQL statements            //得到select语句要查询的表名    public string GetSelectTableName(string sqlText)            //得到select语句中的where子句    public string GetWhereClause(string sqlText)     cha138/Article/program/ASP/201311/21754

相关参考

知识大全 Microsoft .NET Remoting技术概述

Microsoft.NETRemoting技术概述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 让.NET Remoting更快些-IPCChannel

让.NETRemoting更快些-IPCChannel  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 .NET Remoting程序开发入门篇

.NETRemoting程序开发入门篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一Remoti

知识大全 利用C#实现分布式数据库查询

利用C#实现分布式数据库查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随着传统的数据库计算

知识大全 asp数据库查询代码

cha138/Article/program/net/201311/14104

知识大全 asp版域名查询的数据库接口

cha138/Article/program/net/201311/14459

知识大全 .Net PetShop4.0分布式数据库设计

.NetPetShop4.0分布式数据库设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据库作

分布式数据库系统有哪些主要特性?

  分布式数据库系统有以下主要特性  (1)数据独立性;  (2)自治性与共享性;  (3)冗余数据的全局控制;  (4)并行性、一致性和可恢复性;  (5)查询优化特性。

分布式数据库系统有哪些主要特性?

  分布式数据库系统有以下主要特性  (1)数据独立性;  (2)自治性与共享性;  (3)冗余数据的全局控制;  (4)并行性、一致性和可恢复性;  (5)查询优化特性。

知识大全 解Remoting无法传输存储过程参数

解Remoting无法传输存储过程参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在项目的开发中