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