SharedCache-试用演示实例DEMO

SharedCache从源码结构中很容易看出是基于.NET平台构建的,目前最新版本的SharedCache只支持.NET2.0下缓存共享支持.当前SharedCache版本说明:

下面引用ShareCache做一个简单实例DEMO.注意说明以.NET2.0环境下WebSite站点形式演示.

A:准备工作

(1)用开发工具VS08打开已经下载的SharedCache源码,对整个解决方案进行重新生成操作-生成bin目录下对自定义项目可以引用的DLL.

(2)运行SharedCache源码项目搭建服务器环境(默认解决方案是SharedCache.WinService),会有一个控制台程序提示界面如下:

注意:控制台'+'后提示语句为—"本地服务器已经准备好接受缓存数据,通信端口48888监听已经开始".表明在本地已经成功构建了SharedCache缓存数据服务器环境.

B:测试程序建立

注意:

(1)在用VS开发工具建立WebSite站点测试程序时设定环境是.NET 2.0环境.

(2)对新建本地项目添加SharedCache 引用. 重新生成解决方案后引用SharedCache.WinServiceCommon项目bin目录下:NLog.dll , SharedCache.WinServiceCommon.dll

做好上面工作后,编写简单测试程序如下:

(3)页面代码如下: 

1       < asp:Label  ID ="Label1"  runat ="server"  Text ="Label" ></ asp:Label >
2       < br />
3       < asp:TextBox  ID ="TextBox1"  runat ="server"  style =" font-weight:bold; color:Red;" ></ asp:TextBox >

 

(4)后台代码:在SharedCache保存第一次加载的时间, 然后每次都从共享缓存中取数据.代码如下:

 1      protected   void  Page_Load( object  sender, EventArgs e)
 2          {
 3               // 测试Code
 4               // Author:chenkai Date:2009年12月22日14:16:36
 5               this .Label1.Text  =   " 用时间来测试SharedCache: " ;
 6 
 7               string  firstCachekey  =   @" First_SharedCache_key " ;
 8 
 9               // 该方法没有重写 只能通过key获得缓存对象
10               string  getresult  =  Convert.ToString(IndexusDistributionCache.SharedCache.Get(firstCachekey));
11 
12               if  ( string .IsNullOrEmpty(getresult))
13              {
14                   // 第一次加载 存储缓存中
15                  getresult  =  DateTime.Now.ToString();
16                   // 该Add方法在源码被重写了10次 详细请看SharedCache文档
17                  IndexusDistributionCache.SharedCache.Add(firstCachekey,getresult);
18              }
19 
20               this .TextBox1.Text  =  getresult;
21          }

 

测试程序写好后,下不要急于运行,注意这里有几个步骤要走:

A:在Web.Config文件中配置整个解决方案

B:运行SharedCache的服务器端

C:上面两步部署好后,重新编译应用程序 开始运行.

(5)配置Web.Config文件方法:

在下载的源码中有一个SharedCache.WinServiceTestClient项目中,这个项目是个测试程序打开其中根目录下配置文件App.config.

折叠所有的App.config文件中标签,截取复制<configuration></configuration>标签中的代码, 截图如下:

 放置在测试项目根目录下Web.Config文件相对应<Appseting/>的位置(覆盖原来的<Appsetting/>标签),重新编译项目,并运行期SharedCache服务器端, 一切就位完毕,运行项目,我们来看一下:SharedCache服务器端提示: 截图如下:

第一次运行:

重复刷新页面:

从服务器提示可以看出,第一次运行时想缓存中添加First_SharedCache_Key对象,刷新页面数据从缓存中搜索并读取出来. 由此实现一个时间String字符窜的缓存共享.

(6)测试用户自定义实体缓存数据共享: 定义实体MyCustomerOrder -[注意客户端定义实体必须标注实体类属性为可序列化]

代码
 1  //定义实体类必须定义可序列化 不可缺少
 2      [Serializable]
 3     public class
 MyCustomerOrder
 4 
    {
 5         //
定义自动以实体 测试缓存数据存取
 6         //Author:chenkai Date:2009年12月22日15:43:16

 7 
 8         private string  ordername;
 9 

10         public string  Ordername 
11 
        {
12             get { return
 ordername; }
13             set { this.ordername =
 Ordername; }
14 
        }
15 

16         private string  orderManager;
17 

18         public string  OrderManager
19 
        {
20             get { return
 orderManager; }
21             set { this.orderManager =
 OrderManager; }
22 
        }
23 

24 
25         //override重写对象Tostring的方法
26         public override string  ToString()
27 
        {
28             return this.ordername + "间隔符" + this
.orderManager;
29 
        }
30 

31         //定义构造方法
32         public MyCustomerOrder(string ordername,string  manager)
33 
        {
34             this.ordername =
 ordername;
35             this.orderManager =
 manager;
36 
        }
37 
        
38     }

 

页面代码相同 测试后台代码如下:刷新页面后从缓存提取对象数据

 1  protected   void  Page_Load( object  sender, EventArgs e)
 2          {
 3               // 测试Code
 4               // Author:chenkai Date:2009年12月22日16:16:35
 5 
 6               // 定义一个MyCustomerOrder对象
 7              MyCustomerOrder neworder  = null ;
 8 
 9               this .Label1.Text  =   " 测试缓存对象 " ;
10               string  secondCacheKey  =   @" Second_SharedCache_key_1 " ;
11 
12               // 从缓存中获得对象
13              neworder  =  IndexusDistributionCache.SharedCache.Get(secondCacheKey)  as  MyCustomerOrder;
14 
15               if  (neworder  ==   null )
16              {
17                   // 添加缓存中
18                  neworder  = new  MyCustomerOrder( " chenkai的测试 " , " 提单客户经理人 " );
19                  IndexusDistributionCache.SharedCache.Add(secondCacheKey, neworder);
20              }
21 
22               // 提取数据
23               this .TextBox1.Text  =  neworder.Ordername;
24          }

 

测试缓存共享一个用户自定义实体对象通过,其中实体类必须标注成可序列化. 其他基本和保持字符窜缓存数据逻辑雷同.

 

 

 

 

 

 

你可能感兴趣的:(cache)