将业务逻辑与数据源分离

时间:2012-12-14 05:25:51

标签: design-patterns architecture decoupling

我的应用程序依赖于用于以xml格式存储数据的dll(名为datalib)。

我的应用与该dll之间存在紧张的关系。

我的应用程序遍布整个代码,以这种方式使用该dll检索数据:

var data = datalib.Parameters.HostAddress;

我希望我的应用能够替换数据源(例如SQL Server数据库)。

不幸的是,我的应用程序在其业务逻辑中将强类型对象从datalib传递到依赖于datalib的其他模块。

在我的情况下,有哪些方法可以实现更换数据源的能力?我是否需要创建自己的域层,并能够将其实体映射到datalib的实体?

2 个答案:

答案 0 :(得分:2)

建议从以下链接和其他地方阅读这些概念:

  1. Repository Pattern
  2. Data Mapper
  3. 基本上,您希望在外部数据访问库(datalib.dll)周围实现松散耦合。这可以通过多种方式实现 - 从简单的DataAccess类到更具可扩展性的Repository类型工厂类。

    您必须根据每种方法的成本与收益进行选择。 希望这会有所帮助。

答案 1 :(得分:0)

根据我的理解 数据源需要配置dyanamincally,它应该由datalib

使用
  1. 编写一个独立程序,读取配置文件以获取数据源。

  2. 测试该程序以查看它可以访问不同的数据源。 该方法可以返回一个DataSource(用Java。对语言不太了解)

  3. 修改datalib以更改代码以访问您在步骤2中编写的程序。

  4. 通过这种方式,我们不会破坏你的应用程序中的任何合同datalib和invokation点,你可以实现一些解耦。