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 服务吗?

4

1 回答 1

11

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

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

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

  • 不稳定的 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 权限。

我的QuickBooks 集成 wiki 上有一个示例和一些文档。

IDN 论坛是提问的好地方。

我给你的建议是:

  • 使用 Web 连接器和 QuickBooks,放弃将所有数据保存在一个地方的希望。将数据缓存在真实数据库中,并通过定期查询 QuickBooks 进行更新。我现在几乎完成了构建一个解决方案来做到这一点,而且效果非常好。

或者

  • 使用不同的帐户系统。NetSuite 很不错。我不确定那里还有什么,但如果我是你,我会寻找基于 SQL 或具有强大 SOAP/REST API 的东西。
于 2009-08-13T14:53:35.623 回答