调用者决定数据连接的策略

时间:2011-01-22 17:27:10

标签: .net business-logic-layer

考虑一个现有的数据访问和业务逻辑层,它由多个不同的应用程序使用,到目前为止,只需要在任何给定应用程序的生命周期内使用单个数据连接 - 因此可以简单地拉取连接信息来自应用程序配置文件的数据层。然而,向前发展,数据和逻辑类需要为应用程序提供灵活性,以便在每次调用的基础上确定数据连接。更重要的是,这些课程现在由多个应用程序通过服务同时调用。

调用者不希望专门管理连接字符串,而是以枚举形式的连接名称,可以解析为数据层中的连接字符串。

目前,所有数据和逻辑类都是静态的,数据的范围是内部的,逻辑的范围是公共的。

考虑到API可用性,性能,线程安全性/调用者隔离等等,从调用者一直到数据类中的方法获取密钥有什么好的策略。

两个明显的选择是:

  1. 将连接键作为参数添加到所有方法。哎呀 - 不会发生,但包括完整性。

  2. 将逻辑和数据类更改为实例类,并在构造函数中传递键以供任何成员方法使用。不会有方法签名更改,但会对API的调用方式进行重大改变。

  3. 还有哪些其他选择?

1 个答案:

答案 0 :(得分:0)

不幸的是,你找到了如何处理这类问题的两个最佳选择。通过涉及服务使#2变得有点复杂,因为不同的服务请求要么需要一种方法来记住哪个客户端(如会话)或者必须在每次调用时通过服务传递连接信息。

我认为如果您创建一个客户端包装器类来访问该服务,您可以限制您将需要的客户端更改数量。对于服务本身,我认为你真的会被卡在每次传递连接作为一个参数,因为那里的替代品非常复杂。