缓存服务器的建立原理分析
更新时间:2008年10月10日 09:51:09 作者:
通常情况下我们运行程序的过程中会产生一些中间数据,这些中间数据需要在将来的某个时间读取。这就要求我们要把它存在一个提供高速存取的地方,最好的选择就是内存中。
好了。这样我们服务端的代码就算搞定了。
下面我们来发布服务供客户端调用
Code
1 public partial class SharpCatchedService : ServiceBase
2 {
3 public SharpCatchedService()
4 {
5 InitializeComponent();
6 }
7
8 protected override void OnStart(string[] args)
9 {
10 TcpChannel channel = new TcpChannel(ConfigHelper.Port);
11 ChannelServices.RegisterChannel(channel, false);
12 RemotingConfiguration.RegisterWellKnownServiceType(typeof(DataCatcher),
13 "SharpCatched", WellKnownObjectMode.Singleton);
14 }
15
16 protected override void OnStop()
17 {
18 }
19 }
这样客户端就可以通过这个接口来实现远程数据的存取
在客户端首先我们获取远程的对象
Code
public static ICarrier Carrier()
{
ICarrier carrier = (ICarrier)Activator.GetObject(typeof(ICarrier), "tcp://localhost:" + ConfigHelper.Port + "/SharpCatched");
return carrier;
}
接着我们包装一下
Code
1 public class SharpCatchedAPI
2 {
3 ICarrier icarrier;
4
5 public void Init()
6 {
7 icarrier = DoConnect.Carrier();
8 }
9
10 public void Set(string key, object value)
11 {
12 icarrier.Set(key, value);
13 }
14
15 public void Remove(string key)
16 {
17 icarrier.Remove(key);
18 }
19
20 public object Get(string key)
21 {
22 return icarrier.Get(key);
23 }
24
25 public bool Exits(string key)
26 {
27 return icarrier.Exits(key);
28 }
29 }
3后续
以上实现的是最基本的分布式缓存解决方案。其实我们可以把这个集合转化为其他集合对象,例如HashTable。在对象启动的时候开启一个守护线程,这个进程做得工作就是把到期的缓存对象追加到一个集合对象中,然后遍历该对象实现缓存对象的销毁。我们还可以把对象进行一次哈希让对像在多台缓存服务器上存储。好了今天就写到这里吧。
以上文字希望能起到抛砖引玉的作用,引起大家更深层次的思考。
相关文章
解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
这篇文章主要介绍了解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-02-02


最新评论