Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利
な機能
サイエンスパーク株式会社 須藤圭太
1
• ID:suusanex( connpass・Twitter・GitHub共通)
• 名前:須藤圭太
• サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属
• 4年ほど受託開発で、上流から下流まで全部を回す
• ここ6年ほどは、...
• そろそろ.NET Core
• ASP.NET Coreの情報はたくさんある
• しかしデスクトップ開発では、Windowsサービスだってまだまだ現役
• .NET CoreでのWindowsサービスの作り方は?
3
• .NET Coreの場合は、「Worker Service」を使用する
• VS2019のバージョンが少し古いと出てこない場合があるので、要アップデート
サービスのテンプレートを選択
4
• この時点で、サービスではないがコンソールアプリとして起動可能
• デバッグに便利
ただのワーカーとしてデバッグ可能
• Windowsサービスとして使えるようにしていく
• まず、Hostingの拡張をNuGetで追加
Windowsサービス化:NuGet
6
• テンプレートに入っているIHostBuilderのコードに
• 次の1行を追加
• 完成!
Windowsサービス化:コード追加
7
public static IHostBuilder CreateHostBuilder(string[]...
• ネイティブのWindowsサービスと同じようにインストール
• Win32APIのCreateService
• PowerShellのNew-Service
• など
• .NET Frameworkで作った場合のような、専用のインストー...
• (大雑把な理解として)
• プロセスの下で動くもの(Windowsサービス、Webサーバー、ロガーなど)をすべ
て同じI/Fで束ねる
• それらのDIや、共通のライフタイム管理を実現
• 正確なところはMSへ
• https://docs....
• 例えば、WindowsサービスとgRPCのホスト(サーバー)を同じプロセスで持ちたい
• CreateHostBuilderで両方を入れるだけ
• 同じI/Fでまとめてホストし、まとめて開始・終了処理をやってくれる
IHostBuilder...
• ログ取得に使いたいクラスを入れておくと、 ILoggerにまとめてInjectionしてくれ
る
• Nlogを使う場合は、NuGetでNLog.Extensions.Hostingを追加
• IHostBuilderへ「.UseNLog(...
• Microsoft.Extensions.DependencyInjectionが組み込まれている
• (手動で組み込めば他のプロジェクトでも使用可能)
• ※.NET Frameworkではアセンブリ参照の問題が多発しているのでやめた方が...
• .NET CoreでもWindowsサービスは作れる
• むしろ、.NET Frameworkより進化している
• デスクトップアプリも可能なところは.NET Coreへの対応を模索していきましょう
まとめ
13
SP2005-E05-01
Upcoming SlideShare
Loading in …5
×

of

.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 1 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 2 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 3 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 4 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 5 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 6 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 7 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 8 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 9 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 10 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 11 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 12 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 13 .NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能 Slide 14
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能

Download to read offline

勉強会で発表した資料。
https://sciencepark.connpass.com/event/175823/

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能

  1. 1. .NET CoreでのWindowsサービスの作り方と、Coreならではの便利 な機能 サイエンスパーク株式会社 須藤圭太 1
  2. 2. • ID:suusanex( connpass・Twitter・GitHub共通) • 名前:須藤圭太 • サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属 • 4年ほど受託開発で、上流から下流まで全部を回す • ここ6年ほどは、自社製品開発を担当 勉強会、今後も開いていきます。 https://sciencepark.connpass.com/ 自己紹介 2
  3. 3. • そろそろ.NET Core • ASP.NET Coreの情報はたくさんある • しかしデスクトップ開発では、Windowsサービスだってまだまだ現役 • .NET CoreでのWindowsサービスの作り方は? 3
  4. 4. • .NET Coreの場合は、「Worker Service」を使用する • VS2019のバージョンが少し古いと出てこない場合があるので、要アップデート サービスのテンプレートを選択 4
  5. 5. • この時点で、サービスではないがコンソールアプリとして起動可能 • デバッグに便利 ただのワーカーとしてデバッグ可能
  6. 6. • Windowsサービスとして使えるようにしていく • まず、Hostingの拡張をNuGetで追加 Windowsサービス化:NuGet 6
  7. 7. • テンプレートに入っているIHostBuilderのコードに • 次の1行を追加 • 完成! Windowsサービス化:コード追加 7 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); .UseWindowsService()
  8. 8. • ネイティブのWindowsサービスと同じようにインストール • Win32APIのCreateService • PowerShellのNew-Service • など • .NET Frameworkで作った場合のような、専用のインストーラは無い Windowsサービス化:インストール方法 8
  9. 9. • (大雑把な理解として) • プロセスの下で動くもの(Windowsサービス、Webサーバー、ロガーなど)をすべ て同じI/Fで束ねる • それらのDIや、共通のライフタイム管理を実現 • 正確なところはMSへ • https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/host/generic- host 作成中に登場したIHostBuilderとは 9
  10. 10. • 例えば、WindowsサービスとgRPCのホスト(サーバー)を同じプロセスで持ちたい • CreateHostBuilderで両方を入れるだけ • 同じI/Fでまとめてホストし、まとめて開始・終了処理をやってくれる IHostBuilderの便利なところ:複数ホストの管理 10 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }) .UseWindowsService() //ここまでがWindowsサービス .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://localhost:51232"); webBuilder.UseStartup<Startup>(); }); //ここまでがgRPC
  11. 11. • ログ取得に使いたいクラスを入れておくと、 ILoggerにまとめてInjectionしてくれ る • Nlogを使う場合は、NuGetでNLog.Extensions.Hostingを追加 • IHostBuilderへ「.UseNLog()」を追加 • コンストラクタのILogger<>へ代入してくれる IHostBuilderの便利なところ:ロガー 11 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseNLog() public Worker(ILogger<Worker> logger, IDITestClass diTestClass)
  12. 12. • Microsoft.Extensions.DependencyInjectionが組み込まれている • (手動で組み込めば他のプロジェクトでも使用可能) • ※.NET Frameworkではアセンブリ参照の問題が多発しているのでやめた方が良い • servicesに型を登録すると、その後に生成されるインスタンスへDIしてくれる • 登録 • ↓インスタンスを作成してコンストラクタへ渡してくれる IHostBuilderの便利なところ:DI 12 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddSingleton<IDITestClass, DITestClass>(); services.AddHostedService<Worker>(); }) public Worker(ILogger<Worker> logger, IDITestClass diTestClass) { _diTestClass = diTestClass;
  13. 13. • .NET CoreでもWindowsサービスは作れる • むしろ、.NET Frameworkより進化している • デスクトップアプリも可能なところは.NET Coreへの対応を模索していきましょう まとめ 13
  14. 14. SP2005-E05-01

勉強会で発表した資料。 https://sciencepark.connpass.com/event/175823/

Views

Total views

225

On Slideshare

0

From embeds

0

Number of embeds

18

Actions

Downloads

1

Shares

0

Comments

0

Likes

0

×