与本地数据库同步在线订单门户

时间:2009-01-18 23:19:14

标签: .net database external sync

因此,我们正在构建一个本地(在客户站点)托管,自定义销售点系统,没有太多与众不同的东西。它的所有.NET,C#和SQL Server。

其中一个要求是系统允许通过互联网接收订单。 由于各种原因(连接可靠性/速度,备份,稳定性,维护等),Web门户将在非现场托管,与一些标准的Web托管公司。

产品详细信息位于本地数据库中,因此我们需要以某种方式将外部网站数据库与此数据同步。它显然必须是安全的,而不是太多的带宽。

我们提出了一种解决方案,可以最大限度地减少本地数据库暴露于外部世界:

  • 网络应用无法从本地应用访问任何内容。
  • 数据可以移动的唯一方法是通过从本地应用程序发送到Web应用程序的推送。
  • 网络应用程序唯一能做的就是向本地数据库发送一个通知,说明已经采取了新订单。然后,本地应用程序将连接到外部应用程序并提取订单详细信息。

所以我们考虑使用这样的设计,使用Web服务,只是在web应用程序上定义基本操作,如addProduct(id,blah blah blah)

但是我们必须编写例程以保持内容同步,例如从本地应用程序中删除产品,但外部应用程序暂时不可用等等......

这是一种合理的方法,还是有更好的方法?

3 个答案:

答案 0 :(得分:1)

这是SOA似乎适用于我的情况。我将研究使用WCF从POS应用程序中公开某些功能。这至少有以下几点:

  • 您可以重复使用POS系统的功能,而不是在网站上复制部分功能
  • 使用例如MSMQ绑定,您可以在断开连接的情况下运行
  • WCF具有出色的安全机制,事务支持等......

通过这种方式,您最终会为POS系统增加一些价值,而不是在POS和网站之间进行一次性连接。

要了解有关WCF的更多信息,我可以向Juval Lowy推荐Programming WCF services

答案 1 :(得分:0)

不直接回答你的问题......我试图在两个站点之间建立VPN隧道,如果你不能,尝试使用SSH隧道?

除了安全性方面的好处之外,根据我的经验,一旦VPN存在,就会开辟更多的选择,因为以前过于不安全的事情正在考虑中。

答案 2 :(得分:0)

@olle 这很有希望。一个问题是连接黑白在线门户和本地应用程序不可靠。但是,我们仍然希望能够在链接断开时接受订单。 所以,我认为我们将在webapp中使用WCF从服务器读取数据,并将其缓存在本地表中。 Web应用程序将通过中间层请求数据,如果WCF调用在短时间内没有返回,则该中间层为缓存的表中的内容提供服务。如果确实成功返回,则将删除缓存并替换为结果。 听起来像一个计划?