2014-01-25 44 views
2

我最近开始使用实体框架(版本4.1)和WCF。 我试图制作一个n层的asp.net应用程序(.Net Framework 4.0),其中数据层由内部使用实体框架的wcf服务组成。实体框架采用的方法是模型优先的。实体框架 - 不同环境下的不同行为

在我的开发环境,我对IIS 7.5运行在相同的网站,并在同一个应用程序池下两个asp.net应用程序和WCF服务(这是不是很大,但它的工作原理)。在任何wcf服务的第一次访问时,性能都很差,但在后续访问中没有问题。在第一次访问中表现不佳的原因被解释为here - 例如,与视图生成,查询准备等有关的开销,

完成开发后,我已经建立了一个测试环境,包含2个虚拟机 - 一个服务器(IIS 7.5),托管应用程序的前端和另一个(同样是IIS 7.5),托管wcf服务 - 运行在不同的机器上,在不同的网站和不同的应用程序池下。

我期待相同的行为,即执行速度快了很多的服务和后续访问缓慢第一次访问,但所有访问服务运行缓慢。

问题不在于查询繁重,而是网络问题。我已经执行了一个实体框架分析工具,显然,每次调用wcf服务时都存在生成视图和准备查询的开销。查询的执行速度很快。

基本上我试图找出为什么我注意到在不同环境下不同的行为。

从我读过的东西,每次创建一个AppDomain时,实体框架,执行与该初始开销相关的操作。但是这是否意味着每次调用WCF服务都会创建一个新的AppDomain?

+0

任何机会,该版本在开发框是调试和测试环境释放? – Narayana

回答

0

我想通了。显然,开发机器的设置安装了2011年6月安装的.Net Framework的CTP,并且测试环境机器具有标准的.Net Framework 4.0。我已经升级到所有机器上的.Net Framework 4.5,现在一切都按预期工作。

显然,实体框架的.NET 4.0,在每次请求介绍了如何生成的看法和编译查询的开销。在Framework及其以上版本的4.2版本中,行为更像文献中描述的那样:开销只发生在第一次访问上。

的WCF的AppDomain由IIS应用程序池创建,并在几个请求被重用。

我很欣赏你的输入纳拉亚纳