远程数据库良好做法
本文关键字:数据库 | 更新日期: 2023-09-27 17:55:57
我们正在创建一个WinForms。NET4应用程序与MS SQL Server,我们正在两种方案之间做出决定:
1) WinForms 应用程序直接连接到 MS SQL Server。
2) 使用 3 层架构并在两者之间插入 Web 服务。
问题:
1)公开向"世界"开放SQL连接是一种好的做法吗?
2)你会推荐哪种方案。应用程序是面向数据的,非常简单,不规划任何其他客户端,只有WinForms。
提前谢谢。
詹姆斯
一定要选择具有Web服务层的选项。这允许您:
- 以继续使用域模型(POCO 和序列化)。
- 以避免将 SQL Server 打开到互联网。
- 在 Web 服务中应用高级业务逻辑。
- 从客户端应用程序中删除 SQL 逻辑;所有数据访问都属于应用层。
- 根据需要应用安全规则/约束。出于各种原因阻止客户/用户或 IP 地址。
当你说"非常简单,不计划任何其他客户"时,我会持保留态度,随着人们意识到他们可以做什么以及他们可以包含什么,应用程序总是会成长和变形。您需要将其改写为"它最初将是一个小型的简单应用程序"。
此时,WebServices 对您来说可能有些矫枉过正,但如果您遵循一个不错的 n 层架构,它们将在以后添加起来非常简单,只需最少的重构。
至于向世界公开 SQL - 不,这不是一个好的做法。您可以很好地保护它,并确保应用(或用户,如果他们有自己的登录名)使用的登录名具有最低权限 - 刚好足以运行存储过程或在他们需要访问的表上执行 CRUD 语句。但是,如果您在它暴露给世界时搞砸了安全性,那么请吻别您的SQL Server及其数据。这本身就是一个复杂的主题,因此您最好在有问题时发布单个问题。