支持多个版本的数据模式

时间:2013-01-29 13:11:55

标签: design-patterns schema csla

我们的应用程序为另一个系统提供了一个用户界面,其数据模式不在我们的控制之内。我们的应用程序使用CSLA创建业务对象,以允许编辑第三方系统中的数据。但是,随着第三方数据模式的发展,我们必须随之发展。但是,在任何给定时间,我们的客户都可以拥有具有不同数据模式的任何版本的第三方系统。因此,我们的应用程序需要能够适应客户碰巧拥有的架构支持的任何版本。

我们已经看过可能使用策略模式来解决这个问题。基本上具有支持最低版本的数据模式的基类,然后具有派生类以支持每个后续版本。反过来,我们将有一个工厂返回对应于当前版本的数据模式的类。但是,我们担心这可能导致长期和混乱的继承链的可能性。有没有更好的方法来解决这个问题?可能是作文而不是继承?

我发现这篇文章概述了处理这个问题的可行方法 http://securesoftwaredev.com/2009/05/31/supporting-multiple-versions-of-a-data-model/

我不确定这种方法对我们是否有用,但在实施任何内容之前想要获得其他一些想法。

2 个答案:

答案 0 :(得分:2)

CSLA .NET可以轻松地将数据访问逻辑(DAL)与应用程序的其余部分分开。

因为您应该使用CSLA创建映射到问题域而不是数据库形状的业务对象,所以DAL应该关注访问数据库并根据需要将数据映射到业务对象。

如果您有两个不同的数据库模式,那么您可能会有两个DAL实现,这两个实现都访问数据库并将数据映射到完全相同的业务类型。

Using CSLA 4: Data Access电子书非常广泛地涵盖了这一点,ProjectTracker示例(版本4.0及更高版本)使用了一个抽象的DAL来演示这个概念。

答案 1 :(得分:0)

我将看一下使用具有可插拔DAL层的Factory Implementation。通常,您可以利用此功能来支持不同的数据库服务器或模拟数据以进行单元测试,但支持不同的数据模型也可以正常工作。