我们在业务大楼内的网络中的服务器上安装了SQL Server 2005。目前无法通过网络访问服务器,我们希望保持这样。
现在我们有一个网站,客户可以在这里填写预订和付款。为此,我们需要连接并从数据库中获取数据。我们正在考虑使用Web服务(WCF),但我们不会在本地服务器上托管服务,而是将托管在第三方托管服务提供商上。
这是我们遇到问题的地方。与wcf和网站的集成不是问题,因为它只是一个标准服务,但有没有办法在这种情况下创建服务?
Web客户端------连接到------> WCF服务
WCF服务------向------>本地服务器发送请求
本地服务器------将数据发送到------> WCF服务
WCF ------>将数据发送到------> Web客户端
通过我们的研究,我们发现了双工通信和回调合同,但我们不确定它是否适用于我们。根据我们的结果,我们需要让本地服务器监听WCF并在请求进入时相应地采取行动。
请帮助我们弄清楚我们是否会走向完全错误的方向,或者我们是否应该走这条路。还有更好的标准化方式来执行那种操作吗?
答案 0 :(得分:0)
我允许您的本地数据库接受来自将托管您的WCF服务的服务器的连接。您可以对其进行设置,以便只有该服务器可以连接到您的数据库,因此尽管它可以通过Web访问,但它只接受您的WCF主机。
但是,如果您只拥有存储过程和基本API,则可能会更容易。不确定您的网站是由什么构成的,无论是ASP.net还是PHP或其他东西,但我目前正在开发一个类似于您自己在客户端自己的专用网络上拥有MSSQL DB的系统。我们这样做了:
PHP应用程序具有从MSSQL服务器获取数据的接口(它直接从表中获取数据以保持完整性)。然后我们有一个目的是将数据发送到他们的数据库,但是数据需要在客户端结束时触发其他内容,所以我们在MSSQL服务器上创建了一个存储过程来处理数据操作到达时。数据由GUID标识。
在Web应用程序(PHP)上,我们有接口可以在将来更改此实现,因为它可能是必需的。我也使用队列服务,这样如果连接丢失,那么数据会排队等待,但我也有几个检查,以确保没有重复和覆盖等。
另外,我正在缓存来自MSSQL数据库的记录,以便数据在队列中刷新,因此它不会影响用户。性能
如果您需要进一步澄清,请告诉我们 - 我们的名字完全相同:)