创建Web服务(WCF)以与QuickBooks集成

时间:2009-08-12 16:35:12

标签: wcf quickbooks

我正在将自定义Web应用程序与QuickBooks Enterprise 9集成。我的想法是我可以使用QuickBooks作为我的“数据库”。当某人创建发票时,发票实际上仅存储在QuickBooks中。当某人查看发票列表时,他们实际上正在查看QuickBooks发票列表。我想确保数据只存储在一个位置。

我意识到我可以使用QB Web连接器,但问题是我无法控制何时实际处理QB请求(该工作由Web连接器决定)。

所以我将我的网络用户界面作为QuickBooks“面子”,但我没有任何好的方法来进出内部服务器上的QuickBooks文件。我在想的是我可以创建一个WCF Web服务并将其安装在QuickBooks服务器上。然后,Web服务可以成为我的集成点。我的自定义Web应用程序可以使用Web服务,中提琴,我可以访问我的QuickBooks文件。

我的问题是:WCF应用可以连接并运行QuickBooks吗?如果没有,我可以创建一个Windows服务作为我的集成点吗?如果是这样,我的自定义Web应用程序可以“使用”Windows服务吗?

1 个答案:

答案 0 :(得分:11)

首先,我要警告您QuickBooks可能不是您从远程网站访问的可靠后端数据库的最佳选择。事实上......这可能是一个非常非常糟糕的选择。

您应该拥有自己的应用程序数据库,然后如果您还需要与QuickBooks交换数据,请在应用程序的正常生命周期之外进行,作为单独的同步过程。

由于多种原因,QuickBooks对于永远在线类型的应用程序通常不够可靠:

  • Flaky SDK连接
  • 更新和单用户模式将 锁定您无法访问QuickBooks
  • 从非GUI进程(Windows服务和IIS进程)建立SDK连接的难度

据说......

是的,您可以创建WCF Web服务,在QuickBooks计算机上托管它,并使您的WCF Web服务中继消息到QuickBooks或从QuickBooks中继消息。

是的,您还可以创建一个执行相同操作的Windows服务。

不要将其实现为Windows服务,并且在IIS中实现它 - 而是将其实现为与QuickBooks一起运行的GUI应用程序。

如果您尝试将内容实现为Windows服务或在IIS中,QuickBooks SDK要求您有一个GUI可用(它使用GUI COM消息泵进行事件调度或类似的事情......)来处理请求,所以您可能需要使用类似QBXMLRP2e.exe的东西来跨越QuickBooks和非GUI Windows服务/ IIS之间的进程边界。我的经验是,这是一个巨大的痛苦的屁股,并需要与DCOM权限混淆。

我有一个示例和一些文档on my QuickBooks integration wiki

IDN Forums是提问的好地方。

我对你的建议是:

  • 使用Web连接器和QuickBooks 并放弃将所有数据保存在一个地方的希望。将数据缓存在真实数据库中,并通过定期查询QuickBooks来更新它。我差不多已经完成了一个解决方案,现在就做到这一点,它的工作非常棒。

OR

  • 使用其他帐户系统。 NetSuite非常好。我不确定那里还有什么,但如果我是你,我会寻找基于SQL或强大的SOAP / REST API的东西。