我有一组业务对象可能以不同的方式持久化,但对于应用程序的任何给定配置,只有一个持久性机制将处于活动状态。持久性通过接口处理。
在我看来,显而易见的架构是将一个配置的所有持久性对象放入一个包中,将另一个配置中的所有对象放在另一个包中。但似乎这个计划可能最终会有很多不同的软件包和一个软件包管理问题。这个问题还有其他好的解决方案吗?
答案 0 :(得分:2)
我通过创建可重用的存储库来在我的公司实现这一点。
基本上,我使用接口创建了一个存储库抽象,它对传入的对象或一组对象执行基本的CRUD操作。然后我使用各种持久性机制实现了它。该库可以将任何对象持久保存到XML,JSON,Binary或SQL。所有这些存储库都使用相同的接口,因此需要与存储库交互的所有代码都使用接口,而不是具体的实现。每个实现都存在于它自己的库中,抽象也是如此,因此您只需要分发抽象库以及程序所需的任何实现。
在对象模型中没有任何东西可以实现,因为它使用Reflection处理通用对象(该库是用C#编写的.Net)。
我还将存储库打开到扩展,在某些应用程序中,默认的基于反射的东西被强效类型的存储库取代,这些存储库效率更高,但仍然基于通用实现。
希望有所帮助。