Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
TomomitsuKusaba
PDF, PPTX
396 views
ASP. NET Core 汎用ホスト概要
.NET ラボ勉強会2022年10月 ASP. NET Core 汎用ホスト概要
Engineering
◦
Related topics:
ASP.NET Core
•
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 25
2
/ 25
3
/ 25
4
/ 25
5
/ 25
6
/ 25
7
/ 25
8
/ 25
9
/ 25
10
/ 25
11
/ 25
12
/ 25
13
/ 25
14
/ 25
15
/ 25
16
/ 25
17
/ 25
18
/ 25
19
/ 25
20
/ 25
21
/ 25
22
/ 25
23
/ 25
24
/ 25
25
/ 25
More Related Content
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
by
Takahiro Inoue
PDF
Microsoft Graph APIを活用した社内アプリケーション開発
by
Yuki Hattori
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PPTX
え!?データがオンプレにあるけどPower BI で BI したいの?
by
Yugo Shimizu
PPTX
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
PPTX
がっつりMongoDB事例紹介
by
Tetsutaro Watanabe
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
by
Takahiro Inoue
Microsoft Graph APIを活用した社内アプリケーション開発
by
Yuki Hattori
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
by
Jun-ichi Sakamoto
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
え!?データがオンプレにあるけどPower BI で BI したいの?
by
Yugo Shimizu
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
がっつりMongoDB事例紹介
by
Tetsutaro Watanabe
What's hot
PDF
Redmine issue assign notice plugin の紹介
by
onozaty
PDF
.NET 7におけるBlazorの新機能
by
TomomitsuKusaba
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
Cognito、Azure ADと仲良くしてみた
by
Takafumi Kondo
PPTX
Hybrid Azure AD Join 動作の仕組みを徹底解説
by
Yusuke Kodama
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
PDF
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
by
Yuta Matsumura
PPTX
backlogsでもCI/CDする夢を見る
by
Takeru Maehara
PDF
AI時代の要件定義
by
Zenji Kanzaki
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
by
NTT DATA Technology & Innovation
PPTX
ファイルサーバーを SharePoint に移行するためのアプローチ
by
日本マイクロソフト株式会社
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
by
Recruit Technologies
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
by
日本マイクロソフト株式会社
PDF
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
by
Yahoo!デベロッパーネットワーク
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
Redmine issue assign notice plugin の紹介
by
onozaty
.NET 7におけるBlazorの新機能
by
TomomitsuKusaba
Docker Compose 徹底解説
by
Masahito Zembutsu
Cognito、Azure ADと仲良くしてみた
by
Takafumi Kondo
Hybrid Azure AD Join 動作の仕組みを徹底解説
by
Yusuke Kodama
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
by
Yuta Matsumura
backlogsでもCI/CDする夢を見る
by
Takeru Maehara
AI時代の要件定義
by
Zenji Kanzaki
ドメイン駆動設計 基本を理解する
by
増田 亨
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
by
NTT DATA Technology & Innovation
ファイルサーバーを SharePoint に移行するためのアプローチ
by
日本マイクロソフト株式会社
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
by
Recruit Technologies
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
by
日本マイクロソフト株式会社
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
by
Yahoo!デベロッパーネットワーク
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
More from TomomitsuKusaba
PDF
Web開発者にお勧め .NET MAUI Blazor App
by
TomomitsuKusaba
PDF
Microsoft MVPとは?コミュニティ活動のすすめ
by
TomomitsuKusaba
PDF
.NET 7期待の新機能
by
TomomitsuKusaba
PDF
NET 6で実装された新しいLINQ API
by
TomomitsuKusaba
PDF
.NET6新機能の振り返り
by
TomomitsuKusaba
PDF
Web開発者が始める .NET MAUI Blazor App
by
TomomitsuKusaba
PDF
BlazorにSwaggerを導入してみよう
by
TomomitsuKusaba
PDF
MuseLoid規格の音源自作について
by
TomomitsuKusaba
PDF
Entity Framework(Core)についての概要を学ぼう
by
TomomitsuKusaba
PDF
.NET Lab2022年2月
by
TomomitsuKusaba
PDF
保守性の高いアプリケーション設計について
by
TomomitsuKusaba
PDF
リモートワークで買ってよかったもの
by
TomomitsuKusaba
PDF
Static Web AppsとBlazor WebAssemblyのすすめ
by
TomomitsuKusaba
PDF
.NET 6の期待の新機能とアップデート
by
TomomitsuKusaba
PPTX
.NETラボ2021年10月 .NETの過去と現在
by
TomomitsuKusaba
PPTX
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
by
TomomitsuKusaba
PPTX
.Netlab202107
by
TomomitsuKusaba
Web開発者にお勧め .NET MAUI Blazor App
by
TomomitsuKusaba
Microsoft MVPとは?コミュニティ活動のすすめ
by
TomomitsuKusaba
.NET 7期待の新機能
by
TomomitsuKusaba
NET 6で実装された新しいLINQ API
by
TomomitsuKusaba
.NET6新機能の振り返り
by
TomomitsuKusaba
Web開発者が始める .NET MAUI Blazor App
by
TomomitsuKusaba
BlazorにSwaggerを導入してみよう
by
TomomitsuKusaba
MuseLoid規格の音源自作について
by
TomomitsuKusaba
Entity Framework(Core)についての概要を学ぼう
by
TomomitsuKusaba
.NET Lab2022年2月
by
TomomitsuKusaba
保守性の高いアプリケーション設計について
by
TomomitsuKusaba
リモートワークで買ってよかったもの
by
TomomitsuKusaba
Static Web AppsとBlazor WebAssemblyのすすめ
by
TomomitsuKusaba
.NET 6の期待の新機能とアップデート
by
TomomitsuKusaba
.NETラボ2021年10月 .NETの過去と現在
by
TomomitsuKusaba
.NETラボ2021年9月 Blazorのカスタム認証を通じてDIの便利さを学ぶ
by
TomomitsuKusaba
.Netlab202107
by
TomomitsuKusaba
ASP. NET Core 汎用ホスト概要
1.
ASP.NET Core 汎用ホスト概要 株式会社SAKURUG エンジニアリングユニット 草場 友光 .NET
ラボ 2022年10月
2.
自己紹介 • 普段は主にWebFormsアプリの保守の お仕事をしてます。 • 古めのシステムが多いので時代に取り 残されぬよう新しい技術を一つでも入 れるよう日々努力しています。 •
2022/08-2023 Microsoft MVP (Developer Technologies) • tomo_kusaba
3.
宣伝 【VISION】ひとの可能性を開花させる企業であり続ける VISIONに共感できる仲間募集中。
4.
注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 •
#dotnetlabでtweetすると右側に表示されます
5.
今日の目的 • ASP.NET Coreにおける汎用ホスト(Generic
Host)の意義につ いてを知る • また、.NET全体から見た汎用ホストの位置づけを確認する • 汎用ホストのもつ主な機能について確認をする
6.
汎用ホストの意義について • .NETにおけるアプリケーションの共通的な作りを統一化する • どのアプリケーションでも必要とされるようなベースラインの 機能を提供する •
開発者は必要とする任意の機能をホストに追加することができ る
7.
汎用ホストがない世界線・・・ • アプリケーションごとに異なる実装(ログ・DI・構成) • ミドルウェア実装が汎用ホストに紐付いてないためワークロー ドごとに書きっぷりが変わっていた可能性 •
とにかく、WebでもコンソールでもWPFでもMAUIでも記述に 統一性を持たせてくれたのが汎用ホストの恩恵
8.
ASP.NET Coreの汎用ホストの種類 • .NET
WebApplicationホスト(最小ホスト) • .NETでの汎用ホスト • ASP.NET CoreのWebホスト
9.
.NET WebApplicationホスト • コード例 var
builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
10.
.NETでの汎用ホスト • コード例 using Microsoft.AspNetCore.Hosting; await
Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.Configure ((ctx, app) => { app.UseRouting(); app.UseEndpoints(e => { e.MapGet("/", () => "Hello World!"); }); }); }) .Build() .RunAsync();
11.
汎用ホストの機能について再確認 • 依存関係の挿入(DI) • ログの記録 •
構成
12.
既定のBuilder設定 (CreateDefaultBuilder) • コンテンツ ルートを、GetCurrentDirectory
によって返されるパスに設定します。 • 次からホスト構成を読み込みます。 • プレフィックス DOTNET_ が付いた環境変数。 • コマンド ライン引数。 • 次からアプリの構成を読み込みます。 • appsettings.json. • appsettings.{Environment}.json. • 環境でアプリが実行される場合に使用されるユーザー シークレット。 • 環境変数。 • コマンド ライン引数。 • 次のログ プロバイダーを追加します。 • コンソール • デバッグ • EventSource • イベント ログ (Windows で実行されている場合のみ) • 環境が [開発] になっている場合は、スコープの検証と依存関係の検証を有効にします。
13.
既定のBuilder設定 (ConfigureWebHostDefaults) • プレフィックス ASPNETCORE_
が付いた環境変数からホスト構成 を読み込みます。 • Kestrel サーバーを Web サーバーとして設定し、アプリのホスティ ング構成プロバイダーを使用してそれを構成します。 Kestrel サー バーの既定のオプションについては、「Kestrel」を参照してくださ い。 • Host Filtering middleware を追加します。 • が true の場合、Forwarded Headers Middleware を追加します。 • IIS 統合を有効にします。 IIS の既定のオプションについては、 「IIS を使用した Windows での ASP.NET Core のホスト」を参照 してください。
14.
依存関係の挿入(DI) • 汎用ホストの機能によってDIの機能が提供されています。 • DIについての詳しい解説は省略します •
(これで一つのセッションになってしまいます)
15.
ASP.NET Coreのミドルウェア例 ミドルウェア 説明
API 認証 認証のサポートを有効にします。 UseAuthenctication 承認 承認のサポートを有効にします。 UseAuthorization CORS クロスオリジンリソース共有を有効にします。 UseCors 例外ハンドラ ミドルウェアパイプラインがスローする例外をグローバルに処理します。 UseExceptionHandler 転送されるヘッダ プロキシされたヘッダーを現在の要求に転送します。 UseForwardedHeaders HTTPSリダイレクト すべてのHTTP要求をHTTPSにリダイレクトします。 UseHttpsRedirection HSTS 特殊な応答ヘッダを追加するセキュリティ拡張のミドルウェア UseHsts MVC MVCまたRazor Pagesで要求を処理します UseMvc 要求ログ HTTP要求と応答ログのサポートを提供します。 UseHttpLogging W3Cログ W3C形式のHTTP要求と応答ログのサポートを提供します。 UseW3CLogging 応答キャッシュ 応答のキャッシュのサポートを提供します。 UseResponseCaching 応答圧縮 応答の圧縮のサポートを提供します。 UseResponseCompression セッション ユーザセッションの管理のサポートを提供します。 UseSession 静的ファイル 静的ファイルとディレクトリ参照に対応するサポートを提供します。 UseStaticFiles, UseFileServer WebSocket WebSocketプロトコルを有効にします。 UseWebSockets
16.
ログの記録 既定の ASP.NET Core
Web アプリ テンプレートでは • 汎用ホストが使用されます。 • WebApplication.CreateBuilder が呼び出されます。これにより、次 のログ プロバイダーが追加されま す。 • コンソール • デバッグ • EventSource • EventLog:Windows のみ var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
17.
HTTPログ HTTP ログは、受信した HTTP
要求と HTTP 応答に関する情報をログに記録するミ ドルウェアです。 HTTP ログにより、次の ログが提供されます。 • HTTP 要求情報 • 共通プロパティ • ヘッダー • 本文 • HTTP 応答情報 var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseHttpLogging(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); } app.UseStaticFiles(); app.MapGet("/", () => "Hello World!"); app.Run();
18.
W3Cログ W3CLogger は W3C
標準形式で ログ ファイルを書き込むミドル ウェアです。 ログには、HTTP 要 求と HTTP 応答に関する情報が含 まれています。 W3CLogger は次 のログを提供します。 • HTTP 要求情報 • 共通プロパティ • ヘッダー • HTTP 応答情報 • 要求/応答のペアに関するメタ データ (開始日時、所要時間) var app = builder.Build(); app.UseW3CLogging(); app.UseRouting();
19.
ルーティング • 受信したHTTP要求を照合し、それらをアプリの実体にディス パッチすること。 • 次のものを利用してルーティングを構成できる •
Controllers • Razor Pages • SignalR • gRPC • エンドポイント対応のミドルウェア • ルーティング対応のデリゲートとラムダ
20.
ルーティング例 (Hello World) 左の例ではMapGetメソッドを使用するエ ンドポイントが1つ含まれます。 •
HTTP GET要求がルートURL「/」に送 信された場合 • 要求デリゲートが実行されます • Hello World!がHTTP応答に書き込まれます • 要求メソッドがGETでない場合、また ルートURLが「/」でない場合は一致す るルートはなくHTTP404が返されます。 var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
21.
ホストの構成 次の変数は、ホスト ビルダーを初期化するときに早期にロックされ、 アプリケーション構成の影響を受けることはありません。 • アプリケーション名 •
環境名 (例: Development、Production、Staging) • コンテンツ ルート • Web ルート • スタートアップ アセンブリのホスティングをスキャンするかどうか、 およびスキャンするアセンブリ。 • IHostBuilder.ConfigureAppConfiguration コールバックの HostBuilderContext.Configuration からアプリおよびライブラリ コードによって読み取られる変数。
22.
アプリの構成の優先順位 1. コマンドライン構成プロバイダーを使用するコマンドライン引数。 2. 接頭辞なしの環境変数構成プロバイダーを使用した接頭辞なしの 環境変数。 3.
環境でアプリが実行される場合に使用されるユーザー シークレッ ト。 4. JSON 構成プロバイダーを使用する appsettings.{Environment}.json。 たとえば、 appsettings.Production.json と appsettings.Development.json です。 5. JSON 構成プロバイダーを使用する appsettings.json。 6. 次のセクションで説明するホスト構成へのフォールバック。
23.
デモ • コンソールテンプレートからブラウザにHello Worldを表示す るまで。
24.
参考文献 • ASP.NET Core
の .NET 汎用ホスト • ASP.NET Core の構成 • .NET Core および ASP.NET Core でのログ記録 • ASP.NET Core での HTTP ログ • ASP.NET Core の W3CLogger • ASP.NET Core のルーティング • ASP.NET Core のミドルウェア
25.
おしまい おしまい
Download