zoukankan      html  css  js  c++  java
  • 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         }

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

     

     

  • 相关阅读:
    第一周编程总结
    7-3 抓老鼠亏了还是赚了
    7-1 打印沙漏
    2019春第十二周作业
    2019春第十一周作业
    2019年春第十周作业
    第九周作业总结
    第八周作业总结
    第七周作业总结
    第六周作业
  • 原文地址:https://www.cnblogs.com/chenkai/p/1629876.html
Copyright © 2011-2022 走看看