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.          } 

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



本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765222

相关文章
|
10月前
|
安全
接口开发文档及注意事项
接口开发是指通过定义一组接口,使不同的系统或设备之间能够进行数据通信和互操作的过程。
146 0
|
运维 网络协议 API
三个步骤帮你决定你今天吃什么(附20多个免费可用的高质量 API 推荐)
今天吃什么?已经成了每天的生活难题,但是你一定不知道,世界上有一种非常好玩的 API 叫做 “今天吃什么”!
181 0
三个步骤帮你决定你今天吃什么(附20多个免费可用的高质量 API 推荐)
|
Web App开发 JSON 前端开发
YApi 官网说明文档-接口操作
为方便和前端, 节省沟通成本, 编写接口文档非常有比较 使用过swagger, 觉得入侵性太大. POST又感觉和项目结合的不太紧密. 所以一直在寻找 新的接口阅读/生成/测试工具. 下面介绍一下YApi.
1487 0
YApi 官网说明文档-接口操作
|
XML JSON API
【笔记】API参考—实例管理—DescribeDBInstanceAttribute
调用DescribeDBInstanceAttribute接口查看实例的详细信息。
|
XML JSON API
API参考—实例管理—ModifyDBInstanceMaintainTime
调用ModifyDBInstanceMaintainTime接口修改实例可维护时间。
|
XML JSON API
API参考—实例管理—DescribeDBInstances
调用DescribeDBInstances接口查看实例列表详情。
163 0
|
XML JSON API
API参考—实例管理—ModifyDBInstanceDescription
调用ModifyDBInstanceDescription接口修改实例描述。
|
XML JSON API
API参考—实例管理—DeleteDBInstance
调用DeleteDBInstance接口释放实例。
|
JSON API 开发工具
API参考—实例管理—CreateDBInstance
调用CreateDBInstance接口创建数据库实例。
|
XML JSON API
API参考—实例管理—RestartDBInstance
调用RestartDBInstance接口重启实例。