gpt4 book ai didi

IIS AppDomain 实例化

转载 作者:行者123 更新时间:2023-12-04 11:43:23 26 4
gpt4 key购买 nike

我在同一个虚拟目录下有一个网站和一个 web 服务,一些网页调用了 web 服务。

调用 Web 服务时,IIS 是创建新的 AppDomain 还是在同一个 AppDomain 中运行 Web 服务?

有这个设置吗?在我的一台机器上,它似乎创建了一个新的 AppDomain。从 Integrated vs Classic 更改应用程序池模式是否会影响这一点?

最佳答案

IIS 应用程序池运行单个工作进程(默认情况下)。在该工作进程中,一个 AppDomain为每个 IIS 应用程序(网站)创建。据我所知,在该 IIS 应用程序中执行的任何代码都将在相同的 AppDomain 中运行。 (当然,除非您自己在代码中创建自己的子应用程序域)。您可以调整每个网站的工作进程数,但实际上只有在您发现性能问题(无法通过隔离应用程序池来解决)时才这样做。如果您在每个网站上运行多个应用程序域,则在这些单独的应用程序域中运行的代码无法共享状态(例如 InProc session ),并且只能通过序列化进行通信 - 并不理想。

关于 ASP.NET 和 WCF;当托管在 IIS 中时,它们默认以并行模式运行,在同一个 AppDomain 中,这允许它们共享状态,但 WCF 请求不由 ASP.NET 运行时处理,而是由 WCF 运行时拦截和处理对 WCF 服务的调用。 (尽管对 .svc 文件的调用最初仍通过 ASP.NET 路由)。在并排模式下,WCF 调用不遵守您可能为 ASP.NET 网站配置的配置、安全性、模拟等。

IIS 上的 WCF 也可以在 ASP.NET 兼容模式下运行,其中 WCF 实现由 http 处理程序管理,因此也由 ASP.NET 管道处理。如果您认为您的服务只需要 HTTP 支持,您可以考虑在兼容模式下托管服务以访问 ASP.NET 管道的功能和灵活性。

关于集成和经典管道模式,在集成模式下,ASP.NET 由 w3wp.exe 运行。作为 IIS 处理管道的集成部分。这意味着使用自定义处理程序等的任何内容,您可能已插入管道(即使提供非 ASP.NET 内容,例如 PHP),都将在相同的 AppDomain 中加载和执行。 .

在经典模式下,ASP.NET 在其所有者工作进程中运行,aspnet_wp.exe ,并作为 ISAPI 过滤器连接到 IIS 处理管道。我相信 AppDomain 周围的机制相同用法也适用于此。

关于IIS AppDomain 实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230989/

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