【发布时间】:2012-01-23 11:39:43
【问题描述】:
我有一个连接到 Oracle 数据库的 Web 服务 (ASMX),但我认为我的架构不合适。
为了访问数据库,我使用了一个包含所有数据库逻辑并返回完整对象的 DLL。 oracle 连接是在 DLL 中创建的,因此数据库服务器、用户和密码是硬编码在代码中的,我知道这是不可能的。我的问题是关于在哪里创建与数据库的连接,以及如何在外部配置文件中配置服务器/用户/传递参数,但每次我必须连接到数据库时都不要读取它。
现在我有:
ASMX:
- 包含网络方法
- 验证请求参数
- 调用 DLL 方法
DLL:
- 创建数据库连接(数据库服务器/用户/密码的硬编码常量)
- 从数据库中选择数据
- 使用该数据创建一些对象
- 关闭连接。
- 返回那些对象
AMSX:
- 处理从 DLL 返回的对象并返回它们。
我应该在 Web 方法中创建连接并将这些参数存储在应用程序或会话变量中,而不是在 dll 方法中创建它们吗?
感谢您的帮助
【问题讨论】:
-
将所有内容与连接和 DataAccessLayer 隔离开来,请在此处查看我的答案:stackoverflow.com/a/7474357/559144 您应该在 ClassLibrary (DAL) 中有一些类,它们创建连接并使用 EF 或 ADO.NET 或其他数据访问技术,不要共享它或将其暴露给其他层。从 Web 服务 ASMX 或 WCF 中,您将创建业务逻辑类的实例,该实例将创建 DAL 类的实例并使用它们的方法,而无需显式打开连接。