远程数据库良好实践

时间:2011-05-09 22:42:56

标签: c# sql-server database web-services

我们正在使用MS SQL Server创建一个WinForms .NET4应用程序,我们正在两种情况之间做出决定:

1)WinForms应用程序直接连接到MS SQL Server。

2)使用3层架构并在其间插入Web服务。

问题:

1)将SQL连接公开打开到“世界”是一个好习惯吗?

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

提前致谢。

詹姆斯

2 个答案:

答案 0 :(得分:1)

绝对选择具有Web服务层的选项。这允许你:

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

答案 1 :(得分:1)

当你说“非常简单并且没有计划任何其他客户”时,我会毫不犹豫地使用它,随着人们意识到他们可以做什么以及他们还有什么其他可以包括。您需要将其改为“它最初将成为一个简单的小应用程序”

此时Web服务对您来说可能过度,但如果您遵循一个不错的n层架构,那么以后添加它们非常简单,只需要很少的重构。

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