【问题标题】:Communication between third-User and my Server第三用户和我的服务器之间的通信
【发布时间】:2025-12-10 18:45:01
【问题描述】:

我正在寻找在使用我的应用程序的用户和我自己的服务器之间建立通信的最佳方式。

问题是我正在创建具有许可的应用程序,并且我必须在第三方用户连接时接收信息以及他连接的 IP 地址。

但是,我不知道我是否应该再使用一个连接字符串并将这些信息发送到我的 MS SQL Server 我在我公司的工作场所,或者我应该上传.txt 文件到我的网络服务器?使这种交流成为可能的最佳方式是什么?

【问题讨论】:

  • 嗯.. 我不确定我是否应该将这个问题作为 to broadopinion-basedunclear 进行 VTC。
  • 为什么不使用您定期通过Timer“ping”的网络服务?我假设您不需要持续连接,而只是定期检查状态。
  • @JasonFaulkner 基本上是因为每次启动只发生一次。
  • @Bjørn-RogerKringsjå 为什么你会说这太宽泛了?我的意思是我只是问哪种方式更好/更快和更安全,对吧?

标签: vb.net sql-server-2012


【解决方案1】:

虽然要求有点模糊,但根据似乎需要的内容,我会使用 Web 服务来解决这个问题。此 WS 将提供与您的 SQL 服务器进行通信的方法,而无需将 SQL 本身暴露在 Internet 上。

例如,您的网络服务可能有一个接受以下信息的调用:

  • 请求的产品
  • 需要来自本地客户端的信息(机器名称等)
  • 以前签发的现有身份验证票证(如果需要)

然后,您的方法可以获取此信息,在 SQL 中对其进行处理,然后返回许可证是否可用以及身份验证票证(如果需要)。

在客户端,如果您的应用程序只需要访问该服务一次,那么您可以在连接/加载时调用它。否则,如果您需要定期访问许可 WS,您可以使用 Timer

Dim licenseCheck As New Timer
licenseCheck.Interval = 60000 ' Check every minute.
AddHandler licenseCheck.Tick AddressOf CheckLicense

Private Sub CheckLicense(sender As Object, e As EventArgs)
    ' Call license web service and act accordingly.
End Sub

【讨论】:

  • 是的,我正准备忽略使用 Web 服务,因为我根本不熟悉创建/使用它们。
  • @Hoh - 对于这样的事情,值得学习。在大多数情况下,您的将是非常基本的(只是一个进行一些数据库通信的函数)。您绝对不想将您的 SQL 数据库暴露在互联网上。
  • 因为我不知道网络服务能做什么,你能告诉我,我会让我的网络服务连接到我的 MS SQL Server,对吗?如果这是真的,那意味着我将只使用网络服务来连接它(拉信息),而不是使用另一个连接字符串来连接到同一个地方
  • @Hoh - 本质上,您制作了一个 WS 来处理所有许可验证。在您的 WS 的配置文件中,您可以将连接字符串设置为您的数据库,并且客户端与您的数据库进行的所有通信(即许可证检查)都将通过 WS 完成。您用于执行数据库操作的实际代码与您对客户端执行的操作相同。 msdn.microsoft.com/en-us/library/87h5xz7x(v=vs.90).aspx
  • 非常感谢,这将非常有用。