2011-08-16 43 views
8

从我的研究中看起来基本上有3个选项。与C#代码中的快速书本整合的最佳方式是什么?

1:使用COM
2:使用一个web服务和web连接器
3:使用第三方组件(和似乎存在相当多的)

每个选项呈现为一个问题我:
1:我被告知我不能使用COM
2:该解决方案似乎很做作到我,因为我需要从一个窗口服务
3集成:这些解决方案都是相当昂贵的。

我看起来像我将不得不去第三方的路线和有在我的脑海两个前参赛者:

1:QODBC(http://www.qodbc.com/usa.html)
2:AccessBooks(http://www.synergration.com/AccessBooksUpdater/default.aspx)

我的问题,亲爱的读者,如下:

1:哪些解决方案(COM,web服务,哪个第三方)你会用?
2:为什么你会选择其他选项?
3:是否还有其他选项我错过了?

+1

对于Windows服务,COM互操作似乎是最好的解决方案。 –

+0

尽管它可能有点混乱,但使用COM有什么问题? –

+0

@JP,我们将其称为业务需求 – iamkrillin

回答

3

我已经决定去与上述所谓的“QuickBooks的ADO.NET数据提供程序”没有提到其他产品则显然是谁使QuickBooks的集成产品

我选择它的原因相同人员提出了...

1)它具有远程访问组件
您安装远程服务器,你可以从任何地方访问你的网络

2)在您的QuickBooks数据的远程访问组件可以作为服务运行
纳夫说

3)提供了一个SQL界面风格到QuickBooks的数据
4)有没有一些汽车魔术缓存来加速数据访问

+1

如果避免使用COM是一项艰巨的任务,那么我不想告诉你,但几乎每种用来自动化QB的方法都会打破这个要求。 QB的API *是* COM,不管你使用什么抽象概念,最终都会在一层COM之上。这就是说,这不适用于im /导出IIF文件。 – xanadont

+0

我意识到,要求是我们没有惹COM,所以只要它被隐藏一切都很好 – iamkrillin

1

虽然我确定在某些情况下无法正常工作,但我的第一个攻击方向是在Intuit developer center处找到的Quickbooks SDK。

+0

intuit开发人员中心是我进行研究的地方:他们提供了COM接口和Web服务连接器,他们还列出了各种第三方组件。 – iamkrillin

2

我在一个项目上使用了nSoftware的QuickBooks集成器。这比使用QuickBooks SDK更容易,支持也很棒。该产品已经存在了大约8年。

http://www.nsoftware.com/ibiz/quickbooks/

+0

如果您可以将远程连接器作为服务运行,您是否偶然知道?您是否需要始终提供同步功能?如果是这样,你是如何解决连接器组件的? – iamkrillin

+0

当我刚才使用它时,它几乎感觉就像打开数据库连接。您将添加一个客户,然后添加产品,然后添加客户的发票,然后添加发票上的行,然后关闭连接。 –

7

我使用QuickBooks的SDK,因为我正在为一个朋友的导入工具,我们没有购买第三方库的奢侈品。

我开始将它作为一个Web服务来开发,但我意识到这一点后不得不回退,不仅需要在服务器上部署Quickbooks SDK的可再发行版本,还需要安装Quickbooks本身。 Quickbooks通常会显示一个对话框,这在服务器上很糟糕。

只要该对话框打开,Quickbooks SDK就会拒绝任何连接。

我最终将它作为纯C#Winform应用程序来完成。从那里,它相当海峡。

在程序的心脏是处理的会话和消息

public static class Quickbooks 
{ 
    public static QuickbookSession CreateSession() 
    { 
     return new QuickbookSession(); 
    } 
} 

public class QuickbookSession : IDisposable 
{ 
    /// <summary> 
    /// Initializes a new instance of the <see cref="QuickbookSession"/> class. 
    /// </summary> 
    internal QuickbookSession() 
    { 
     this.SessionManager = new QBSessionManager(); 

     this.SessionManager.OpenConnection2(
      ConfigurationManager.AppSettings["QuickbooksApplicationId"], 
      ConfigurationManager.AppSettings["QuickbooksApplicationName"], 
      Utils.GetEnumValue<ENConnectionType>(ConfigurationManager.AppSettings["QuickbooksConnectionType"])); 

     var file = Quickbook.QuickbookDatabaseFilePath; 
     if (string.IsNullOrEmpty(file)) 
     { 
      file = ConfigurationManager.AppSettings["QuickbooksDatabaseLocalPath"]; 
     } 

     this.SessionManager.BeginSession(file, Utils.GetEnumValue<ENOpenMode>(ConfigurationManager.AppSettings["QuickbooksSessionOpenMode"])); 
    } 

    /// <summary> 
    /// Gets the Quickbook session manager that is owning this message. 
    /// </summary> 
    public QBSessionManager SessionManager { get; private set; } 

    public QuickbookMessage CreateMessage() 
    { 
     return new QuickbookMessage(this.SessionManager); 
    } 

    public void Dispose() 
    { 
     Dispose(true); 
     GC.SuppressFinalize(this); 
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      // get rid of managed resources 
     } 

     this.SessionManager.EndSession(); 
     this.SessionManager.CloseConnection(); 

     System.Runtime.InteropServices.Marshal.ReleaseComObject(this.SessionManager); 
    } 
} 

后一个的QuickBook会话类,这是简单的创建一个会话,创建一条消息,并附加了不同的查询的问题。

using(var session = Quickbooks.CreateSession()) 
{ 
    // Check if the job already exist 
    using (var message = session.CreateMessage()) 
    { 
     var jobQuery = message.AppendCustomerQueryRq(); 
     jobQuery.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.Name.SetValue("something"); 
     jobQuery.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains); 

     var result = message.Send(); 

     // do stuff here with the result 
    } 
} 

这段代码远非QuickBook的许多缺陷的防弹。 Quickbooks SDK也相当慢。例如,检索供应商名单大约需要2分钟,大约1000个供应商。

+1

如果集成在同一个公司文件中,或者该文件已经配置为接受与您应用程序签名的集成,则不应显示对话框。只要文件配置为始终允许。 – xanadont

+0

Quickbooks可以显示“授权应用程序”对话框以外的对话框的原因有很多。 –

0

如果你正在寻找预包装的.NET源代码或东西,Kentico,Ektron和nopCommerce连接器均为QuickBooks存在。请查看我的store

相关问题