我在使用 VB6、VB.NET、C# 等进行编程方面拥有丰富的经验,并且使用过 ADO,然后是 SubSonic,现在我正在学习 nHibernate,因为我可以使用 nHibernate 的大部分潜在工作。
问题是,我一直在根据我所学、阅读或理解的最佳实践进行编程。最近,有人通过工作中的 Spanner 让我思考。到目前为止,我一直在从核心应用程序和我编写的附加 DLL 访问数据库。
此人所说的结尾如下,因此我的问题是:
I can tell you that you wouldn't normally want to do this - an external class library shouldn't have access to the database
我试图做的是为 nHibernate session 创建一个共享/静态类,它可以在应用程序的全局范围内和任何 dll 中使用。此类将位于所有 dll 和应用程序引用的“核心”DLL 中。就像我说的,我正在学习 nHibernate,所以可能不是这样。
说我质疑我的数据库访问方法是轻率的。
有人可以直接告诉我吗?
编辑:
我想看看已经发表的评论,这取决于数据库的访问方式。我永远不会以任何方式将用户名/密码凭据等硬编码到任何 DLL 中。
更具体地说,我的查询与 NHibernate 的 session 有关。我有一个静态类,一个帮助程序类,它在应用程序启动时被调用,然后创建新 session 并将其附加到当前上下文(对于 Web 应用程序),然后每当我需要 session 时调用“GetCurrentSession”。这个静态类位于“核心”dll 中,可以使用引用的任何 DLL 等进行访问。此行为是有意的。我唯一的问题是这样可以吗?我应该换一种方式吗?
最佳答案
有几个原因
- 访问数据库,如何隐藏用户名/密码
- 共享 DLL,“不良”应用程序可能会获取您的 DLL 并与其链接以访问您的数据库。
这么说,如果您对文件等有适当的安全性,那么我会认为使用 DLL 可能是一种合理的方式。
关于database - 我不确定访问数据库的固定方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678097/