我们刚刚将一个.Net应用程序从Windows 2003 Server迁移到虚拟Windows Server 2008 R2(64位,VMWare)。
此应用程序是一个在.Net Framework 4.0,32Bit上运行的简单控制台应用程序,它运行不同的作业来选择,修改业务数据并将其保存到数据库。对于数据库,我们使用SQL 2008 R2。
由于我们在Windows Server 2008 R2上运行应用程序,我们认识到,使用LINQ to SQL执行Select-Statements的速度比我们以前使用的Windows Server 2003慢。我们使用简单的LINQ查询进行了检查,在Win 2008上花了大约500毫秒。
我们使用System.Data.Linq.DataContext并使用Method GetTable<>()从数据库中获取对象。
比较我们从创建datacontext到从DB-Objects到应用程序中的.Net-Objects的映射所花费的时间。 见代码:
System.Data.IDbConnection testConnection;
System.Data.Linq.Mapping.MappingSource testMappingSource;
...
...
using (System.Data.Linq.DataContext dc = new System.Data.Linq.DataContext(testConnection, testMappingSource))
{
dc.DeferredLoadingEnabled = false;
return = (from dbObject in dc.GetTable<TestTable>()
select dbObject).FirstOrDefault();
}
在Windows 2008 R2 Server上安装.Net Framework 4.0,并在服务器功能中启用.Net Framework 3.5.1功能。
应用程序安装在三个Windows 2003 Server上的三个不同阶段(开发,测试,生产)上。现在它运行在三个虚拟Windows 2008 R2服务器上。我们在所有三个Windows 2008 R2 Server上都存在相同的问题。我们甚至在物理Windows 2008 R2服务器上测试了它;同样的问题。
有谁知道造成这种差异的原因是什么?什么可能是解决这个问题的解决方案?
提前多多感谢! 电贺 汤姆