Web 客户端需要与私有服务器数据库进行交互

Web clients needs to interact with a private server database

我们有一个 SQL 服务器 2005 安装在业务大楼内网络中的服务器上。目前无法通过网络访问服务器,我们希望保持这种状态。

现在我们有一个网站,客户可以在其中填写预订并进行付款。为此,我们需要连接数据库并从中获取数据。我们正在考虑使用 Web 服务 (WCF),但是我们不会在本地服务器上托管该服务,而是将其托管在第 3 方托管提供商上。

这是我们遇到问题的地方。与 wcf 和网站的集成不是问题,因为它只是一个标准服务,但是有没有办法在这种情况下创建服务?

Web 客户端------连接到------>WCF 服务

WCF 服务------发送请求到------>本地服务器

本地服务器------发送数据到------>WCF服务

WCF------> 将数据发送到------> Web 客户端

通过我们的研究,我们发现了双工通信和回调合同,但我们不确定它是否适用于我们。据我们所知,我们需要让本地服务器侦听 WCF 并在收到请求时采取相应行动。

请帮助我们弄清楚我们是否走错了方向,或者我们是否应该走这条路。是否还有更好的标准化方式来执行此类操作?

我将允许您的本地数据库接受来自将承载您的 WCF 服务的服务器的连接。您可以对其进行设置,以便只有该服务器可以连接到您的数据库,因此尽管它可以通过 Web 访问,但它只接受您的 WCF 主机。

但是,如果您只有存储过程和基本的 API,可能会更容易。不确定您的网站是由什么组成的,无论是 ASP.net 还是 PHP 还是其他,但我目前正在开发一个系统,该系统与您一样在客户自己的专用网络上有一个 MSSQL 数据库。我们是这样做的:

PHP 应用程序具有从 MSSQL 服务器获取数据的接口(它直接从表中获取数据以保持完整性)。然后我们有一个目的是将数据发送到他们的数据库,但是数据需要在客户端触发其他事情,所以我们在 MSSQL 服务器上创建了一个存储过程来处理数据到达时的操作。数据由 GUID 标识。

在 Web 应用程序 (PHP) 上,我们有接口可以在将来可能需要时更改此实现。我也在使用队列服务,这样如果连接丢失,数据会被排队等待稍后使用,但我也有几项检查以确保没有重复和覆盖等。

此外,我正在缓存 MSSQL 数据库中的记录,以便数据在队列中刷新,因此不会影响用户的性能。

如果您需要进一步说明,请告诉我 - 我们的名字完全相同 :)