2009-07-29 98 views
1

我的WinFroms应用程序使用表适配器& datareaders从SQL服务器获取数据。Web服务增加安全性并降低性能?

出于安全原因,我正在考虑用Web服务替换数据采集器。 我猜其中一个缺点是执行速度。

这是真的吗?或者...

回答

3

Web服务在执行速度方面肯定会有更高的开销 - 纯粹是因为在一个典型的SOAP实现中,您带回的数据将被包装在XML中。所以你会拉更多的原始信息,然后让你的应用程序解析它到正确的类型。

我不确定您计划如何使用Web服务来有利于您的安全状况。请记住,您需要某个地方让这些服务生存下来,并且您的客户端应用程序需要能够访问该位置。

+0

他不需要使用SOAP。 WCF通过TCP/IP或命名管道支持二进制。 – 2009-07-29 12:07:53

+0

对于在大环境下投资的保护很好。只有真正的Web服务或JMS提供插补性。不要使用专有的二进制连接。 – 2009-07-29 12:23:37

+0

他的客户是Windows窗体应用程序。互操作性似乎不成问题。如果它成为一个问题,添加一个SOAP端点是微不足道的。 – 2009-07-29 12:35:56

0

使用netTcpBindingnetNamedPipesBinding,性能不会有太大差异。这些绑定分别使用TCP/IP或命名管道的二进制编码。

是的,你会得到更好的安全性,因为你不会直接从每个客户端连接到SQL Server。

您甚至可能有机会提高性能。如果您碰巧正在对数据库进行一些小型调用,那么将它们整合到更大的WCF调用中实际上可以提高性能。

0

当然,您的应用程序的安全性现在取决于您如何连接到MS SQL数据库。您是否在使用应用程序时对您的客户进行身份验证?我已经看到很多实例,其中用户登录实际上是SQL登录,这就提供了安全性,并且可以允许基于这些登录的数据在数据分段中非常普遍地进行分段。

如果您只有一个登录名(我希望不是SA)连接到您的应用程序的所有用户,那么拥有单独的数据访问层听起来是明智的设计选择。您显然正在考虑这一层的Web服务,但您也可以考虑其他选项。也许这些SO问题可能会有帮助;

Best design practices for .NET architecture with LINQ to SQL (DAL necessary? Can we truly use POCOs? Design pattern to adopt?)

Business Object DAL design

1

是的,你会得到更好的安全性 - 添加图层总是有好处的,特别是如果你再采取措施来保护每一个。例如,如果您只允许访问Web服务并允许从Web服务器访问SQL Server,那么您已经减少了黑客可用于访问您的SQL Server的目标区域。

当然,现在你处于他们需要破解你的web服务器以便能够访问sql服务器的位置。如果您通过将Web服务代码放入服务并仅允许访问您的sql服务器来进一步缩小该区域,那么您会做得更好 - Web服务代码仅用作中间层服务的包装;现在他们需要破解只允许他们访问服务的Web服务器,并且这将包含您应该更难破解的专有接口(假设黑客利用已知的安全漏洞攻击您的Web和SQL服务器,例如0天攻击)。

我知道几个地方是安全偏执(财务主要)在这里,网络服务器被认为是一种安全风险,所以很少在那里运行 - 它作为表示层的一部分,仅用于将数据传递到安全的服务,进而管理到数据层的安全连接。

查看Roger Session的article on Software Fortresses的介绍。

至于速度..好吧,现在的服务器速度如此之快,您可以接受一个对象,将其转换为SOAP,通过HTTP进行发布,解析它,将它解开为一个对象,然后调用所需的方法太明显的延迟。当然速度较慢,但​​如果你可以缩放它,那么足够快,,那么现在谁在乎呢?