.NET Core 的Generic Host 之Generic Host Builder

.NET Core 的Generic Host 之Generic Host Builder通用Host(GenericHost)与webHost不同的地方就是通用Host解耦了Http请求管道,使得通用Host拥有更广的应用场景。比如:消息收发、后台…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

通用Host(Generic Host) 与 web Host 不同的地方就是通用Host解耦了Http请求管道,使得通用Host拥有更广的应用场景。比如:消息收发、后台任务以及其他非http的工作负载。这些场景都可以通过使用通用Host拥有横切(Cross-cutting)的能力,比如:配置、依赖注入和日志记录。
***

Asp net core 2.1版本推出了Generic Host Builder,但它仅仅用在了非http工作负载的场景,Generic Host Builder会在2019年发布的3.0版本中替换掉Web Host Builder。

640?wx_fmt=png

asp net core 2.1没有使用Generic Host Builder,那么它的使用场景是什么呢?Generic Host Builder的在非http负载的使用场景有消息收发、后台任务等。
HostBuilder位于 Microsoft.Extensions.Hosting 命名空间下,实现了IHostBUilder接口。Net core 应用在Main()中最简单的用法如下:

public static async Task Main(string[] args)
{
var host = new HostBuilder()
.Build();

await host.RunAsync();
}

Build()方法是初始化host实例,它仅仅能被调用一次,在Build()方法执行前调用ConfigureServices()方法可以用来配置host。

var host = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.Configure<HostOptions>(option =>
{

});
})
.Build();

ConfigureServices((hostContext, services) 方法有一个HostBuilderContext参数和一个依赖注入的IServiceCollection参数。你也可以通过调用Configure()设置Host的其他设置,当前HostOptions对象只有一个Shutdown Timeout 属性。
你可以在官方示例看到更多的配置,下面是一个其中的代码片段:

Host 配置部分

.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddJsonFile("hostsettings.json", optional: true);
configHost.AddEnvironmentVariables(prefix: "PREFIX_");
configHost.AddCommandLine(args);
})

应用配置部分

.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddJsonFile("appsettings.json", optional: true);
configApp.AddJsonFile(
$"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json",
optional: true);
configApp.AddEnvironmentVariables(prefix: "PREFIX_");
configApp.AddCommandLine(args);
})

依赖注入代码

.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<LifetimeEventsHostedService>();
services.AddHostedService<TimedHostedService>();
})

日志配置代码

.ConfigureLogging((hostContext, configLogging) =>
{
configLogging.AddConsole();
configLogging.AddDebug();
})

Asp net core 3.0 中使用Generic Host Builder 替换 Web Host Builder,net core 3.0 web 应用在Main函数中简单的使用方式代码如下:

public static void Main(string[] args)
{
CreateHostBuilder(args)
.Build()
.Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});

3.0版本中的CreateHostBuilder方法与2.x版本的 CreateWebHostBuilder() 方法很相似,二者最大的不同就是WebHost.CreateDefaultBuilder() 被替换成 Host.CreateDefaultBuilder(),
还有一个不同的地方就是 Host.CreateDefaultBuilder()方法,因为新版本的host builder是一个通用的host builder,这样就要通过嗲用 CreateDefaultBuilder()方法来构建一个web app host。

未来我们需要知道:

  • WebHostBuilder在未来将会被弃用

  • IWebHostBuilder接口将会被保留

  • 你不能在Startup类里面注入任何服务,IHostingEnvironment and IConfiguration除外

官方文档
Generic Host Builder in ASP .NET Core

640?wx_fmt=png

原文地址:https://www.cnblogs.com/blue-tian/p/10941235.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182627.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月12日 下午10:46
下一篇 2022年10月12日 下午10:46


相关推荐

  • ipvsadm 命令

    ipvsadm 命令目录 1 概要 2 描述 3 命令 4 参数 5 例子 1 简单的虚拟服务 1 概要 ipvsadm A E t u fservice address sscheduler p timeout Mnetmask bsched flags ipvsadm D t u fservice addressipvsa

    2026年3月16日
    2
  • HOOK编程

    HOOK编程引用地址:https://eason.blog.csdn.net/article/details/7707821通过安装Hook过程,可以用来屏蔽消息队列中某些消息HHOOKSetWindows

    2022年7月2日
    32
  • python-opencv图像处理:sobel算子

    python-opencv图像处理:sobel算子Sobel原理:https://blog.csdn.net/zfjBIT/article/details/86655444函数原型:”’Sobel算子Sobel算子依然是一种过滤器,只是其是带有方向的。在OpenCV-Python中,使用Sobel的算子的函数原型如下:dst=cv2.Sobel(src,ddepth,dx,dy[,dst[,ksize[,s…

    2022年7月14日
    18
  • 智能营销模型-Uplift Model详解及Python使用

    智能营销模型-Uplift Model详解及Python使用1 背景概览在营销场景中 通过给用户营销动作 从而带来用户动支率的提升 如在给用户发送广告邮件或优惠券等 但营销客户可分为 4 类 分别为 surething 自然转化 persuadables 营销敏感 lostcauses 无动于衷和 sleepingdogs 营销反作用 如下图所示 参考链接 而除营销敏感以外人群进行营销都会增加运营成本 因此挖掘出对营销敏感的人群是非常有必要的 2 方法介绍 2 1T Learner 论文地址 lt gt T Learner TwoModel 是将对照

    2026年3月16日
    2
  • Linux设置FQDN

    Linux设置FQDNFQDN 是 FullyQualifi 的缩写 含义是完整的域名 例如 一台机器主机名 hostname 是 www 域后缀 domain 是 example com 那么该主机的 FQDN 应该是 www example com 另外 其实 FQDN 最后是以 来结尾的 但是大部分的应用和服务器都允许忽略最后这个点 Linux 允许用户通过 hostnam

    2026年3月19日
    2
  • http和socker的区别

    http和socker的区别0x01 概述 HTTP 协议 超文本传输协议 对应于应用层 用于如何封装数据 TCP UDP 协议 传输控制协议 对应于传输层 主要解决数据在网络中的传输 IP 协议 对应于网络层 同样解决数据在网络中的传输 传输数据的时候只使用 TCP IP 协议 传输层 如果没有应用层来识别数据内容 传输后的协议都是无用的 0x02TCP 连接手机能够使用联网功能是因为手机底层实现了 TCP IP 协议 可以

    2026年3月20日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号