ASP.NET Core 会话提供者 NCache 在网络农场

ASP.NET Core 已完全重新架构,因此具有与旧 ASP.NET 不同的会话管理系统。

虽然 ASP.NET Core 提供一个内存中的会话提供程序,将会话存储在网络服务器本身上, ASP.NET Core 会话存储 在网络农场中是具有挑战性的。

一种方法是在网络农场中使用粘性会话,通过应用程序请求路由模块将所有用户请求路由到同一个网络服务器。 但是,粘性会话会影响可伸缩性并导致负载分配不当。 相对更好的方法是使用 SQL Server 进行会话存储。 然而,当涉及到可扩展的 ASP.NET core 应用程序 SQL 数据库成为性能瓶颈. 这是因为 SQL Server(与所有关系数据库一样)不擅长存储 BLOB,并且会话在数据库中保存为 BLOB。

一个可行的选择是使用 用于存储 ASP 的分布式缓存.NET Core 招生面试 在网络场中。 并且,最适合此目的的分布式缓存是 NCache 提供强大且功能丰富的 ASP.NET Core 您可以使用的会话服务。

NCache 是一个极端 .NET/ 的快速且可扩展的分布式缓存.NET Core. 它通过允许您在运行时添加更多缓存服务器并线性扩展来处理极端事务负载。 同时, NCache 高可用性和动态缓存集群 确保您不会丢失任何 ASP.NET Core Web 服务器或缓存服务器出现故障时的会话数据。

ASP.NET Core 会议 -  NCache

配置 ASP.NET Core 会话提供者 NCache

与您只修改 web.config 的 ASP.NET 不同,ASP.NET 要求您修改“配置服务()" Startup 类中的方法。以下代码显示了如何为 NCache。 有关更多详细信息,请参见 NCache ASP.NET Core 会话提供者配置文档 并按照步骤。

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services
    services.AddMvc();

    // Add NCache Session service to IServiceCollection with various configuration 
    // options

    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });
}

ASP 的好处.NET Core 会话提供者 NCache

首先,使用起来几乎不需要编程 NCache 作为您的 ASP.NET Core 会话提供者; 代码更改在 ConfigureServices(IServiceCollection services) 中的方法 Startup 班级。 查看详情 配置 ASP.NET Core 会话提供者 NCache. 以下是使用的一些好处 NCache 作为您的 ASP.NET Core 会话状态提供者:

  1. 高可用性: 你的 ASP.NET Core 应用程序最需要它在生产中依赖的任何东西的高可用性。 和, NCache 通过 自我修复的点对点集群架构 没有单点故障。 NCache 也复制了 ASP.NET Core 会话,因此在服务器出现故障的情况下不会丢失数据。

  2. 线性可扩展性: 你的 ASP.NET Core 应用程序很可能需要扩展以处理高事务负载。 而且,如果您的 ASP.NET Core 会话存储不会扩展,那么您的应用程序也不会。 幸运的是, NCache 提供 线性可扩展性 并且永远不会成为您的 ASP 的瓶颈.NET Core 应用程序。

  3. 智能会话复制: 虽然会话复制提供了高可用性,但它带来了性能成本。 NCache 通过其丰富的 缓存拓扑 (镜像缓存、复制缓存和分区副本缓存)。 NCache 在不以任何明显方式牺牲性能的情况下复制数据,同时实现数据可靠性。

  4. 快速紧凑序列化: 对于较大的对象,常规的 .NET 序列化通常是缓慢而庞大的。 为了解决这个瓶颈, NCache 已经实施了 紧凑序列化 那要快得多。 你只需要注册你的课程和 NCache 做剩下的。 无需编程。 在连接时间, NCache 生成序列化源代码,在内存中编译,然后用于序列化。

支持多个区域(数据中​​心)

NCache 允许您管理 ASP.NET Core 在多个区域(数据中​​心)中运行的应用程序的会话。 他们来了:

  1. ASP的广域网复制.NET Core 会议: NCache 提供多数据中心 WAN 复制功能,还可以让您复制所有 ASP.NET Core 跨 WAN 到另一个区域(数据中​​心)的会话。 这是通过桥接拓扑功能完成的 NCache. 这可确保您的 ASP.NET Core 即使某个区域(数据中​​心)出现故障,会话也不会丢失。

  2. 多区域 ASP.NET 会话状态: 如果由于带宽消耗成本不想跨 WAN 复制 ASP.NET 会话状态,可以选择使用 NCache 多站点 ASP.NET 会话状态功能. 在这种情况下,ASP.NET 会话状态不会跨站点复制,而是保留在其创建位置。 但是,如果您将任何流量从一个区域(数据中​​心)移动到另一个区域,ASP.NET 会话状态也会随之移动。 有关更多详细信息,您可以阅读我们的产品页面 多区域 ASP.NET 会话状态提供程序,用于 NCache.

高级功能 NCache ASP.NET Core 会话提供者

ASP.NET Core 会话提供者 NCache 实现所有标准的 ASP.NET Core 会话提供程序功能。 此外,它还实现了各种高级功能,让您可以处理应用程序中的复杂情况。 ConfigureServices(IServiceCollection services) 方法。

  1. 标准会话锁定: 标准 ASP.NET Core 会话锁定行为是会话永远不会被锁定。 因此,如果您尝试同时更新会话,可能会损坏会话。 所以, NCache 已经实现了与旧的 ASP.NET 会话状态类似的会话锁定功能,如果会话被锁定,另一个对其的请求会等待 90 秒(可配置)并在最后强制解锁会话。 您可以在“配置”中将此锁定选项指定为以下属性:

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. 增强的会话锁定: 对于高流量 ASP.NET Core 应用程序,您可能让机器人抓取数据并同时为数百或数千个请求使用相同的会话 ID。 在这种情况下,您无法负担标准的会话锁定选项,因为等待 90 秒可能会占用所有可用的套接字。 相反,您希望快速返回请求以指示失败。 您可以指定如下:

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = 5;
    configuration.EmptySessionWhenLocked = true;
    ...
    });

    这会以半秒为间隔重试 5 次,然后返回一个空会话以表示失败。 即使在这里抛出异常也是昂贵的。 这就是实现空会话的原因。 此行为最初是根据高流量航空公司网站的请求实施的。

  3. 错误记录: 您可以启用错误日志记录到 Web 服务器上的日志文件(在 INSTALL_DIR\NCache\log-files\SessionStoreProvider 文件夹)通过指定“EnableLogs”和“WriteExceptionsToEventLog" 配置属性如下:

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableLogs = true;
    configuration.WriteExceptionsToEventLog = false;
    ...
    });
    

接下来做什么

注册每月电子邮件通讯以获取最新更新。

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。