日本語版
最新ニュース
企業

MicroMediator の紹介: .NET 用の軽量で高性能なメディエーター – Technical Dogsbody – テクニカル アーキテクト – C# 開発者

新しい NuGet パッケージを公開しました。 TechnicalDogsbody.MicroMediator。これは、.NET 用の軽量でパフォーマンスを重視したメディエーター パターンの実装です。このライブラリは、コンポーネントが相互に通信する方法を簡素化し、定型的な配線を削除します。つけてもらえますよ NuGet またはソースを探索してください GitHub。メディエーター パターンは、システムの各部分を相互に直接依存させるのではなく、中間にオブジェクトを配置して、それらの部分間の通信を処理します。これにより結合が軽減され、コードの保守とテストが容易になります。このパターンは、ソフトウェア設計において、特にサービスやハンドラー間の対話をより明確に制御したい場合によく知られています。 (ウィキペディア)MicroMediator の機能MicroMediator は、プロジェクトに多くの依存関係をダンプすることなく、リクエスト/レスポンスとストリーミング フローを構築するためのシンプルな API を提供します。一部の代替手段とは異なり、パフォーマンスと最小限のオーバーヘッドに焦点を当てています。主な機能には、次の組み込みサポートが含まれます。検証 処理される前のリクエストの数。ロギング ハンドラーの実行。キャッシング 効率的に応答します。ストリーミング を使用した大規模なデータセット IAsyncEnumerable。商用ライセンス費用はゼロ。 (NuGet)ベンチマークでは、一部の一般的なメディエーター ライブラリよりも 2 倍から 8 倍の速度で実行され、使用するメモリが少ないことが示されています。 (NuGet)実際のプロジェクトでこれが重要な理由バックエンド システムや API を構築すると、他の多くのサービスを直接参照するサービスやコントローラーが作成されることがよくあります。そのため、テストが難しくなり、リファクタリングのリスクが高まります。メディエーター アプローチでは、リクエスト タイプとそれを処理するハンドラーを定義します。コントローラーまたはジョブはメディエーターを呼び出すだけです。これにより、通信ロジックが必要な場所に分割され、コンポーネントの交換やモックが容易になります。MicroMediator と Optimizely CMSOptimizely CMS プロジェクト、特にサービスとしてのプラットフォーム…

MicroMediator の紹介: .NET 用の軽量で高性能なメディエーター – Technical Dogsbody – テクニカル アーキテクト – C# 開発者

1767670667
2026-01-05 09:30:00

新しい NuGet パッケージを公開しました。 TechnicalDogsbody.MicroMediator。これは、.NET 用の軽量でパフォーマンスを重視したメディエーター パターンの実装です。このライブラリは、コンポーネントが相互に通信する方法を簡素化し、定型的な配線を削除します。つけてもらえますよ NuGet またはソースを探索してください GitHub

メディエーター パターンは、システムの各部分を相互に直接依存させるのではなく、中間にオブジェクトを配置して、それらの部分間の通信を処理します。これにより結合が軽減され、コードの保守とテストが容易になります。このパターンは、ソフトウェア設計において、特にサービスやハンドラー間の対話をより明確に制御したい場合によく知られています。 (ウィキペディア)

MicroMediator の機能

MicroMediator は、プロジェクトに多くの依存関係をダンプすることなく、リクエスト/レスポンスとストリーミング フローを構築するためのシンプルな API を提供します。一部の代替手段とは異なり、パフォーマンスと最小限のオーバーヘッドに焦点を当てています。

主な機能には、次の組み込みサポートが含まれます。

  • 検証 処理される前のリクエストの数。
  • ロギング ハンドラーの実行。
  • キャッシング 効率的に応答します。
  • ストリーミング を使用した大規模なデータセット IAsyncEnumerable
  • 商用ライセンス費用はゼロ。 (NuGet)

ベンチマークでは、一部の一般的なメディエーター ライブラリよりも 2 倍から 8 倍の速度で実行され、使用するメモリが少ないことが示されています。 (NuGet)

実際のプロジェクトでこれが重要な理由

バックエンド システムや API を構築すると、他の多くのサービスを直接参照するサービスやコントローラーが作成されることがよくあります。そのため、テストが難しくなり、リファクタリングのリスクが高まります。メディエーター アプローチでは、リクエスト タイプとそれを処理するハンドラーを定義します。コントローラーまたはジョブはメディエーターを呼び出すだけです。これにより、通信ロジックが必要な場所に分割され、コンポーネントの交換やモックが容易になります。

MicroMediator と Optimizely CMS

Optimizely CMS プロジェクト、特にサービスとしてのプラットフォーム (PaaS) モデル上に構築された複雑なプロジェクトでは、多くの場合、コア コンテンツ API の外側にカスタム ビジネス ロジックがあります。たとえば、動的コンテンツ領域のロジックのレンダリング、クエリ ハンドラーのフラット化、ヘッドレス ソリューションでのリッチ コンテンツ API の処理などです。このようなパターンは、コントローラーとページ モデルを軽量で保守しやすい状態に保つのに役立ちます。 (アンディ・ブライス – テクニカルドッグスボディ)

Optimizely CMS 自体は .NET 上で実行され、標準の ASP.NET パイプラインを使用してバックエンド サービスを作成できます。メディエーターはそのアーキテクチャにうまく適合します。 MicroMediator を適用すると、CMS データに作用するコマンド、コンテンツや関連ビジネス データをフェッチするクエリ、または CMS と一緒に実行されるカスタム ジョブを処理できます。依存関係注入を使用してハンドラーを登録し、ロジックをまとまった単位で分離しておきます。

このアプローチは、次の場合に役立ちます。

  • 多くの異なる操作を扱うため、明確に分離したいと考えています。
  • 共有ロジックとサイト固有のロジックを使用してマルチサイト ソリューションを構築しています。
  • コンテンツ駆動型アプリケーションには、テスト可能で保守可能なバックエンド コードが必要です。

はじめる

パッケージをインストールします。

dotnet add package TechnicalDogsbody.MicroMediator

操作のリクエストとハンドラーを作成し、それらを IServiceCollection、必要な場所にメディエーターを注入します。シンプルで多くの配線コードが不要になります。

次はどこへ

MicroMediator を使用した実際の Optimizely CMS の使用例を示すフォローアップの投稿を書きたいと思っています。これには、CMS ページ データのハンドラーを構造化する方法、大規模なデータ セットを効率的にストリーミングする方法、コンテンツ クエリにキャッシュ動作を追加する方法が含まれます。

完全なドキュメント、例、ベンチマークは、 GitHub レポ。

#MicroMediator #の紹介 #.NET #用の軽量で高性能なメディエーター #Technical #Dogsbody #テクニカル #アーキテクト #開発者

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。