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 #テクニカル #アーキテクト #開発者