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

MyMemoWiki

「.NET Core Console」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
1行目: 1行目:
 
| [[.NET Core]] | [[ASP.NET Core]]  | [[C Sharp]] |  
 
| [[.NET Core]] | [[ASP.NET Core]]  | [[C Sharp]] |  
==.NET Core Console==
+
==.NET Core Console/Worker==
 
===汎用HOST===
 
===汎用HOST===
 
*https://docs.microsoft.com/ja-jp/dotnet/core/extensions/generic-host
 
*https://docs.microsoft.com/ja-jp/dotnet/core/extensions/generic-host
97行目: 97行目:
 
</pre>
 
</pre>
  
*サービス
+
*ワーカー
 
<pre>
 
<pre>
namespace docweb.Services
+
using 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
+
     public class Worker : BackgroundService
 
     {
 
     {
         // コンストラクタインジェクション
+
         private readonly ILogger<Worker> _logger;
         public DocumentWebService(IConfiguration configuration, IDocumentWebDatabaseSettings settings)
+
 
 +
        private IConfiguration _config;
 +
        private DocumentWebService _service;
 +
 
 +
        static readonly HttpClient client = new HttpClient();
 +
 
 +
         public Worker(ILogger<Worker> logger, IConfiguration config, DocumentWebService service)
 
         {
 
         {
 +
            _logger = logger;
 +
            _config = config;
 +
            _service = service;
 
         }
 
         }
    }
+
 
}
+
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
</pre>
 
*JOB
 
<pre>
 
namespace docweb_bat.Jobs
 
{
 
    public class GetCollection
 
    { 
 
        DocumentWebService _service;
 
        public GetCollection(DocumentWebService service)
 
        {
 
            this._service = service;
 
        }
 
         public void Run()
 
 
         {
 
         {
 +
              :
 
         }
 
         }
 +
      }
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>

2021年7月4日 (日) 05:41時点における版

| .NET Core | ASP.NET Core | C Sharp |

.NET Core Console/Worker

汎用HOST

プロジェクト作成

$ dotnet new worker -o docweb_bat2
$ dotnet new gitignore

NuGet

Configuration

dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0
dotnet add package Microsoft.Extensions.Configuration.CommandLine --version 5.0.0

Logging

  • Log4net
dotnet add package Microsoft.Extensions.Logging.Log4Net.AspNetCore --version 5.0.3

DI

dotnet add package Microsoft.Extensions.DependencyInjection --version 5.0.1
dotnet add package Microsoft.Extensions.Options --version 5.0.0
dotnet add package Microsoft.Extensions.Configuration.Binder --version 5.0.0

実装

  • Progmram.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using docweb_bat2.Models;
using docweb_bat2.Services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace docweb_bat2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
            
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging((hostContext, builder) =>
                {
                    builder.ClearProviders();
                    builder.AddLog4Net();
                })
                .ConfigureServices((hostContext, services) =>
                {
                    // requires using Microsoft.Extensions.Options
                    services.Configure<DocumentWebDatabaseSettings>(
                        hostContext.Configuration.GetSection(nameof(DocumentWebDatabaseSettings)));

                    services.AddSingleton<IDocumentWebDatabaseSettings>(sp =>
                        sp.GetRequiredService<IOptions<DocumentWebDatabaseSettings>>().Value);

                    services.AddSingleton<IConfiguration>(hostContext.Configuration);
                    services.AddSingleton<DocumentWebService>();

                    services.AddHostedService<Worker>();
                })
                ;
    }
}
  • 設定ロード先
namespace docWeb.Models
{
    public interface IDocumentWebDatabaseSettings
    {
        string DocumentWebCollectionName { get; set; }
        string ConnectionString { get; set; }
        string DatabaseName { get; set; }
    }

    public class DocumentWebDatabaseSettings : IDocumentWebDatabaseSettings
    {
        public string DocumentWebCollectionName { get; set; }
        public string ConnectionString { get; set; }
        public string DatabaseName { get; set; }
    }
}

*ワーカー

using 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 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, DocumentWebService service)
        {
            _logger = logger;
            _config = config;
            _service = service;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
              :
        }
      }
    }
}