有问题快三平台开发缓存数据库q-2747044651 官网【征途源码论坛https://0x9.me/WV9jI】
前言:首先声明,此文题目算是标题党的一种,是本人为了完成与widows服务通信编程学习幻想出来的一个模型(并不是真的缓存数据库),并且会作为本人以后加深多线程、设计模式、非关系型数据库等方面学习的一个模型实例,毕竟有一个实际的模型更容易加深理解。
完成这部分模型,大概会做一下几件事情:
微信约战斗地主棋牌开发( q-2747044651【征途源码论坛https://0x9.me/WV9jI】)
1、 创建一个Windows服务(用来寄存这个“缓存数据库”)
2、 创建一个WCF服务,寄宿在windows服务中(用于跟客户端通信,对“缓存数据库”进行增删查操作)
3、 创建客户端进行测试
第1步:WCF服务的创建及对缓存对象增删查的实现
WCF服务创建的过程及其Endpoint节点相关基础在这里不作累述,网上很多资料,这里直接贴Contract及其实现的代码,保存表数据的数据结构是Dictionary<string,DataTable>,其中key存放是表名,DataTable存放是数据。
复制代码
1 using System;
2
3 using System.Collections.Generic;
4
5 using System.Data;
6
7 using System.Linq;
8
9 using System.Runtime.Serialization;
10
11 using System.ServiceModel;
12
13 using System.ServiceModel.Web;
14
15 using System.Text;
16
17
18
19 namespace SelfWcfService
20
21 {
22
23 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
24
25 [ServiceContract]
26
27 public interface ISelfSQLData
28
29 {
30
31 [OperationContract]
32
33 ExcuteResult CreateTable(string tableName, DataTable colNames);
34
35
36
37 [OperationContract]
38
39 ExcuteResult Insert(string tableName, SelfDataRow dr);
40
41
42
43 [OperationContract]
44
45 ExcuteResult Delete(string tableName, SelfDataRow dr);
46
47
48
49 [OperationContract]
50
51 ExcuteResult DropTable(string tableName);
52
53
54
55 [OperationContract]
56
57 Dictionary<string, DataTable> GetData();
58
59 }
60
61
62
63 [DataContract]
64
65 public class SQLData
66
67 {
68
69 [DataMember]
70
71 public Dictionary<string, DataTable> DataTables { get; set; }
72
73 }
74
75
76
77 [DataContract]
78
79 public class SelfDataRow
80
81 {
82
83 [DataMember]
84
85 public DataTable DataTable { get; set; }
86
87 }
88
89 }
复制代码
接口实现部分:
微信约战斗地主棋牌开发( q-2747044651【征途源码论坛https://0x9.me/WV9jI】)
复制代码
1 using System;
2
3 using System.Collections.Generic;
4
5 using System.Data;
6
7 using System.Linq;
8
9 using System.Runtime.Serialization;
10
11 using System.ServiceModel;
12
13 using System.ServiceModel.Web;
14
15 using System.Text;
16
17
18
19 namespace SelfWcfService
20
21 {
22
23 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。
24
25 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
26
27 public class SelfSQLData : ISelfSQLData
28
29 {
30
31 private static SQLData _sqlData;
32
33 public static SQLData SqlData
34
35 {
36
37 get
38
39 {
40
41 if (_sqlData == null)
42
43 {
44
45 _sqlData = new SQLData();
46
47 }
48
49 if (_sqlData.DataTables == null)
50
51 {
52
53 _sqlData.DataTables = new Dictionary<string, System.Data.DataTable>();
54
55 }
56
57 return _sqlData;
58
59 }
60
61 set
62
63 {
64
65 _sqlData = value;
66
67 }
68
69 }
70
71
72
73 private void InitalSqlData()
74
75 {
76
77 if (_sqlData == null)
78
79 {
80
81 _sqlData = new SQLData();
82
83 }
84
85 if (_sqlData.DataTables == null)
86
87 {
88
89 _sqlData.DataTables = new Dictionary<string, System.Data.DataTable>();
90
91 }
92
93 }
94
95
96