C# 关于为什么第三方ODBC驱动程序会从WCF服务运行超慢查询,而从普通控制台应用程序运行超快查询,有什么想法吗?
我调用了第三方ODBC驱动程序,如下所示: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
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配置了跟踪或日志记录?