我意识到我可以使用QB Web连接器,但问题是我无法控制何时实际处理QB的请求(该工作由Web连接器决定).
所以我的网页用户界面充当了QuickBooks的“面孔”,但我没有任何好的方法可以进出内部服务器上的QuickBooks文件.我在想的是我可以创建一个WCF Web服务并将其安装在QuickBooks服务器上.然后,Web服务可以成为我的集成点.我的自定义Web应用程序可以使用Web服务,中提琴,我可以访问我的QuickBooks文件.
我的问题是:WCF应用程序可以连接并运行QuickBooks吗?如果没有,我可以创建一个Windows服务作为我的集成点吗?如果是这样,我的自定义Web应用程序可以“使用”Windows服务吗?
解决方法
您应该拥有自己的应用程序数据库,然后如果您还需要与QuickBooks交换数据,请在应用程序的正常生命周期之外执行此操作,作为单独的同步过程.
由于多种原因,QuickBooks对于永远在线类型的应用程序通常不够可靠:
> Flaky SDK连接
>更新和单用户模式将
阻止您访问QuickBooks
>难以从非GUI进程建立SDK连接(Windows服务和IIS进程)
照这样说…
是的,您可以创建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权限混淆.
我有一个例子和一些文档on my QuickBooks integration wiki.
IDN Forums是提问的好地方.
我给你的建议是:
>使用Web连接器和QuickBooks
并放弃将所有数据保存在一个地方的希望.将数据缓存在真实数据库中,并通过定期查询QuickBooks来更新它.我差不多已经完成了一个解决方案来完成这个目标,它的工作非常棒.
要么
>使用其他帐户系统. NetSuite非常好.我不确定那里还有什么,但如果我是你,我会寻找基于sql或强大的SOAP / REST API的东西.