Alistair Cockburn の元の記事を含む、Ports & Adapters アーキテクチャに関するさまざまな情報源を読んだ後でも、「ポート」と「アダプタ」という用語の明確な意味についてまだ確信が持てません。特に、これらの概念を実装アーティファクトにマッピングする場合はなおさらです。
いくつかの情報源 (この投稿など) は、このアーキテクチャ パターンのポートが非常に外側のアーティファクトであり、その後にポートと心臓部にあるアプリケーションの間で変換する中間層のアダプターが続くことを示唆しています。
ただし、Cockburn の元の記事では、通信の方向に応じて、ポートがアダプター層の外側と内側に表示されます。
- インバウンド通信: 「イベントが外部からポートに到着すると、テクノロジ固有のアダプタがそれを使用可能なプロシージャ コールまたはメッセージに変換し、アプリケーションに渡します。」
- アウトバウンド通信: 「アプリケーションが送信するものを持っている場合、ポートを介してアダプターに送信し、受信テクノロジー (人間または自動) が必要とする適切な信号を作成します。」
実際、私にとっては、「すべて外側」のアプローチも「内側と外側」のアプローチも意味がありません。ポートは、通信の方向に関係なく、常にアプリケーションの隣に配置されるアーティファクトと見なされます。これは、ポートとアダプターの比喩とも一致します。シリアルポートを備えたデバイスを使用して、シリアルポートを備えていない別のデバイスをこれに接続するには、デバイスの観点からインバウンドおよびアウトバウンド通信を適応させるアダプターが必要です。
このアーキテクチャの実装に関して言えば、ポートの定義はアプリケーションの一部としてではなく、さまざまなアダプタがアプリケーションの「外部」にあると考えます。例)単一ポートの実装は、facade
(インバウンド通信用のアダプターによって呼び出される) とinterface
(アウトバウンド通信用のアダプターによって実装される) で構成されます。
ポートとアダプターという用語の正しい意味は何ですか? また、これらの概念を実装成果物にどのようにマッピングできますか?
アップデート:
私の理解に似たこの記事を見つけました。問題は、何らかの共通の合意があるかどうかです。