緩存服務(wù)器的建立原理分析第2/2頁(yè)
更新時(shí)間:2008年10月10日 09:51:09 作者:
通常情況下我們運(yùn)行程序的過(guò)程中會(huì)產(chǎn)生一些中間數(shù)據(jù),這些中間數(shù)據(jù)需要在將來(lái)的某個(gè)時(shí)間讀取。這就要求我們要把它存在一個(gè)提供高速存取的地方,最好的選擇就是內(nèi)存中。
好了。這樣我們服務(wù)端的代碼就算搞定了。
下面我們來(lái)發(fā)布服務(wù)供客戶端調(diào)用
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 }
這樣客戶端就可以通過(guò)這個(gè)接口來(lái)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)的存取
在客戶端首先我們獲取遠(yuǎn)程的對(duì)象
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后續(xù)
以上實(shí)現(xiàn)的是最基本的分布式緩存解決方案。其實(shí)我們可以把這個(gè)集合轉(zhuǎn)化為其他集合對(duì)象,例如HashTable。在對(duì)象啟動(dòng)的時(shí)候開啟一個(gè)守護(hù)線程,這個(gè)進(jìn)程做得工作就是把到期的緩存對(duì)象追加到一個(gè)集合對(duì)象中,然后遍歷該對(duì)象實(shí)現(xiàn)緩存對(duì)象的銷毀。我們還可以把對(duì)象進(jìn)行一次哈希讓對(duì)像在多臺(tái)緩存服務(wù)器上存儲(chǔ)。好了今天就寫到這里吧。
以上文字希望能起到拋磚引玉的作用,引起大家更深層次的思考。
相關(guān)文章
Linux?VNC安裝ssh后ssh無(wú)法登錄的解決方案
VNC?服務(wù)器不能使用?SSH?22?端口登錄的問(wèn)題可能由多種原因引起,本文給大家介紹了Linux?VNC安裝ssh后ssh無(wú)法登錄的解決方案,文中通過(guò)有詳細(xì)解決方案,需要的朋友可以參考下2024-11-11
解決CentOS7虛擬機(jī)無(wú)法上網(wǎng)并設(shè)置CentOS7虛擬機(jī)使用靜態(tài)IP上網(wǎng)
這篇文章主要介紹了解決CentOS7虛擬機(jī)無(wú)法上網(wǎng)并設(shè)置CentOS7虛擬機(jī)使用靜態(tài)IP上網(wǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
一文教你如何快速排查Windows和Linux系統(tǒng)是否被黑
這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)快速排查Windows和Linux系統(tǒng)是否被黑,文中通過(guò)圖文進(jìn)行了詳細(xì)介紹,需要的小伙伴可以參考一下2023-08-08
Linux解決Unknown filesystem問(wèn)題
當(dāng)Linux系統(tǒng)出現(xiàn)「Unknown filesystem」錯(cuò)誤,通常是GRUB引導(dǎo)問(wèn)題,首先在GRUB命令行輸入ls查看信息,記錄返回的分區(qū)信息,使用PE系統(tǒng),如「微PE」,并利用「顯示隱藏分區(qū)」工具查看所有分區(qū),在文件資源管理器中找到「boot」文件夾所在的分區(qū)2024-10-10
CentOS7 mini的安裝和靜態(tài)ip設(shè)置教程
本篇文章主要介紹了CentOS7 mini的安裝和靜態(tài)ip設(shè)置教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02

