Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
.NET Aspire を始めよう
Search
Kazuki
July 27, 2024
Technology
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
.NET Aspire を始めよう
.NETラボ 勉強会 2024年7月の「.NET Aspire を始めよう」の登壇資料です。
https://dotnetlab.connpass.com/event/323373/
Kazuki
July 27, 2024
More Decks by Kazuki
See All by Kazuki
GitHub Copilot CLI の 個人的な好きなところ
okazuki
1
740
.NET ユーザーにやさしい GitHub Copilot の使い方
okazuki
0
700
Durable Task Extension for Microsoft Agent Framework はいいぞ
okazuki
2
470
正式リリースされた Semantic Kernel の Agent Framework 全部紹介!
okazuki
1
3.4k
.NET のUnified AI Building Blocks 入門...!
okazuki
0
390
Semantic Kernel の Agent 機能試してみた!
okazuki
1
1.2k
空のプロジェクトから始める Blazor
okazuki
1
790
.NET Aspire を使おう!
okazuki
0
480
Semantic Kernel を使って ChatGPT Plugins をアプリに組み込んでみよう
okazuki
1
990
Other Decks in Technology
See All in Technology
【dbts2026】AIエージェントの 判断と探索を変える、 データベース エンジニアリング― 既存DBの処理と依存関係から作る、オペレーショナルオントロジー ―
shisyu_gaku
0
190
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
130
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
100
Gifu WordPress Meetup #200 に向けて、私たちには何ができるだろうか?/ 2026-11-07 Gifu WordPress Meetup
torounit
0
160
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
140
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
800
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
560
GCASアップデート(202607-202610)
techniczna
1
190
Oracle Database Security 詳細解説
oracle4engineer
PRO
2
260
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
410
The future of architectural work
ufried
0
170
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
420
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
433
67k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.7k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Optimizing for Happiness
mojombo
378
71k
Into the Great Unknown - MozCon
thekraken
41
2.8k
How to make the Groovebox
asonas
2
2.5k
So, you think you're a good person
axbom
PRO
2
2.2k
WENDY [Excerpt]
tessaabrams
14
40k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.7k
Color Theory Basics | Prateek | Gurzu
gurzu
1
510
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Transcript
#dotnetlab .NET Aspire を始めよう 2024/07/27 日本マイクロソフト Kazuki Ota
#dotnetlab 自己紹介 名前: 大田 一希 (Kazuki Ota) 所属: 日本マイクロソフト 役職:
クラウド ソリューション アーキテクト エバンジェリスト(AI & AppDev) 好き: C#、Azure PaaS 系サービス 苦手: パクチー、インテリセンスの弱い言語 趣味: ゲーム、絵を描くこと X(旧 Twitter): @okazuki
#dotnetlab 本セッションのゴール .NET Aspire を自分のプロジェクトに 追加してもいいかなって思ってもらう
#dotnetlab .NET Aspire とは
#dotnetlab .NET Aspire とは 以下のようなアプリケーションを開発するための便利機能詰め合わせ 分散アプリケーション 本番運用に耐えうるアプリケーション
監視可能なアプリケーション リトライ etc... .NET Aspire overview - .NET Aspire | Microsoft Learn
#dotnetlab .NET 自体が持つ機能 .NET 自体が既に、これらをサポートする機能を持っている サービス検出 OpenTelemetry リトライ メトリクス コンテナ
サポート ヘルスチェック 必要なものを、いい感じに設定するにはそれなりの労力がかかる… などなど…
#dotnetlab そこで .NET Aspire ですよ!!
#dotnetlab .NET Aspire の機能 .NET Aspire の基本的な機能 サービスの規定値 (Smart Defaults)
開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment)
#dotnetlab .NET Aspire の機能 .NET Aspire の基本的な機能 サービスの規定値 (Smart Defaults)
開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment) これらを全て もしくは部分的に使える
#dotnetlab .NET Aspire の機能紹介
#dotnetlab サービスの規定値 | Service Defaults 全てのアプリケーションに必要な規定値を提供 • リトライ • OpenTelemetry
の構成 • ヘルスチェック エンドポイントの構成 • 開発用途のものが提供される • 本番用は要件に応じて自分で実装が必要 • サービス検出 • 後ほど個別に取り上げます 実態は上記の構成をアプリケーションに追加する小さなコード
#dotnetlab 開発ダッシュボード | Developer dashboard 起動したサービスの状態の可視化 ✓ 各サービスのエンドポイント確認 ✓ 各サービスの環境変数の確認
✓ 各サービスの死活監視 ✓ トレースの確認 ✓ メトリックの確認 ✓ アプリのログの確認
#dotnetlab オーケストレーション | Orchestration アプリ ホスト プロジェクトで定義されたアプリ モデルの内容に 従ってプロジェクトなどを一括起動する機能 Before
After マルチ スタートアップ プロジェクトを構成して実行 アプリ ホスト プロジェクトを 起動すると一括で実行される
#dotnetlab アプリ モデル アプリ ホスト プロジェクトの Program.cs で DistributedApplicationBuilder を使って組み立てる
var builder = DistributedApplication.CreateBuilder(args); builder.AddProject<Projects.Backend>("backend"); builder.AddProject<Projects.Frontend>("frontend"); builder.Build().Run(); Backend プロジェクトを "backend" という名前で登録 BlazorApp11 プロジェクトを "frontend" という名前で登録
#dotnetlab サービス検出 | Service Discovery サービスのエンドポイントを名前でアクセスできるようにする機能 • アプリ モデルで定義した名前でアクセス可能 var
builder = DistributedApplication.CreateBuilder(args); var backend = builder.AddProject<Projects.Backend>("backend"); builder.AddProject<Projects.Frontend>("frontend") .WithReference(backend) .WithExternalHttpEndpoints(); builder.Build().Run(); WithReference メソッドで依存関係を定義 この例では frontend から backend を呼ぶということを設定 client.BaseAddress = new Uri("https+http://backend"); このような URL でアクセスできるようになる AppHost frontend
#dotnetlab サービス検出 | Service Discovery 実際のエンドポイントの値は環境変数に以下のような命名規約の値で設定 Services__backend__http__0=http://localhost:xxxx Services__backend__https__0=https://localhost:yyyy IHostApplicationBuilder AddServiceDefaults(
this IHostApplicationBuilder builder) { // 省略 builder.Services.AddServiceDiscovery(); builder.Services.ConfigureHttpClientDefaults(http => { // 省略 http.AddServiceDiscovery(); }); // 省略 } サービスの規定値 でサービス検出も有効化するコードが組み込まれている ServiceDefaults frontend の環境変数
#dotnetlab オーケストレーション | Orchestration .NET Aspire ホスティング パッケージを使うことでプロジェクト以外にも様々な ものをオーケストレーション可能 •
実態は Aspire.Hosting で始まる名前の NuGet パッケージ群 • アプリ ホスト プロジェクトに追加して使用 var cache = builder.AddRedis("cache"); var backend = builder.AddProject<Projects.Backend>("backend") .WithReference(cache); アプリホストプロジェクトに NuGet で Azure.Hosting.Redis パッケージを追加 AddRedis メソッドでアプリ モデルに Redis を 追加して WithReference で関連性を定義
#dotnetlab オーケストレーション | Orchestration .NET Aspire ホスティング パッケージを使うことでプロジェクト以外にも様々な ものをオーケストレーション可能 •
実態は Aspire.Hosting で始まる名前の NuGet パッケージ群 • アプリ ホスト プロジェクトに追加して使用 var cache = builder.AddRedis("cache"); var backend = builder.AddProject<Projects.Backend>("backend") .WithReference(cache); アプリホストプロジェクトに NuGet で Azure.Hosting.Redis パッケージを追加 AddRedis メソッドでアプリ モデルに Redis を 追加して WithReference で関連性を定義 Redis の Docker コンテナが起動 backend に接続文字列が追加
#dotnetlab オーケストレーション | Orchestration その他、様々なものに対応 • AddContainer: 任意のコンテナ イメージを追加 •
AddDockerfile: 任意の Dockerfile を追加 • AddExecutable: 任意の exe を追加 • AddNodeApp、AddNpmApp: Node.js や JavaScript フロントエンドを追加 • AddPythonProject: Python のアプリを追加 • AddConnectionString: 構成ファイル内の接続文字列を追加 • AddParameter: 構成ファイル内のパラメーターを追加 • など…
#dotnetlab コンポーネント | Components 各種サービスのためのクライアント ライブラリ • Redis、PostgreSQL、SQL Server、Azure OpenAI
Service など • リトライや OpenTelemetry などの構成が組 み込まれている • NuGet パッケージで配布 • コンポーネントの一覧 .NET Aspire コンポーネントの概要 - .NET Aspire |Microsoft Learn • .NET Aspire ホスティング パッケージとあわ せて使うと強力!
#dotnetlab コンポーネント | Components Redis Cache を HTTP レスポンスの出力キャッシュにする場合 Redis
を使うプロジェクトに Aspire.StackExchange.Redis.Out putCaching パッケージを追加 var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.AddRedisOutputCache("cache"); builder.Services.AddOutputCache( options => options.AddBasePolicy( policy => policy.Expire(TimeSpan.FromSeconds(5)))); // 省略 var app = builder.Build(); app.MapDefaultEndpoints(); app.UseOutputCache(); // 省略 コンポーネントを使うコード (緑部分) と ASP.NET Core のキャッシュの 構成 (赤部分) のコードを追加
#dotnetlab コンポーネント | Components Redis Cache を HTTP レスポンスの出力キャッシュにする場合 Redis
を使うプロジェクトに Aspire.StackExchange.Redis.Out putCaching パッケージを追加 var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.AddRedisOutputCache("cache"); builder.Services.AddOutputCache( options => options.AddBasePolicy( policy => policy.Expire(TimeSpan.FromSeconds(5)))); // 省略 var app = builder.Build(); app.MapDefaultEndpoints(); app.UseOutputCache(); // 省略 コンポーネントを使うコード (緑部分) と ASP.NET Core のキャッシュの 構成 (赤部分) のコードを追加 出力キャッシュが構成され、分散トレーシングなどにも対応
#dotnetlab デプロイ | Deployment Azure Developer CLI や Visual Studio
を使った Azure Container Apps へのデプロイが可能 デプロイ Azure Container Apps AppHost プロジェクト frontend backend cache Azure Dev CLI Visual Studio
#dotnetlab デプロイ | Deployment 従来通りのデプロイも可能 • 1 つ 1 つのアプリは単純な
.NET アプリ • デプロイをして環境変数を設定するだけで動作可能 • GitHub Actions などでの自動化も可能 • 従来通りのデプロイでも Azure Developer CLI の使用でも • Aspir8 を使った Kubernates へのデプロイ • prom3theu5/aspirational-manifests: Handle deployments of .NET Aspire AppHost Projects (github.com) • AWS CDK にも対応 • Deploy .NET Aspire to AWS Using CDK | by Rishupal Singh | Jul, 2024 | Medium • Add AWS CDK support by vlesierse · Pull Request #2225 · dotnet/aspire (github.com)
#dotnetlab クイック スタート .NET Aspire Starter アプリケーション 既存プロジェクトに .NET Aspire
を追加可能 フロントエンド バックエンドなどを含んだ 基本的なアプリケーション プロジェクトの右クリックメニューから 「追加」→「.NET Orchestrator サポート」
#dotnetlab まとめ
#dotnetlab .NET Aspire とは 以下のようなアプリケーションを開発するための便利機能詰め合わせ 分散アプリケーション 本番運用に耐えうるアプリケーション .NET
Aspire の機能 サービスの規定値 (Smart Defaults) 開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment)
#dotnetlab まとめ 気になった人は 是非 .NET Aspire を使ってみてください
#dotnetlab 参考情報 • マイクロソフト上坂さんの Qiita の記事 • .NET Aspire って何?
- 概要 #.NETAspire – Qiita • Microsoft Learn 公式ドキュメント • .NET Aspire documentation | Microsoft Learn • Microsoft Learn のトレーニングの .NET Aspire のラーニング パス • .NET Aspire を使用して分散アプリを構築する - Training | Microsoft Learn • eShop Reference Application – "AdventureWorks" • dotnet/eShop: A reference .NET application implementing an eCommerce site (github.com)
#dotnetlab © Copyright Microsoft Corporation. All rights reserved.