asp中gridview多行数据累加_ASP.NET核心的分布式缓存

关键要点

  • ASP.NET Core具有内置的分布式缓存接口。
  • 性能,共享数据和持久性是分布式缓存的主要优点。
  • Couchbase Server是一个内存优先的数据库,非常适合用作分布式缓存。
  • NuGet包使你可以轻松地将Couchbase Server添加到你的应用程序中。
  • 使用“IDistrubutedCache”接口抽象出细节,并使可以轻松地与ASP.NET Core控制器中的缓存进行交互。

随着.NET Core 2.0的发布,Microsoft拥有了最初于2016年发布的通用,模块化,跨平台和开源平台的下一个主要版本。已经创建了.NET Core,其中包含许多API在当前版本的.NET Framework中提供。它最初是为了允许下一代ASP.NET 解决方案而创建的, 但现在可以驱动,并且是许多其他场景的基础,包括物联网,云和下一代移动解决方案。在本系列中,我们将探讨.NET Core的一些优势,以及它如何不仅使传统的.NET开发人员受益,而且使所有需要为市场带来强大,高性能和经济的解决方案的技术人员受益。

这篇文章是“ .NET Core ” 系列的一部分。

缓存可以帮助提高ASP.NET Core应用程序的性能。 使用部署到服务器场 或可伸缩云环境的ASP.NET应用程序时,分布式缓存很有用 。Microsoft文档包含使用SQL Server或Redis执行此操作的示例,但在本文中,我将向你展示一种替代方法。Couchbase Server是一个分布式数据库,具有内存优先(或可选的内存)存储架构,使其成为缓存的理想选择。与Redis不同,它具有一套更丰富的功能,你可以在以后随着用例和产品的扩展使用这些功能。但是对于这篇博文,我将重点介绍它的缓存功能以及与ASP.NET Core的集成。可以跟随Github上的所有 代码示例:https://github.com/couchbaselabs/blog-source-code/tree/master/Groves/_3rdParty/001-InfoQ-ASP-NET-Core/src

分布式缓存的好处

  1. 表现。缓存将数据存储在RAM中,以便快速轻松地检索。从此缓存中检索数据通常会更快,而不是每次都使用原始源。
  2. 共享缓存数据。如果你正在为ASP.NET Core应用程序使用多服务器部署,则负载均衡器可以将你的用户定向到任何一个ASP.NET Core服务器。如果缓存的数据位于Web服务器本身,则需要打开粘性会话以确保始终将用户定向到同一个ASP.NET Core服务器。这可能导致负载不均匀和其他网络问题
  3. 耐用性。如果ASP.NET Core Web服务器出现故障或因任何原因需要重新启动它,这不会影响你的缓存数据。重启后它仍将在分布式缓存中。

无论使用哪种工具作为分布式缓存(Couchbase,Redis或SQL Server),ASP.NET Core都会为你希望使用的任何缓存技术提供一致的界面。

安装Couchbase

第一步是运行分布式缓存服务器。 选择最方便的安装方法。可以使用Docker或云提供商,也可以将其安装在本地计算机上。它是免费下载的,你可以使用免费的Couchbase社区版。(企业版对于预生产使用也是免费且无限制的,但我将在此文章中使用社区版)。

安装Couchbase时,打开Web浏览器并通过一个简短的向导。此文章的默认设置正常。

c1257a3ef585d8549e5baeb01bd3abed.png

安装Couchbase之后,创建一个“bucket”。这是存储缓存数据的地方。我将我的bucket称为“foqcache”。我创建的一个“临时”桶(这是一个仅限内存的选项)。你还可以使用“Couchbase”bucket(它首先将数据存储在内存中,然后异步地保存到磁盘)

78425a2c9363cf953bc0270e9fb4c2de.png

设置Couchbase的最后一步是安全性。将具有适当权限的Couchbase用户添加到该bucket。我给我的用户起名叫“Qidiot”,并给了它一个密码“password”。在企业版中,有很多角色可供选择,但是对于这个简单的用例,我们不需要它们。Qidiot缓存的“桶完全访问”就足够了。

1cf7275fb7f18ff33d02b8d379ed0349.png

在继续使用ASP.NET Core之前,请确保已完成所有这些安装步骤。以下是包含更详细文档链接的步骤。

  1. 安装Couchbase(按照下载 页面上的说明操作 )
  2. 设置Couchbase(探索服务器配置)

https://docs.couchbase.com/server/6.0/getting-started/look-at-the-results.html

3.创建一个桶(创建一个桶)

https://docs.couchbase.com/server/6.0/manage/manage-buckets/create-bucket.html

4.创建了具有存储桶权限的用户。(使用UI创建和管理用户)

https://docs.couchbase.com/server/6.0/manage/manage-security/manage-users- and-roles.html

创建一个新的ASP.NET核心应用程序

我将创建一个示例ASP.NET Core API应用程序来显示ASP.NET Core的分布式缓存功能。这将是一个小而简单的应用程序,有两个端点。

我正在使用Visual Studio 2017.从那里,我选择文件→新建→Web→ASP.NET核心Web应用程序。

c50c689598e53165355455737883c546.png

下一步是选择什么样的ASP。NET核心项目模板使用。我使用的是一个基本的“API”,没有身份验证,也不支持Docker。

2f5df453e8270d08185181abf9fd18c7.png

这个项目有一个 ValuesController.cs文件。我将用我的代码替换这个类中的大部分代码。这是我要创建的第一个端点。它不使用任何缓存,并且具有Thread.Sleep模拟高延迟数据访问(想象Thread.Sleep通过调用慢速Web服务或复杂数据库查询来替换它 )。

[Route("api/get")]public string Get(){ // generate a new string var myString = Guid.NewGuid() + " " + DateTime.Now; // wait 5 seconds (simulate a slow operation) Thread.Sleep(5000); // return this value return myString;}

启动该网站(在Visual Studio中按Ctrl + F5)。你可以使用Postman之类的工具与端点进行交互。但是对于这个例子,浏览器就足够了。在我的示例项目中,该站点将启动 localhost:64921,并且我使用api / get路由配置了端点。所以,在浏览器中我去 localhost:64921/api/get:

这是一个简单的例子,但它表明这个端点是a)获得一些唯一的字符串值,以及b)花费很长时间来完成它。每次刷新都会至少等待5秒钟。这将是引入缓存以改善延迟和性能的好地方。

d5dd882c0e4a2b0d60cc789a78df8d74.png

ASP.NET Core和Couchbase集成

我们现在有一个需要缓存的ASP.NET Core应用程序和一个想要帮助的Couchbase Server实例。让他们一起努力吧。

第一步是从NuGet安装一个包。可以使用NuGet UI搜索Couchbase.Extensions.Caching,也可以在Package Manager控制台中运行此命令:

Install-Package Couchbase.Extensions.Caching -Version 1.0.1

这是一个开源项目,完整的源代码可以在Github上找到。

https://github.com/couchbaselabs/Couchbase.Extensions/blob/master/docs/caching.md

NuGet将为你的ASP.NET Core应用程序安装所需的所有软件包,以便与Couchbase Server进行通信,并与ASP.NET Core的内置分布式缓存功能集成。

现在打开Startup.cs项目中的 文件。需要在ConfigureServices此处为方法添加一些设置代码 。

services.AddCouchbase(opt =>{ opt.Servers = new List { new Uri("http://localhost:8091") }; opt.Username = "infoq"; opt.Password = "password";});services.AddDistributedCouchbaseCache("infoqcache
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值