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

相关文章
|
数据处理
InVEST模型的下载及入门操作(以InVEST3.13.0为例)
InVEST是一套免费的开源软件模型,是美国自然资本项目组开发的、用于评估生态系统服务功能量及其经济价值、支持生态系统管理和决策的一套模型系统,用于绘制和评估维持和实现人类生活的自然商品和服务。包括商品生产(如食物)、生命维持过程(如水净化)和充实生命的条件(如美丽、娱乐机会)以及选择的保护(如未来使用的遗传多样性)等模块。(翻译自模型官网)
2044 1
|
SQL 数据库 数据库管理
Archery使用教程 [部署、配置、使用] 详情!
Archery使用教程 [部署、配置、使用] 详情!
|
数据安全/隐私保护
Axure教程:一个通用的app注册/登录页
Axure教程:一个通用的app注册/登录页
|
C#
创建C#控制台项目
创建C#控制台项目
132 1
创建C#控制台项目
|
JavaScript 前端开发 API
权限开发(demo使用教程)
权限开发(demo使用教程)
127 0
|
JavaScript Android开发 开发者
从0到1,教你如何使用Tasker+Autojs实现自动打卡功能
从0到1,教你如何使用Tasker+Autojs实现自动打卡功能
1692 0
从0到1,教你如何使用Tasker+Autojs实现自动打卡功能
|
SQL 运维 分布式计算
阿里云相关产品操作演示 | 学习笔记
快速学习阿里云相关产品操作演示。
阿里云相关产品操作演示  |  学习笔记
|
存储 机器学习/深度学习 JSON
如何使用 EASCMD 客户端管理 PAI-EAS 服务|学习笔记
快速学习如何使用 EASCMD 客户端管理 PAI-EAS 服务。
201 0
|
NoSQL Java Redis
SpringBoot基础系列之自定义配置源使用姿势实例演示
前面一篇博文介绍了一个@Value的一些知识点,其中提了一个点,@Value对应的配置,除了是配置文件中之外,可以从其他的数据源中获取么,如从 redis,db,http 中获取配置? 了解过 SpringCloud Config 的可以给出确切的答案,可以,而且用起来还老爽了,远程配置,支持配置动态刷新,接下来我们来看一下,在 SpringBoot 中,如何配置自定义的数据源
225 0
SpringBoot基础系列之自定义配置源使用姿势实例演示
WM
|
弹性计算 小程序 关系型数据库
基于ECS搭建的应用示例(博客、密码管理、同学地图、APP服务端等)详解之一
作为互联网行业从业者,头脑里总是会冒出各种各样的想法,当然可以用网络笔记、云盘甚至本地的方式等记录下自己的想法,然而如果想要落地尝试,则拥有一台自己的服务器就再好不过了。全栈开发已经讲了很久了,如果是前端,通过nodejs也可以搭建后端服务;如果是后端,通过flutter、uniapp等也可以搭建出各种端上的APP;如果非研发人员,通过低代码开发平台拖拽也可以。有了自己的产品之后,如果不满足于本地跑跑,那么就得面临选择应用的载体了,性价比最高的方式是选择云上ECS,下面拿我的几年使用经验来展开讲一下。
WM
430 0
基于ECS搭建的应用示例(博客、密码管理、同学地图、APP服务端等)详解之一