任何人都可以在IIS中解释应用程序池,工作进程和应用程序域之间的差异吗?另外,他们如何一起工作?我读了几篇文章,但它仍然有点令人困惑.
Ari*_*tos 98
我试着用其他的话说出来.
在服务器中,您可以拥有许多一起运行的asp.net站点.每个站点都是一个应用程序域.
您必须为每个应用程序池分配一个应用程序池.许多应用程序域(站点)可以具有相同的应用程序池,并且因为它们具有相同的应用程序池,它们在相同的进程下运行,并且在同一帐户下运行 - 并且它们具有相同的池设置.如果此池重新启动,则该池下的所有站点都将重新启动.
现在每个池可以有一个或多个工作进程.每个工作进程都是一个不同的程序,它运行您的站点,具有单独的静态变量,它们不同的启动停止调用等.不同的工作进程不能一起通信,并且交换数据的唯一方法是来自公共文件或公共数据库.如果您有多个工作进程,其中一个进行长时间计算,那么另一个可以负责处理互联网呼叫并显示内容.
当您将多个工作进程分配给单个池时,您将创建被调用的Web园,如果计算机是一台处理机,则您的站点就像是从多台计算机上运行.
每个工作进程可以有多个线程.
更多工作进程如何影响您:
当您有一个工作进程时,一切都更简单,在您的应用程序中,所有静态变量都是相同的,并且您使用lock
它们来同步它们.
当您分配多个工作进程时,您仍然继续使用lock
for静态变量,静态变量在您的站点的多次运行中没有差异,并且如果您有一些公共资源(例如,在磁盘上创建缩略图)那么你需要同步你的工作进程Mutex
.
再说一遍.听起来当你制作更多的工作进程时,你可能会有更平滑的异步页面加载.asp.net的会话处理程序存在一个小问题,即锁定页面加载的整个过程 - 如果你知道它并处理它或者改变它,那就很好并且不是很好.
所以,让我们谈谈一个只有很多工人流程的网站.在这里,您将面临与公共资源更改同步所需的问题Mutex
.但是使用会话的页面/处理程序它们不是异步的,因为会话锁定它们.这对于开始是有好处的,因为你避免让你自己的许多点同步.
关于此主题的一些问题:
在共享同一会话时处理另一个Web应用程序时阻止Web应用程序
jQuery对Web服务的Ajax调用似乎是同步的
ASP.NET服务器不会异步处理页面
完全替换ASP.Net的会话
现在这个会话锁定不会影响不同的站点.
在不同的站点中,更多工作流程可以帮助一个站点阻止另一个站点长时间运行.
在不同的站点中,更多的池也可以提供帮助,因为每个池至少有一个工作流程,但是使用流程资源管理器记住并自己查看,每个工作流程占用更多的计算机内存,一个大型服务器具有16G内存并且一个SQL服务器不能有太多不同的工作过程 - 例如在具有100个共享站点的服务器上,您不能拥有100个不同的池.
Yin*_*ing 16
ASP.NET开发人员的意义:为了使您的网站可扩展,不要使用进程内会话,也不要使用静态类变量锁进行同步.
是的,虽然不是每个应用程序都是一个网站.您可以拥有嵌套在网站下的应用程序.
是的,每个应用程序都必须有一个工作进程(应用程序池),尽管一个应用程序池可以为多个应用程序服务.可以分发单个Web应用程序(Web园/场),这意味着它将在多个进程中运行.
每个进程都将在自己的应用程序域中运行(每个应用程序池都是一个单独的应用程序域).
来自MSDN.
应用程序是网站根级别的内容分组或网站根目录下单独文件夹中的内容分组.
应用程序池定义一组一个或多个工作进程,这些进程配置有通用设置,这些设置为分配给该应用程序池的一个或多个应用程序提供请求.由于应用程序池允许一组Web应用程序共享一个或多个类似配置的工作进程,因此它们提供了一种将一组Web应用程序与服务器计算机上的其他Web应用程序隔离的便捷方法.流程边界将每个工作流程分开; 因此,一个应用程序池中的应用程序问题不会影响其他应用程序池中的Web站点或应用程序.应用程序池显着提高了Web基础结构的可靠性和可管理性.
归档时间: |
|
查看次数: |
76211 次 |
最近记录: |