2011-05-09 134 views
4

我们正在创建与MS SQL Server的一个WinForms .NET4应用程序,我们两个方案之间作出决定:远程数据库的良好做法

1)WinForms应用程序直接连接到MS SQL服务器。

2)使用3层体系结构并在两者之间插入WebServices。

问题:

1)它是一个很好的做法,是对外打开SQL连接到“世界”?

2)你会推荐哪种情况。应用程序是面向数据的,非常简单,没有规划任何其他客户端,只有WinForms。

在此先感谢。

James

回答

1

肯定会选择具有Web服务层的选项。这允许您:

  • 继续使用您的域模型(POCO和序列化)。
  • 避免打开您的SQL Server到互联网。
  • 在您的Web服务中应用高级业务逻辑。
  • 从您的客户端应用程序中删除SQL逻辑;所有数据访问都属于应用层。
  • 根据需要应用安全规则/约束。出于各种原因阻止客户/用户或IP地址。
1

当你说“很简单,没有规划任何其他客户端”,我会采取与一粒盐,应用不断生长,变身为人们意识到他们可以做什么和别的什么,他们可以包括。您需要将其改为“它最初将成为一个简单的小应用程序”

在这个时候,WebServices对您来说可能会有些过火,但是如果您遵循一个很好的n层体系结构,他们将很容易在稍后的日期添加,而重构最少。

至于向世界展示SQL - 这不是一个好的做法。您可以很好地保护它,并确保应用程序使用的登录(或者如果用户拥有自己的登录名)具有最小权限 - 只需运行存储过程或在他们需要访问的表上执行CRUD语句。但是,如果在暴露于世界的时候搞砸了安全性,那么亲你的SQL Server及其数据再见。这本身就是一个复杂的主题,所以你最好在有问题时发布个别问题。