在IIS中,有人能解释应用程序池、工作进程和应用程序域之间的差异吗?还有,他们是如何合作的?我读过几篇文章,但还是有点困惑.

  1. 在IIS中创建的每个网站都会成为一个应用程序吗?
  2. 每个应用程序是否与一个辅助进程关联?
  3. 应用程序域在图中的位置是什么?

推荐答案

我试着用其他的词来表达.

在一台服务器中,可以有许多asp.net网站一起运行.每一个站点都是一个app domain.

你必须给他们每人分配一个application pool.许多应用程序域(站点)可以有相同的应用程序池,因为它们有相同的应用程序池,所以它们在相同的进程和相同的帐户下运行,并且它们具有相同的池设置.如果此池重新启动,则该池下的所有站点都将重新启动.

现在每个池可以有一个或多个worker process个.每个工作进程都是运行您的站点的不同程序,有它们各自的静电变量,它们有不同的启动和停止调用等等.不同的工作进程不会相互通信,交换数据的唯一方式是来自公共文件或公共数据库.如果您有多个工作进程,并且其中一个进行长时间计算,则另一个进程可以负责处理Internet呼叫和显示内容.

当您将多个工作进程分配给单个池时,您将调用web garden,如果一台计算机是一台处理机器,那么您的站点就像是从多台计算机上运行.

app domains, with pools and processes

每个工作进程可以有多个线程.

员工人数越多对您的影响:

再来一张.听起来,当你达到more worker process时,你可能会有更平滑的异步页面加载.asp的会话处理程序有一个小问题.net来锁定页面加载的整个过程——这是好的还是不好的,取决于你是否知道并处理它——或者改变它.

因此,让我们仅讨论一个具有多个工作进程站点.在这里,您面临的问题是,您需要同步您的公共资源变更与Mutex.但是使用会话的页面/处理程序不是异步的,因为会话锁定了它们.这对于开始是有好处的,因为您可以避免将许多点的这种同步设置为您自己.

Some questions on this topic:
Web app blocked while processing another web app on sharing same session
jQuery Ajax calls to web service seem to be synchronous
ASP.NET Server does not process pages asynchronously
Replacing ASP.Net's session entirely

现在,此会话锁定不会影响不同的站点.

在不同的站点中,更复杂的流程有助于避免一个站点在长时间运行的过程中阻塞另一个站点

Asp.net相关问答推荐

如何从 ASP.NET 中的代码隐藏文件访问 IFRAME?

我可以将图像添加到 ASP.NET 按钮吗?

我可以在一个 Web 项目中有多个 web.config 文件吗?

在 ASP.NET 中访问没有值的查询字符串参数

将 ASP.NET 成员资格表添加到我自己的现有数据库中,还是应该配置一个单独的 ASP.NET 成员资格数据库?

如何为发布模式设置调试错误

在程序集中找不到上下文类型

多行文本框多个换行符

如何使图像的一部分成为可点击的链接

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

将存储过程中 Select 查询的结果返回到列表

Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用

如何将枚举类型绑定到 DropDownList?

如何从url中删除returnurl?

如何将数据集转换为数据表

System.Reflection.Assembly.LoadFile 锁定文件

覆盖静态方法

MVC3 和实体框架

好的 ASP.NET 类似 excel 的网格控件?

在控制器 asp.net-core 中获取当前区域性