远程数据库的最佳实践

3
我们正在创建一个使用MS SQL Server的WinForms .NET4应用程序,现在我们需要从以下两个方案中进行选择:
1)WinForms应用程序直接连接MS SQL Server。
2)使用3层架构,在其中插入Web服务。
问题:
1)公开打开SQL连接对于“世界”来说是一种好的做法吗?
2)哪种方案会更好?应用程序以数据为导向,相当简单,不计划任何其他客户端,仅有WinForms客户端。
提前感谢。
詹姆斯
2个回答

1

一定要选择具有 Web 服务层的选项。这样可以让您:

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

1

当你说"相当简单,不打算添加其他客户端"时,我会带着怀疑的态度看待这个说法,因为应用程序总是随着人们意识到他们可以做什么以及可以包含什么而不断发展和变化。你需要重新表达为"它最初将是一个小而简单的应用程序"

在此阶段,WebServices可能过于复杂,但如果你遵循良好的n层架构,稍后添加它们将非常简单,只需进行最少的重构即可。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接