我有一个连接到oracle数据库的Web服务(ASMX),我认为我的架构不是正确的。
要访问数据库,我使用的DLL具有所有数据库逻辑并返回已完成的对象。 oracle连接是在DLL中创建的,因此数据库服务器,用户和pass在代码中是硬编码的,我知道这可能不行。我的问题是关于在何处创建与数据库的连接,以及如何在外部配置文件中配置server / user / pass参数,但是每次必须连接到数据库时都不要读取它。
现在我有:
ASMX:
DLL:
AMSX:
我应该在Web方法中创建连接并将这些参数存储在应用程序或会话变量中,而不是在dll方法中创建它们吗?
感谢您的帮助
答案 0 :(得分:0)
正如Davide的评论中所建议的那样,如果您没有使用像NHibernate或MS Entity Framework这样的内容,那么最好将Business Logic Layer与Data Access Layer分开。这些好处都有详细记录,包括关注点的分离,测试以及允许DAL与跨平台/系统无关。
1.创建数据库连接(数据库服务器/用户/密码的硬编码常量)
这是一种非常糟糕的做法,可能会导致各种各样的安全和部署问题。
我的问题是关于在何处创建与数据库的连接,以及如何在外部配置文件中配置server / user / pass参数,但是每次必须连接到数据库时都不要读取它。
将数据库连接字符串存储在App.config或Web.Config文件的ConnectionString section中的最佳和最方便的位置,如果您创建静态属性以从配置文件中公开连接字符串,那么您不需要每次都读取配置设置。
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
我应该在Web方法中创建连接并将这些参数存储在应用程序或会话变量中,而不是在dll方法中创建它们吗?
简短的回答是否定的,您为Web服务公开的API应该只执行它的设计,从数据访问层公开底层业务对象。