通过 GPRS 连接到 SQL 没有 public IP 的实例
Connect via GPRS to SQL Instance without public IP
我们有以下设置:
- Windows 具有 GPRS 连接的移动设备
- Windows 服务器 PC SQL Server 2012
- 两个设备都包含的 VPN 网络(移动运营商在 VPN 内路由某些 IP)
状态:
通过以上设置,我可以通过 GPRS 从移动设备直接 ping Windows 服务器内部 IP。
问题:
- 我可以使用服务器的内部 IP 从我的移动设备创建到 SQL 服务器的连接吗?
我的反串是:
"Data Source =xxxxxxxx,1433;Initial Catalog=xxxxx;Integrated Security=SSPI;User id=xxxxx;Password=xxxxx;Connect Timeout=15"
编辑:
更多问题:
- 如果是我该如何实现
- 根据 David 的评论,优缺点是什么
如果您有 VPN 并且可以 ping 通内部服务器,那么您可以可以直接连接到 SQL 服务器,使用 .Net Framework 中可用的普通数据访问库.话虽如此,我强烈建议不要这样做。最好有一个在移动设备和数据库之间连接的中间层服务。这里有一些原因(不在我的脑海中)为什么这样更好:
- 移动连接本质上不稳定,SQL 连接处理能力不佳。
- 拥有一项服务意味着您甚至不需要 VPN,因为它可以 public 面对(当然具有相关的安全性)。
- 如果您将来决定从 SQL 服务器移动到 DocumentDB/Azure/carrier 鸽子,那么您需要更新每个移动设备以应对变化。如果你有一个中间服务器,你可以更新它。
- 如果数据库架构发生变化,您可能会一次性破坏所有客户端应用程序。
- 您的中间层可以做其他有用的事情,例如缓存、日志记录等。
我们有以下设置:
- Windows 具有 GPRS 连接的移动设备
- Windows 服务器 PC SQL Server 2012
- 两个设备都包含的 VPN 网络(移动运营商在 VPN 内路由某些 IP)
状态:
通过以上设置,我可以通过 GPRS 从移动设备直接 ping Windows 服务器内部 IP。
问题:
- 我可以使用服务器的内部 IP 从我的移动设备创建到 SQL 服务器的连接吗?
我的反串是:
"Data Source =xxxxxxxx,1433;Initial Catalog=xxxxx;Integrated Security=SSPI;User id=xxxxx;Password=xxxxx;Connect Timeout=15"
编辑:
更多问题:
- 如果是我该如何实现
- 根据 David 的评论,优缺点是什么
如果您有 VPN 并且可以 ping 通内部服务器,那么您可以可以直接连接到 SQL 服务器,使用 .Net Framework 中可用的普通数据访问库.话虽如此,我强烈建议不要这样做。最好有一个在移动设备和数据库之间连接的中间层服务。这里有一些原因(不在我的脑海中)为什么这样更好:
- 移动连接本质上不稳定,SQL 连接处理能力不佳。
- 拥有一项服务意味着您甚至不需要 VPN,因为它可以 public 面对(当然具有相关的安全性)。
- 如果您将来决定从 SQL 服务器移动到 DocumentDB/Azure/carrier 鸽子,那么您需要更新每个移动设备以应对变化。如果你有一个中间服务器,你可以更新它。
- 如果数据库架构发生变化,您可能会一次性破坏所有客户端应用程序。
- 您的中间层可以做其他有用的事情,例如缓存、日志记录等。