我试图说服某人使用外部DLL来管理sql数据比使用存储过程更好。目前我正在使用的人正在使用vba并调用sql存储过程来从许多不同的源获取所需的复杂数据。我的理解是,采取这种行动的最佳方法是使用dll / some中间层来获取数据并能够根据需要对其进行格式化。
要记住的一些事情:
那么有人能告诉我使用外部DLL然后使用sql存储过程的一些好处吗?
答案 0 :(得分:4)
使用存储过程,并编写数据访问层,通过参数化命令在单独的dll中调用它们。存储过程是一个标准,为您提供了大量的好处,参数化命令为您提供自动字符串安全。
这种类型的设计基本上是如此标准化,并且多年来微软已经包含了一个在.NET 4中为您构建它的框架。
或多或少,你和其他人都是对的,使用sprocs来保证安全,并将你的DAL分开以保证安全性和可重用性以及很多原因
答案 1 :(得分:2)
<强>临强>
<强>缺点:强>
您可以将SQL(包括存储过程)保存在平面文件中。文件扩展名可以是txt,但大多数使用sql - 使得在CVS / etc中存储SQL源与对比.NET或Java源代码无关。
答案 2 :(得分:1)
同意关于控制代码的要点,在DLL中更容易。与源代码管理相同。但是,从纯粹的性能角度来看,存储过程将在一天中获胜,因为它们是经过编译的,而不仅仅是缓存的。我不知道它是否会产生足够的差异,但我想我会把它扔进去。
使用存储过程也可以更加安全,因为您可以锁定对存储过程的访问权限,而您不必(不得不)将表数据公开给任何有连接的人。
我想我并没有真正回答你的问题,只要指出你的论点中的漏洞。对此我很抱歉,但我从他们的角度来看待它。
答案 3 :(得分:0)
我认为这归结为偏好问题。我个人喜欢ORM&amp;在DLL与Stored Procs中保存查询,我发现它们比将S.Procs部署到DB更容易维护和分发。但是S.Proc在原始查询上有一些优点。一些优化,以及一些可以提高某些领域性能的服务器端逻辑。
总而言之,我个人更喜欢使用代码而不是DB mumbo-jumbo,所以这就是我选择DLL方法的原因。
另外,您可以将源代码保存在源代码控制中,使用存储过程更加困难。
只是我的2c。