次のように分割されたアプリケーションに取り組んでいます(少し簡略化されています)
App
|
Framework
|
Data (Persistance)
|
Data.Couchbase
アプリ内で、DI コンテナーをセットアップし、特定のインターフェイスが必要な場合に使用される具体的な実装を登録します。
つまり、Data 名前空間の IUserRepository は、Data.Couchbase 名前空間の CouchbaseUserRepository によって満たされます。将来、永続レイヤーを別のテクノロジー (Mongo など) に交換すると、DI 登録を更新でき、MongoUserRepository によって実行されます。
万事順調……。
質問1
システムの境界をまたがるインターフェースを提供することには明らかな利点がありますが、 Data.Couchbase 名前空間自体についてはどうでしょう。それ自体が追加の機能を提供しない場合、ICouchbaseUserRepository インターフェイスを持つことに意味はありますか? IUserRepository -> CouchbaseUserRepository を登録すれば十分なはずです。同様に、具体的な実装内では、これらのコンポーネントを、おそらく交換されないインターフェースにさらに分割することに意味があります
質問2
同様に、データ内のインターフェイスにプロキシすることのみを目的とするフレームワークに一連のインターフェイスを用意する価値があるため、アプリはフレームワークのみに依存でき、データにも依存する必要はありません。利点がわかります....実際にはできないかもしれません....フレームワークに何百ものインターフェイスがあり、特にこれらのアセンブリが「データ」に依存する可能性があるようです同じブリキの上で生きていく
乾杯