0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dotnet でAPI サーバー開発時の web API と A spire API との違いまとめ

Posted at

.NET で Web API を作るとき、いつものように dotnet new webapi でプロジェクトを作る人が多いと思います。

でも最近、dotnet aspire という新しい選択肢が出てきて、「これって何?」「普通の Web API と何が違うの?」と気になったので調べてみました。

Aspire はマイクロサービスやクラウドを念頭においたもので、そのための機能が用意されているようです。ただ、構成もやることも増えるので、学習コストが高くなります。

従来の Web API プロジェクトと Aspire を使った API 開発を実際に比べてみて、どんなところが違うかをまとめてみました。

そもそも Aspire とは

dotnet aspire は、.NET 8 から登場した新しいアプリケーションモデルで、マイクロサービスや分散システムを簡単に構築・管理できることを目的としています。
名前の由来は「分散アプリを '目指す(aspire)'」という意味合いです。

Aspire での API サーバーのプロジェクト作成方法は?

aspire-webapi テンプレートを使って API プロジェクトを作成します。

プロジェクト名がMyAspireApiの場合
dotnet new aspire-webapi -n MyAspireApi

プロジェクトのディレクトリツリーは次のような感じです。

MyAspireApi/
├── MyAspireApi.sln
├── MyAspireApi.AppHost/         ← 全体構成と依存サービス
├── MyAspireApi.WebApi/          ← 実際のAPIロジック(ASP.NET Core)
└── MyAspireApi.Components/      ← 共有コード(モデル・サービスなど)

Web API と Aspire API との違い

概要比較

項目 通常の Web API Aspire API
コマンド dotnet new webapi dotnet new aspire-webapi
構成 単一プロジェクト or 単純な構成 複数プロジェクト(AppHost + サービス)
クラウド対応 手動で追加(Docker/K8s等) 初めからクラウドネイティブ前提
サービス登録 builder.Services.AddXxx() Aspire の AppHost で依存関係を定義
実行管理 dotnet run 単体 dotnet run で複数サービス一括起動
Daprなど 手動導入 Aspire AppHostから連携しやすい
観測性 監視・トレースは手動構築 OpenTelemetry, Dashboard 付き
主な用途 単体API、業務アプリ、社内APIなど マイクロサービス構成、SaaS、分散システム

開発時の比較

比較項目 通常の Web API Aspire
セットアップの簡単さ 非常に簡単:単一プロジェクトで完結 やや難しい:複数プロジェクトが生成される
構成の理解コスト 低い:APIだけに集中できる 中〜高:AppHost, コンポーネント分離の理解が必要
依存関係の管理 DI とサービス登録で完結 AppHost側で構成し、APIから参照するモデル
開発中の確認のしやすさ シンプル:dotnet run 一発起動 Aspireダッシュボードあり、ただし複数起動に注意
追加サービスの連携(DB, Redisなど) 自分でDockerやパッケージを用意 Aspire内で apphost.AddRedis(...) 等で連携容易
制約(自由度) 高い(自由にプロジェクト構成できる) やや制限あり(推奨構成に従う必要がある)
学習コスト 初学者でもすぐに始められる .NETの中級者以上向け(AppHostやオーケストレーションの理解が必要)
クラウド対応(将来性) Docker/K8s 対応は手動構築 Aspire内に初めから整備済み、スケール想定向き

Aspire API 開発の特徴

  • AppHost プロジェクトでサービスを束ねて一括管理できる
  • 分散トレーシング、ログ収集、メトリクスが初期構成に組み込み済み(OpenTelemetry)
  • Redis、PostgreSQL、Zipkinなどを開発時に簡単に使える(dotnet aspire run で起動)
  • 複数のAPIやWorkerを統一して起動できる

まとめ

どちらが優れているというよりも、目的や開発規模に応じて選ぶべき、という感じでしょうか。
まずは従来の構成で始めてみて、サービスの成長に合わせて Aspire を検討という進め方が順当のようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?