我的WinFroms应用程序使用tableadapters&用于从SQL服务器获取数据的数据引导器。
出于安全原因,我正在考虑用Web服务替换datareader。 我猜其中一个缺点是执行速度。
这是真的吗?还是......
答案 0 :(得分:3)
Web服务在执行速度方面肯定会有更高的开销 - 纯粹因为在典型的SOAP实现中,您带回的数据将包装在XML中。因此,您将提取更多原始信息,然后让您的应用将其解析为正确的类型。
我不确定您打算如何使用网络服务来保护您的安全状况。请记住,您需要某处才能使这些服务生效,并且您的客户端应用程序需要能够访问该位置。
答案 1 :(得分:1)
是的,您将获得更好的安全性 - 添加图层总是有帮助的,特别是如果您然后采取措施保护每个图层。例如,如果您只允许访问Web服务并允许仅从Web服务器访问sql server,那么您已经减少了黑客用于访问您的SQL Server的目标区域。
当然,现在你处于他们需要破解你的web服务器以便能够进入sql server的位置。如果您通过将Web服务代码放入服务并且只允许访问您的SQL服务器来进一步减少区域,那么您做得更好 - Web服务代码仅作为中间层服务的包装器;现在他们需要破解Web服务器,只允许他们访问服务,并且这将包含你应该更难以破解的专有接口(假设黑客使用已知的安全漏洞攻击你的web和sql服务器,例如0天攻击。)
我知道有几个地方在安全方面很偏执(主要是财务)这里Web服务器被认为是一种安全风险,所以很少在那里运行 - 它只是表示层的一部分,只是为了将数据传递给安全服务,反过来管理与数据层的安全连接。
有关介绍,请参阅Roger Session的article on Software Fortresses。
至于速度......好吧,现在服务器速度如此之快,您可以获取一个对象,将其转换为SOAP,通过HTTP发布,解析它,将其解压缩回一个对象并调用您想要的方法明显的延迟。当然它速度较慢,但是如果你可以扩展它以便足够快,那么谁现在关心呢?
答案 2 :(得分:0)
使用netTcpBinding
或netNamedPipesBinding
,性能差别不大。这些绑定分别使用TCP / IP或命名管道上的二进制编码。
是的,您将获得更好的安全性,因为您不会直接从每个客户端连接到SQL Server。
您甚至可能有机会提高绩效。如果您正在对数据库进行大量小调用,那么在更大的WCF调用中合并它们实际上可以提高性能。
答案 3 :(得分:0)
当然,应用程序的安全性现在取决于您连接MS SQL DB的方式。您是否在使用该应用程序时对您的客户进行身份验证?我已经看到很多用户登录实际上是SQL登录的实例,这就是提供安全性的原因,可以基于这些登录在数据库中进行数据分段。
如果你只有一个登录,我希望不是SA,连接你的应用程序的所有用户,然后拥有一个单独的数据访问层听起来是一个明智的设计选择。您显然正在考虑此图层的Web服务,但您也可以考虑其他选项。也许这些SO问题可能有所帮助;