创建一个Web服务(WCF)与QuickBooks集成。

6
我正在将我们的自定义Web应用程序与QuickBooks Enterprise 9集成。 我的想法是可以使用QuickBooks作为我的“数据库”。 当人们创建发票时,发票实际上只存储在QuickBooks中。 当人们查看发票列表时,他们实际上正在查看QuickBooks发票列表。 我希望确保数据仅存储在一个位置。
我意识到我可以使用QB Web连接器,但问题在于我无法控制何时实际处理对QB的请求(这项工作由Web连接器完成)。
因此,我让我的Web UI充当QuickBooks的“面孔”,但我没有任何好方法来回访问位于内部服务器上的QuickBooks文件。 我想的是可以创建一个WCF Web服务并将其安装在QuickBooks服务器上。 然后,Web服务可以成为我的集成点。 我的自定义Web应用程序可以使用Web服务,然后就可以访问QuickBooks文件了。
我的问题是:WCF应用程序可以连接并运行QuickBooks吗? 如果不行,我是否可以创建一个Windows服务来充当我的集成点? 如果可以,我的自定义Web应用程序可以“消费”Windows服务吗?

你已经将QB作为你的后端锁定了吗?如果没有,我会认真重新考虑这一点。根据我的经验,QuickBooks本身相当缓慢和脆弱。他们的API也不是很好用。 - Adrien
我不是。我希望这样做可以加快开发速度。 - CodingBytes
我所在的团队正在进行与此完全相似的工作,使用在QB盒子上运行的WCF服务。你最终成功了吗?我们已经构建好了,但是在IIS/QB中获取Web服务运行权限方面遇到了很大的问题。使用VS服务器运行Web服务非常好,但在IIS上就没有这样的运气了。 - RyanW
很遗憾,我决定使用批处理/网络连接器方法。 - CodingBytes
1个回答

11

首先,我要提醒你,QuickBooks可能不是可靠的后端数据库,也不适合从远程网站访问。实际上...它可能是一个非常糟糕的选择。

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

由于许多原因,QuickBooks通常不足以支持始终在线类型的应用程序:

  • SDK连接不稳定
  • 更新和单用户模式会锁定你无法访问QuickBooks
  • 难以从非GUI进程(Windows Service和IIS进程)建立SDK连接

话虽如此...

是的,你可以创建一个WCF Web服务,将其托管在QuickBooks机器上,并使你的WCF Web服务中继消息到/从QuickBooks。

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

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

如果你尝试将其实现为Windows服务或在IIS内部实现,QuickBooks SDK要求你必须拥有一个可用的GUI(对于事件分派或类似操作,它使用GUI COM消息泵...),以便处理请求,因此你可能需要使用类似QBXMLRP2e.exe之类的东西来跨越QuickBooks和非GUI Windows服务/IIS之间的进程边界。我的经验是这很繁琐,并且还需要涉及DCOM权限。

我在我的QuickBooks集成维基上有一个示例和一些文档

IDN论坛是提问的好地方。

我向你推荐以下两种方式之一:

  • 使用Web连接器和QuickBooks,但不要仅仅寄希望于将所有数据都保留在一个地方。将数据缓存到实际的数据库中,并通过定期查询QuickBooks来更新它。我现在几乎完成了构建这个解决方案的工作,它运行得非常好。

或者

  • 使用一个不同的账户系统,例如NetSuite是相当不错的选择。如果我是你,我会寻找一些基于SQL或具有强大SOAP/REST API的账户系统。

Keith,你的网站链接到“低睾酮治疗”、“如何使用iPhone相机”和许多其他垃圾链接。 - David Murdoch
@DavidMurdoch 谢谢,我会去看看的。 - Keith Palmer Jr.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接