架构问题 - 直接调用远程SQL Server还是通过服务调用?

时间:2009-11-18 15:28:49

标签: sql-server wpf wcf web-services

在我的新WPF / silverlight应用程序中,最好是直接连接到我的远程SQL Server(我使用linq to sql),还是更好地调用WCF服务并让服务连接到数据库?

SQL Server和Win2k8 Web服务器都是租用的,位于同一位置。如果创建WCF服务,我会在Web服务器上运行它并连接到隔壁的数据库。我不关心重用这项服务的能力,但我关心的是性能。最好是直接从我的客户端进行SQL调用,还是调用服务并让服务进行调用。

4 个答案:

答案 0 :(得分:6)

主要出于抽象和安全目的,如果此应用程序在客户端的计算机上运行(我必须假设它),您应该公开WCF服务。这样您就可以处理安全性,并且永远不会让客户端看到任何与连接到SQL服务器有关的事情。这样,如果SQL服务器上发生了某些变化,您也不必更新应用程序。

至于性能,我会说它会慢到一定程度,但它应该是非常不明显的,在几毫秒的时间内。

答案 1 :(得分:5)

如果您要使用Silverlight(并希望共享代码库),那么使用WCF服务访问数据会好得多。

答案 2 :(得分:3)

您通常需要Web服务,因为SQL Server端口(tcp 1433)在大多数防火墙中都已关闭。即使您可以贿赂自己的防火墙管理员来打开它,它仍然会在客户端站点被阻止。

答案 3 :(得分:1)

我总是喜欢实现接口,因为那样你就从数据存储的实现中抽象出来了。现在我自己的应用程序正在与许多数据库进行通信,并且正在将功能转移到新系统,通过编码到接口,新系统可以编写自己的数据访问层而不会影响我的系统。