我正在开发一个按以下方式拆分的应用程序(简化了一点)
App
|
Framework
|
Data (Persistance)
|
Data.Couchbase
在 App 内部,我们正在设置 DI 容器并注册在需要特定接口时将使用哪些具体实现。
即 Data 命名空间中的 IUserRepository 将由 Data.Couchbase 命名空间中的 CouchbaseUserRepository 完成。将来,如果我们用另一种技术(比如 Mongo)替换持久层,我们可以更新 DI 注册,它会通过 MongoUserRepository 来实现
一切都很好……
问题 1
提供跨系统边界但在Data.Couchbase 命名空间本身内的接口有一个明显的好处。如果 ICouchbaseUserRepository 接口本身不提供任何额外的功能,那么它有什么意义吗?好像我们注册 IUserRepository -> CouchbaseUserRepository 就足够了?在具体实现中相似的是,将这些组件进一步拆分为可能不会被换出的接口是否有任何意义
问题2
同样,是否值得在框架中拥有一堆接口,其唯一目的是代理数据中的接口,因此应用程序可以仅依赖于框架,而不必依赖于数据。我可以看到优势......实际上也许我不能......看起来我们将在框架中拥有数百个接口,因此我们可以依赖“数据”,特别是如果这些程序集将生活在同一个罐头上
干杯