2017-11-20 16 views
0

私はnTierアーキテクチャを六角形のアーキテクチャに移行しています。 私のドメインは今ではよく定義されており、すべてのインフラストラクチャ依存性のためのインターフェイスを持っています。 データベースリポジトリを見ると、いくつかのデータベースがあり、Infra側の各レポを実装するクラスが1つあります。 私はDBの依存関係について正しい解決方法を教えてください:六角形のアーキテクチャにおけるデータベースリポジトリの依存性

1-ドメイン側に1つのインターフェイスを用意してデータアクセスを処理し、インフラストラクチャの実装に頼って、すべてのデータベースすべてのリポジトリ実装が呼び出されるファサードのようなリポジトリ。このアプローチはすでにnTierアプリケーションで使用しているものと同じですが、ファサードとリポジトリは現在のデータベースレイヤーです。

2ドメイン側で必要な各データベースのインターフェイスがあります。各インタフェースはInfra側で実装され、対応するDBにアクセスします。レイヤーを薄くしますが、これにより、データ管理ロジックがドメインに追加されます。ドメインはデータがどこにあるかを気にするべきではなく、インフラはこれに対処する必要があります。一部のデータを別のデータベースに移動されている場合は、対応するインタフェースは、ドメイン側で変更する必要がある(例えば、別のインターフェイスにこのデータを公開する方法を移動する)

私に知らせて、良い質問です

答えて

0

こと。 1つのアプリケーションで同じジレンマがありました。最初に公開するオプションを選択しました。

アクセスデータ用の1つのポートで、ドメインはデータの起点保存されています。そしてアダプタでは、正しいデータベースにリクエストを転送するファサードがあります。実際、私の場合、結果のデータは2つのデータベースのミックスである可能性があります。

しかし、私たちのアプリケーションが話していなければならない外部システムであると考えると、他のオプションも有効だと思います。私たちのアプリはどちらの二次アクターが通信しなければならないかを知っていなければならず、その場合、それぞれがドメインにポートを持ちます。

とにかく、六角形のアーキテクチャのポートはこのケースでは "データの取得"という言い回しであるため、より正しい "正しい"と思います。この話でAlistair Cockburnはそれを説明します。彼は、港は彼らの意図によって命名されなければならないと述べている。ポートは何かのためのものです。

の話 "ヘキサゴンでアリスター":

https://www.youtube.com/watch?v=th4AgBcrEHA

https://www.youtube.com/watch?v=iALcE8BPs94

https://www.youtube.com/watch?v=DAe0Bmcyt-4

関連する問題