首页 > 其他分享 >那些.NET中的连接池

那些.NET中的连接池

时间:2024-03-08 09:12:27浏览次数:24  
标签:SmtpClient Redis 那些 NET 连接 连接池 HttpClient

前言

在.NET中,连接池被广泛用于管理和优化不同类型资源的连接。连接池可以减少建立和关闭连接所需的时间和资源消耗,从而提高了应用程序的性能和响应能力。

HttpClient中的连接池

System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 每个HttpClient 实例使用自身的连接池,当实例被释放时,连接一会一同被释放,所以为了缓解端口耗尽问题,应该尽量重用HttpClient实例。

我们可以控制HttpClient中的connection pool的行为

  • PooledConnectionLifetime 指的是当连接处于池中时保持活动状态的时间长度。一旦这个生命周期到期,该连接将不再被保留在池中或用于未来的请求。默认为Infinite

  • PooledConnectionIdleTimeout 定义了空闲连接在未被使用时在连接池中保持的时间长度。一旦这个生命周期到期,空闲的连接将被清除并从池中移除。默认为两分钟

  • MaxConnectionsPerServer 定义了每个端点将建立的最大出站连接数。每个端点的连接分别进行池化。例如,如果最大连接数的值是2,而你的应用程序向www.github.com和www.google.com发送请求,则总共可能会有最多4个开放的连接。默认值为Int.MaxValue

DB连接池

DB连接池大家都耳熟能详了,在这里就不必赘述细节了,主要注意以下几点:

  • 选择合适的Package, 比如针对MongoDB有很多连接方式,但是某些方式并没有连接池,当技术选型时,一定要选择正确的package。

  • 每个connection string对应一个连接池

  • 连接池有最大限制,sql server的最大连接默认为100

Redis连接池

在.NET中,大家都使用StackExchange.Redis来连接Redis,但是此Client Library并没有Pool,大家可以考虑使用额外的第三方类库比如StackExchange.Redis.ConnectionPool等

SMTP连接池

在.NET中,大家一般使用SmtpClient发送邮件,SmtpClient 实现将 SMTP 连接池化,以避免重新建立与同一服务器的每条消息的连接开销。 应用程序可以重复使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器.

但请注意,现在官方文档推荐不使用SmtpClient, 而用MailKit替代,原因是Smtp不兼容新的协议。

标签:SmtpClient,Redis,那些,NET,连接,连接池,HttpClient
From: https://www.cnblogs.com/kyo-lynn/p/18059877

相关文章

  • spNet_旧项目升级_Startup_Program合并
    Program.cs和Startup.cs合并成Program.cs合并Startup.cs到Program.cs:将Startup.cs中的ConfigureServices方法中的代码移动到Program.cs中varbuilder=WebApplication.CreateBuilder(args);之后。将Startup.cs中的Configure方法中的代码移动到varapp=builder.Build();之......
  • dotnet_服务声明周期_transient_scoped_singlton
    ASP.NET中的Transient、Scoped和Singleton区别该代码展示了ASP.NETCore中服务生命周期管理的不同选项,特别关注Transient、Scoped和Singleton服务。说明Transient:每次请求都会创建一个新的OperationService实例,并生成一个新的GUID。因此,同一个请求中的不同控制......
  • .net8集成Apollo配置中心步骤
    部署Apollo我这里按照官方文档使用docker快速部署了一个测试学习用。 创建应用 新增配置创建.net8版本的webapi项目 修改appsettings.json{"Apollo":{"AppId":"ApolloTest001","MetaServer":"http://127.0.0.1:8080"}}AppId是应用的身......
  • 安装ML.NET命令行接口(CLI)工具遇到的坑
    根据微软官方文档(https://learn.microsoft.com/zh-cn/dotnet/machine-learning/how-to-guides/install-ml-net-cli?tabs=windows)安装ML.NET命令行接口(CLI)工具时执行如下命令:dotnettoolinstall--globalmlnet-win-x64始终报从指定的Nuget源中找不到对应的工具: 以为是......
  • WPF(.netCore) 嵌入WebApi服务
    1从NUGET添加组件“Swashbuckle.AspNetCore”相关使用代码varbuilder=WebApplication.CreateBuilder();builder.Services.AddControllers();varapp=builder.Build();app.UseHttpsRedirection();a......
  • AutoUpdater.NET自动更新库使用
    原文链接:https://blog.csdn.net/g313105910/article/details/112313695.NET程序当部署很多的时候,每次手动下载升级麻烦,原来自己写了个自动升级的程序,独立运行,需要主程序来更新自动升级程序,自动升级程序升级主程序,功能运行正常,最近发现有AutoUpdater.NET库很方便,在此写下使用方法,......
  • 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)
    1、前言为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了。年前到现在在开发一个新的小项目,刚好项目最初的很多功能是比较通用的,所以就想着将这些功能抽......
  • .NET集成DeveloperSharp实现数据分页
    数据分页,几乎是任何应用系统的必备功能。但当数据量较大时,分页操作的效率就会变得很低。大数据量分页时,一个操作耗时5秒、10秒、甚至更长时间都是有可能的,但这在用户使用的角度是不可接受的…… 数据分页往往有三种常用方案。第一种,把数据库中存放的相关数据,全部读入代码/内存......
  • Autofac的Swashbuckle生成报错 Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetada
    错误内容:AnexceptionwasthrownwhileactivatingSwashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator->Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescriptionGroupCollectionProvider->λ:Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider[]->......
  • 激情碰撞,智慧融汇 .NET Conf China 2023 JiNan圆满技术!
    2024年3月3日,温暖的阳光洒在山东财经大学的校园里,这一天,我们在这里共同见证了一场科技与智慧的盛宴——“.NETConfChina2023JiNanWatchParty:走进山财大—AI驱动下的应用智能化开发”活动。在现场,我们欢来了社区的数十名成员的参与,首先进行的是签到环节。活动也在下午14:......