gpt4 book ai didi

c# - Entity Framework - 不同环境下的不同行为

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:08 24 4
gpt4 key购买 nike

我最近开始使用 Entity Framework (4.1 版)和 WCF。我正在尝试制作一个 n 层 asp.net 应用程序(.Net Framework 4.0),其中数据层由内部使用 Entity Framework 的 wcf 服务组成。 Entity Framework 采用的方法是模型优先的。

在我的开发环境中,我在同一个网站和同一个应用程序池下的 IIS 7.5 上同时运行了 asp.net 应用程序和 wcf 服务(它不是很好,但可以工作)。在第一次访问任何 wcf 服务时,性能都很差,但在随后的访问中就可以了。解释了第一次访问时性能不佳的原因 here - 例如与 View 生成、查询准备等相关的开销

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

我期待相同的行为,即第一次访问服务时速度较慢,随后访问执行得更快,但对服务的所有访问都运行缓慢。

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

本质上,我是想弄清楚为什么我会注意到不同环境下的不同行为。

据我所知,每次创建 AppDomain 时, Entity Framework 都会执行与初始开销相关的操作。但这是否意味着每次调用 WCF 服务都会创建一个新的 AppDomain?

最佳答案

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

显然,.Net 4.0 上的 Entity Framework 在每次请求时都会引入生成 View 和编译查询的开销。在 4.2 及以上版本的 Framework 上,行为更像文献中描述的:开销仅发生在第一次访问时。

WCF AppDomain 由 IIS 应用程序池创建,并在多个请求中重复使用。

感谢您的意见 Narayana

关于c# - Entity Framework - 不同环境下的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com