C# 关于为什么第三方ODBC驱动程序会从WCF服务运行超慢查询,而从普通控制台应用程序运行超快查询,有什么想法吗?

C# 关于为什么第三方ODBC驱动程序会从WCF服务运行超慢查询,而从普通控制台应用程序运行超快查询,有什么想法吗?,c#,wcf,performance,C#,Wcf,Performance,我调用了第三方ODBC驱动程序,如下所示: var DbConnection = new OdbcConnection(@"DSN=QuickBooks Data;SERVER=QODBC;OptimizerDBFolder=%UserProfile%\QODBC Driver for QuickBooks\Optimizer;OptimizerAllowDirtyReads=N;SyncFromOtherTables=Y;IAppReadOnly=Y"); var tb = new DataT

我调用了第三方ODBC驱动程序,如下所示:

var DbConnection = new OdbcConnection(@"DSN=QuickBooks Data;SERVER=QODBC;OptimizerDBFolder=%UserProfile%\QODBC Driver for QuickBooks\Optimizer;OptimizerAllowDirtyReads=N;SyncFromOtherTables=Y;IAppReadOnly=Y");
var tb = new DataTable();
using (var ad = new OdbcDataAdapter("SELECT * FROM Customer", DbConnection))
{
   ad.Fill(tb);
}
它从colsole应用程序运行,需要几秒钟

但如果我只从自托管WCF服务运行它,而不做任何更改,则如下所示:

[ServiceContract]
public interface IQuickBooksService
{
    [OperationContract]
    DataTable GetQuickBooksData(string query);
}

public class QuickBooksService : IQuickBooksService
{
    public DataTable GetQuickBooksData(string query)
    {
        var DbConnection = new OdbcConnection(@"DSN=QuickBooks Data;SERVER=QODBC;OptimizerDBFolder=%UserProfile%\QODBC Driver for QuickBooks\Optimizer;OptimizerAllowDirtyReads=N;SyncFromOtherTables=Y;IAppReadOnly=Y");
        var tb = new DataTable();
        using (var ad = new OdbcDataAdapter("SELECT * FROM Customer", DbConnection))
        {
            ad.Fill(tb);
        }
        return tb;
    }
}
我可以看到司机通过它提供的状态面板工作,但速度慢得可怜

我有点被难住了。感谢您的帮助


注意:如果我不解决这个问题,我要绕开它的方法是使用数据库作为消息队列,对消息进行快速控制台应用程序轮询,并将结果放回数据库(可能是临时表),我不知道如何将数据表转储为XML。

可能是因为您将包含大量数据的数据表序列化的原因?如果您需要通过WCF投票数据库,我会使用比DATABLE更轻量级的东西,并考虑异步操作

慢度似乎来自于驱动程序本身,好像不同于从控制台EXE的主线程或自托管WFC服务的处理线程调用的。您是否为WCF配置了跟踪或日志记录?