公司网站域名cn和com,教育公司网站模板,jsp获取网站域名,网站页面数怎么做背景之前一直有朋友问#xff0c;.Net Core Linux环境有没有类似Windows服务的东西。其实是有的#xff0c;我了解的方法有两种#xff1a;#1 创建一个ASP.Net Core的Web项目#xff08;如Web API#xff09;#xff0c;然后通过添加中间件#xff08;Middleware#… 背景 之前一直有朋友问.Net Core Linux环境有没有类似Windows服务的东西。其实是有的我了解的方法有两种 #1 创建一个ASP.Net Core的Web项目如Web API然后通过添加中间件Middleware的方式来启动任务 #2 创建一个.Net Core的项目添加HostDependency InjectionConfiguration等组件然后通过Main方法或中间件的方式启动服务。 但是上述两种方法都有点不足如 #1 会把Web的生命周期引进来但实际上我们并不需要Web的功能如Controller #2 本身是没有问题的但是对开发者的要求相对高一点点需要对.Net Core的各个组成部分都有一定的认识简而言之门槛有一丢丢高。 .Net Core 2.1推出了一个Generic Host的概念可以很好的解决上面两种方法的不足 至于为什么选择Quartz来做调度我想可能是因为情怀吧因为之前是用的TopShelfQuartz其实Hangfire也不错。 使用Hosted Service1. 创建一个控制台程序。 2. 添加Host Nuget包。3. 添加一个基于Timer的简单Hosted Service用于简单演示继承IHostedService。4. Main函数中添加Host的相关代码。5. 查看结果 6. 代码解析a. Host配置.ConfigureHostConfiguration(configHost { //配置根目录 configHost.SetBasePath(Directory.GetCurrentDirectory()); //读取host的配置json和appsetting类似暂不需要先注释掉可根据需要开启 //configHost.AddJsonFile(hostsettings.json, true, true); //读取环境变量Asp.Net core默认的环境变量是以ASPNETCORE_作为前缀的这里也采用此前缀以保持一致 configHost.AddEnvironmentVariables(ASPNETCORE_); //可以在启动host的时候之前可传入参数暂不需要先注释掉可根据需要开启 //configHost.AddCommandLine(args);}) b. App配置.ConfigureAppConfiguration((hostContext, configApp) { //读取应用的配置json configApp.AddJsonFile(appsettings.json, true); //读取应用特定环境下的配置json configApp.AddJsonFile($appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json, true); //读取环境变量 configApp.AddEnvironmentVariables(); //可以在启动host的时候之前可传入参数暂不需要先注释掉可根据需要开启 //configApp.AddCommandLine(args);}) c. 配置服务及依赖注入注册注没有Middleware的配置了。.ConfigureServices((hostContext, services) { //添加日志Service services.AddLogging(); //添加Timer Hosted Service services.AddHostedServiceTimedHostedService();}) d. 日志配置.ConfigureLogging((hostContext, configLogging) { //输出控制台日志 configLogging.AddConsole(); //开发环境输出Debug日志 if (hostContext.HostingEnvironment.EnvironmentName EnvironmentName.Development) { configLogging.AddDebug(); }}) e. 使用控制台生命周期.UseConsoleLifetime() //使用Ctrl C退出 其它详细的可参考https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?viewaspnetcore-2.1 使用Quartz1. 添加Host Nuget包。Install-Package Quartz -Version 3.0.5Install-Package Quartz.Plugins -Version 3.0.5 2. Quartz配置。之前Quartz的配置是放在quartz.config里面的但我更喜欢使用appsettings.json因此把配置改成了从appsettings.json。先建一个QuartzOption的类3. 重写JobFactory。4. 编写Quartz Hosted Service5. 准备appsettings.json6. 编写一个TestJob7. 准备Quartz的调度文件quartz_jobs.xml8. 注册Quartz Hosted Service和TestJob9. 查看结果 10. 补充说明。Generic Service默认的环境是Production如果想使用Development环境可以在项目属性的Debug页签中添加环境变量来实现。 源码地址https://github.com/ErikXu/.NetCoreTips/tree/master/HostedService.Quartz 便捷使用https://www.nuget.org/packages/Quartz.HostedService/https://github.com/ErikXu/Quartz.HostedService相关文章ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务原文地址: https://www.cnblogs.com/Erik_Xu/p/9219307.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com