NET远程处理框架详解

上传人:woxinch****an2018 文档编号:38980483 上传时间:2018-05-10 格式:DOC 页数:6 大小:58KB
返回 下载 相关 举报
NET远程处理框架详解_第1页
第1页 / 共6页
NET远程处理框架详解_第2页
第2页 / 共6页
NET远程处理框架详解_第3页
第3页 / 共6页
NET远程处理框架详解_第4页
第4页 / 共6页
NET远程处理框架详解_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《NET远程处理框架详解》由会员分享,可在线阅读,更多相关《NET远程处理框架详解(6页珍藏版)》请在金锄头文库上搜索。

1、.NET.NET 远程处理框架详解远程处理框架详解第第 1 1 章章 系统总体结构系统总体结构 1.11.1 总体结构总体结构系统实现需要部署服务器端的远程对象(即一个 DbServerLibrary.dll),服务器端要注册通道和该远程对象。客户端要实现一个本地查询的服务器,同时根据 SQL 解析的结果向各个服务器发送命令,并将结果显示在客户端界面,服务器端可以接受并显示相应的命令。1.21.2 关键组件结构关键组件结构 系统结构中关键的组件有远程对象,和本地服务器,实现的功能基本一致。下面以远程对象为例,说明组件的实现。远程对象在服务器端解决方案下的库文件中声明,通过服务器端进行注册,客户

2、端通过 TCP 通道与服务器端远程对象通信,实现数据集的查询和传输。主要的数据成员有:SqlConnection(SQL Server 数据库的连接对象)、 SqlCommand (SQL 命令对象)、SqlDataAdapter(数据适配器,填充数据集)组件DbServerLibrary。 第第 2 2 章章 .NET.NET 远程处理框架提供的强大技术远程处理框架提供的强大技术因时间仓促,未实现数据字典,所有实验要求的 SQL 经过解析后,直接通过代码判断,向相应场地发送命令。 代码分为三部分:远程对象,服务器端代码和客户端代码。 其中:远程对象部署在各个服务器端,客户端除了实现查询命令的

3、解析和传送外外,还有一个本地服务器,进行相应的本地查询。 远程对象代码: 1.usingSystem; 2.usingSystem.Runtime.Serialization; 3.usingSystem.Data; 4.usingSystem.Data.SqlClient; 5.usingSystem.Windows.Forms; 6.namespaceDbServerLibrary 7.SerializableAttribute/ItisveryimportantforRemotingData 8.publicclassDbServer:MarshalByRefObject 9.priva

4、testringconnStr; 10.privatestringclientSql; 11.publicSqlConnectionsqlConn; 12.publicSqlCommandsqlComm; 13.publicSqlDataAdaptersqlAdapter; 14.publicvoidGetClientSql(stringsql) 15.if(clientSql!=null) 16.clientSql=null; 17. 18.clientSql=sql; 19.MessageBox.Show(clientSql); 20. 21.publicDbServer() 22./Lo

5、calDataInitialize nStr=“DataSource=localhost;InitialCatalog=DDB;UserID=sa;Password=;“; 24.sqlConn=newSqlConnection(connStr); 25. 26.publicDataSetGetDataSet() 27./执行 select 28.DataSetds=newDataSet(); 29.if(sqlComm!=null) 30.sqlComm=null; 31. 32.if(sqlConn.State=ConnectionState.Closed) 33.sqlConn.Open

6、(); 34. 35.try 36.sqlComm=newSqlCommand(); 37.sqlComm.Connection=sqlConn; 38.sqlComm.CommandText=clientSql; 39.sqlComm.CommandType=CommandType.Text; 40.sqlAdapter=newSqlDataAdapter(); 41.sqlAdapter.SelectCommand=sqlComm; 42.sqlAdapter.Fill(ds); 43. 44.catch(SqlExceptionex) 45.MessageBox.Show(ex.Mess

7、age); 46. 47.returnds; 48. 49.publicintExecuteSql()/执行 insert 和 delete 50.intaffectedNumber; 51.if(sqlComm!=null) 52.sqlComm=null; 53. 54.if(sqlConn.State=ConnectionState.Closed) 55.sqlConn.Open(); 56. 57.try 58.sqlComm=newSqlCommand(); 59.sqlComm.Connection=sqlConn; 60.sqlComm.CommandType=CommandTy

8、pe.Text; 61.sqlComm.CommandText=clientSql; 62.affectedNumber=sqlComm.ExecuteNonQuery(); 63.returnaffectedNumber; 64. 65.catch(SqlExceptionex) 66.MessageBox.Show(ex.Message); 67.return0; 68. 69. 70. 71. 服务器端代码:1.privatevoidfrmSupplierServer_Load(objectsender,System.EventArgse) 2.TcpChannelchan=newTcp

9、Channel(8888); 3.ChannelServices.RegisterChannel(chan); 4./注册提供服务的远程对象 5.RemotingConfiguration.RegisterWellKnownServiceType(typeof(DbServerLibrary.DbServer)“DbServer“,WellKnownObjectMode.Singleton); 6. 客户端代码: 解析 SQL:SqlParse.cs 1.namespaceSupplierClient 2.publicclassSqlParse 3./得到 sql 语句的类型 4.public

10、stringGetSqlType(stringsqlText)/typeofSQLstatements 5. 6./得到 select 语句要查询的表名 7.publicstringGetSelectTableName(stringsqlText) 8. 9./得到 select 语句中的 where 子句 10.publicstringGetWhereClause(stringsqlText) 11. 12./得到查询条件中的字段名 13.publicstringGetSelectField(stringsqlText) 14. 15./得到分片依据,返回 Scity 的值 16.publi

11、cstringGetSelectCityValue(stringsqlText) 17. 18./设定 select 语句经解析后的格式 19.publicArrayListSetSelectList(stringsqlText) 20. 21./如果没有分片信息,则向 3 个场地都发送命令 22.publicArrayListSendToAllSite(stringsqlText) 23. 24./得到 insert 语句要查询的表名 25.publicstringGetInsertTableName(stringsqlText) 26. 27./根据插入的表和值,设定场地:INSERTIN

12、TOSupplierVALUES(no,name,city),returncity 28.publicstringGetInsertCityValue(stringsqlText) 29. 30./如果表名是 Supplier,则根据 city 值设定向哪个场地发送命令 31.publicArrayListSetInsertSite(stringsqlText) 32. 33./生成解析后的 insert 命令列表 34.publicArrayListSetInsertList(stringsqlText) 35. 36.namespaceSupplierClient 37.publiccla

13、ssLocalServer 38. 39./返回查询结果 40.publicDataSetMakeDataSet(stringsqlText) 41. 42./执行插入和删除操作,并返回影响记录数 43.publicintExecuteSql(stringsqlText) 44. 第第 4 4 章章 界面界面 4.14.1 客户端客户端 客户端启动后,用户首先在文本框中输入 SQL 命令,然后通过解析后向相应场地发送命令,并将返回的结果集进行合并,显示在界面中,显示结果后空白的文本框用来显示执行插入删除操作时的结果信息。 4.24.2 服务器服务器 服务器端仅实现对远程对象的注册,因此界面不需

14、要实现功能,只需要在启动时注册远程对象即可,接收到的客户端的用户命令是通过消息框显示的。如上图所示。 第第 5 5 章章 命令处理及核心算法流程命令处理及核心算法流程 Insert 操作 1./得到 insert 语句要查询的表名 2.publicstringGetInsertTableName(stringsqlText) 3. 4./根据插入的表和值,设定场地:INSERTINTOSupplierVALUES(no,name,city),returncity 5.publicstringGetInsertCityValue(stringsqlText) 6. 7./如果表名是 Suppli

15、er,则根据 city 值设定向哪个场地发送命令 8.publicArrayListSetInsertSite(stringsqlText) 9. 10./生成解析后的 insert 命令列表 11.publicArrayListSetInsertList(stringsqlText) 12. Delete 操作 向各个场地发送,通过定义数据库中表的关系及约束来保证完整性和一致性,如果删除命令不成功,则返回异常信息,否则,返回各个场地成功执行命令影响的记录数目。 Select 操作 1./得到 sql 语句的类型 2.publicstringGetSqlType(stringsqlText)/typeofSQLstatements 3. 4./得到 select 语句要查询的表名 5.publicstringGetSelectTableName(stringsqlText) 6. 7./得到 select 语句中的 where 子句 8.publicstringGetWhereClause(stringsqlText) 9. 10./得到查询条件中的字段名 11.publicstringGetSelectField(s

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号