| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
2,683 バイト追加 、 2021年7月4日 (日) 10:07
| [[.NET Core]] | [[ASP.NET Core]] | [[C Sharp]] |
==.NET Core Console/Worker=====汎用HOST===
*https://docs.microsoft.com/ja-jp/dotnet/core/extensions/generic-host
</pre>
===実装===
*----====Progmram.cs====
<pre>
using System;
</pre>
*====設定ロード先====
<pre>
namespace docWeb.Models
</pre>
*サービス====ワーカー====
<pre>
namespace docwebusing System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.Text;using System.Threading;using System.Threading.Tasks;using docweb_bat2.Services;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Hosting;using Microsoft.Extensions.Logging;using MongoDB.Bson;using MongoDB.Driver;using Newtonsoft.Json; namespace docweb_bat2
{
public class DocumentWebService Worker : BackgroundService
{
// コンストラクタインジェクションprivate readonly ILogger<Worker> _logger;  private IConfiguration _config; private DocumentWebService _service;  static readonly HttpClient client = new HttpClient();  public Worker(ILogger<Worker> logger, IConfiguration config, DocumentWebServiceservice) { _logger = logger; _config = config; _service = service; }  protected override async Task ExecuteAsync(IConfiguration configuration, IDocumentWebDatabaseSettings settingsCancellationToken stoppingToken)
{
}
}
}
}
</pre>
*JOB===Hostedアプリケーションの停止をプログラムから===
<pre>
namespace docweb_bat.JobsIHostApplicationLifetime _lifeTime;public MyClass(IHostApplicationLifetime lifeTime)
{
_lifeTime = lifeTime;}</pre>*停止<pre>public void Exit(){ _lifeTime.StopApplication();}</pre>==汎用HOSTで実施したことをConsoleで==<pre>using System;using System.IO;using docweb.Services;using docWeb.Models;using docweb_bat.Jobs;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Options; namespace docweb_bat{ public class GetCollectionProgram { DocumentWebService _service; public GetCollectionstatic void Main(DocumentWebService servicestring[] args)
{
thisIServiceCollection services = new ServiceCollection(); var configuration = GetConfiguration(args); // require Microsoft.Extensions.Configuration._service Binder IDocumentWebDatabaseSettings dbSettings = serviceconfiguration.GetSection(nameof(DocumentWebDatabaseSettings)) .Get<DocumentWebDatabaseSettings>();  // DI services.AddSingleton<IConfiguration>(configuration); services.AddSingleton<IDocumentWebDatabaseSettings>(sp => dbSettings); services.AddSingleton<DocumentWebService>();  // JOBS services.AddSingleton<GetCollection>();  var job = services.BuildServiceProvider().GetService<GetCollection>(); job.Run()
}
public void Runprivate static IConfiguration GetConfiguration(string[] args){ // export DECWEB_ENV=Development // or launch.json configurations.env section var environmentName = Environment.GetEnvironmentVariable("DOCWEB_ENV"); Console.WriteLine($"Environment:{environmentName}");  IConfiguration configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true, true) .AddJsonFile($"appsettings.{environmentName}.json", true, true) .AddCommandLine(args) .Build();  return configuration;
}
}
}
</pre>

案内メニュー