|
第1章系統(tǒng)總體結(jié)構(gòu)
1.1 總體結(jié)構(gòu)
系統(tǒng)實(shí)現(xiàn)需要部署服務(wù)器端的遠(yuǎn)程對(duì)象(即一個(gè)DbServerLibrary.dll),服務(wù)器端要注冊(cè)通道和該遠(yuǎn)程對(duì)象。客戶(hù)端要實(shí)現(xiàn)一個(gè)本地查詢(xún)的服務(wù)器,同時(shí)根據(jù)SQL解析的結(jié)果向各個(gè)服務(wù)器發(fā)送命令,并將結(jié)果顯示在客戶(hù)端界面,服務(wù)器端可以接受并顯示相應(yīng)的命令。
1.2 關(guān)鍵組件結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)中關(guān)鍵的組件有遠(yuǎn)程對(duì)象,和本地服務(wù)器,實(shí)現(xiàn)的功能基本一致。下面以遠(yuǎn)程對(duì)象為例,說(shuō)明組件的實(shí)現(xiàn)。遠(yuǎn)程對(duì)象在服務(wù)器端解決方案下的庫(kù)文件中聲明,通過(guò)服務(wù)器端進(jìn)行注冊(cè),客戶(hù)端通過(guò)TCP通道與服務(wù)器端遠(yuǎn)程對(duì)象通信,實(shí)現(xiàn)數(shù)據(jù)集的查詢(xún)和傳輸。主要的數(shù)據(jù)成員有:SqlConnection(SQL Server數(shù)據(jù)庫(kù)的連接對(duì)象)、 SqlCommand (SQL命令對(duì)象)、SqlDataAdapter(數(shù)據(jù)適配器,填充數(shù)據(jù)集)組件——DbServerLibrary。
第2 章.NET遠(yuǎn)程處理框架提供的強(qiáng)大技術(shù)
因時(shí)間倉(cāng)促,未實(shí)現(xiàn)數(shù)據(jù)字典,所有實(shí)驗(yàn)要求的SQL經(jīng)過(guò)解析后,直接通過(guò)代碼判斷,向相應(yīng)場(chǎng)地發(fā)送命令。
代碼分為三部分:遠(yuǎn)程對(duì)象,服務(wù)器端代碼和客戶(hù)端代碼。
其中:遠(yuǎn)程對(duì)象部署在各個(gè)服務(wù)器端,客戶(hù)端除了實(shí)現(xiàn)查詢(xún)命令的解析和傳送外外,還有一個(gè)本地服務(wù)器,進(jìn)行相應(yīng)的本地查詢(xún)。
遠(yuǎn)程對(duì)象代碼:
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. privatestringconnStr;
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. //LocalDataInitialize
23. cnnStr="DataSource=localhost;InitialCatalog=DDB;UserID=sa;Password=;";
24. sqlConn=newSqlConnection(connStr);
25. }
26. publicDataSetGetDataSet()
27. //執(zhí)行select
28. DataSetds=newDataSet();
29. if(sqlComm!=null){
30. sqlComm=null;
31. }
32. if(sqlConn.State==ConnectionState.Closed){
33. sqlConn.Open();
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.Message);
46. }
47. returnds;
48. }
49. publicintExecuteSql()//執(zhí)行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=CommandType.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. }
NET技術(shù):.NET遠(yuǎn)程處理框架詳解,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。