ASP.NET的IIS5与IIS6.0

开发 后端
本文介绍ASP.NET的IIS5与IIS6.0,一般来说,大家不必关心该问题,而且要了解该问题,又必须清楚IIS各个版本的模型,而各个版本又各有各的不同。

自从有了html与http,就有了浏览器与Web服务器,并有了Web应用,最初的交互模式是这样的:

交互模式

该模式很好地运行了很多年。然而,随着计算机应用的发展,人们越来越不满足于只有静态内容的页面,而由某种机制动态产生html等代码的需求越来越迫切,于是,很多技术就应运而生,ASP.NET就是这样一种技术。从本质上讲,ASP.NET就是一种服务器端动态产生html、css、javascript等浏览器认识的代码的技术。ASP.NET的交互模式如下:

ASP.NET的交互模式

由该图可知,ASP.NET必须解决两大问题,一是如何与Web服务器(一般就是指IIS)进行交互,二是如何根据不同请求产生不同的html等代码。

***个问题,根据IIS版本(5,6.0,7.0)的不同,ASP.NET具有不同的进程模式与不同的交互模式,该问题不是本篇要讲述的。一般来说,大家不必关心该问题,而且要了解该问题,又必须清楚IIS各个版本的模型,而各个版本又各有各的不同,因此,我基本不准备讲述这个问题,大家有兴趣的话,可以自行搜索相关资料。

我们来讨论第二个问题,这里首先要说明的是,因为IIS7.0进程模式的变化比较大,我也没去了解IIS7.0的模型,因此,以下讲述及以后讲述将只针对IIS5与IIS6.0.我们有理由认为,针对IIS5与IIS6.0的讲述一般同样适用于IIS7.0.

先且按下该问题不表,我们来看一段请求玉帝把大象放到冰箱里的代码(为什么不是上帝?因为我中华不归上帝管),请大家先跟着我的思路来,别急,别急。

  1. usingSystem;  
  2.  
  3. namespaceConsoleApplication3  
  4. {  
  5. classProgram  
  6. {  
  7. staticvoidMain(string[]args)  
  8. {  
  9. Emperoremperor=newEmperor();  
  10. while(true)  
  11. {  
  12. Console.WriteLine("首先给玉帝准备好大象和冰箱。");  
  13.  
  14. Console.WriteLine("输入大象的名字:");  
  15. stringelephantName=Console.ReadLine();  
  16. Console.WriteLine("输入大象的体重:");  
  17. intintelephantWeight=int.Parse(Console.ReadLine());  
  18. Console.WriteLine("输入冰箱的名字:");  
  19. stringrefrigeratorName=Console.ReadLine();  
  20.  
  21. Elephantelephant=newElephant()  
  22. {  
  23. Name=elephantName,  
  24. Weight=elephantWeight 
  25. };  
  26. Refrigeratorrefrigerator=newRefrigerator()  
  27. {  
  28. Name=refrigeratorName 
  29. };  
  30.  
  31. Contextcontext=newContext()  
  32. {  
  33. Elephant=elephant,  
  34. Refrigerator=refrigerator 
  35. };  
  36.  
  37. emperor.ProcessRequest(context);  
  38.  
  39. Console.WriteLine("是否要玉帝继续把大象关进冰箱里?");  
  40. stringanswer=Console.ReadLine();  
  41. if(answer=="n")  
  42. break;  
  43. }  
  44. }  
  45. }  
  46.  
  47. classEmperor  
  48. {  
  49. publicvoidProcessRequest(Contextcontext)  
  50. {  
  51. Elephantelephant=context.Elephant;  
  52. Refrigeratorrefrigerator=context.Refrigerator;  
  53.  
  54. //***步,打开冰箱门  
  55. refrigerator.IsOpen=true;  
  56. Console.WriteLine(string.Format("玉帝打开了{0}的冰箱门。",
    refrigerator.Name));  
  57.  
  58. //第二步,把大象放进去  
  59. refrigerator.Content=elephant;  
  60. Console.WriteLine(string.Format("玉帝把大象{0}放到冰箱{1}里了。",
    elephant.Name,refrigerator.Name));  
  61.  
  62. //第三步,关上冰箱门  
  63. refrigerator.IsOpen=false;  
  64. Console.WriteLine(string.Format("玉帝关上了{0}的冰箱门。",
    refrigerator.Name));  
  65. }  
  66. }  
  67.  
  68. classElephant  
  69. {  
  70. publicstringName{get;set;}  
  71. publicintWeight{get;set;}  
  72. }  
  73.  
  74. classRefrigerator  
  75. {  
  76. publicstringName{get;set;}  
  77. publicboolIsOpen{get;set;}  
  78.  
  79. privateobjectm_Content;  
  80. publicobjectContent  
  81. {  
  82. get{returnthis.m_Content;}  
  83. set  
  84. {  
  85. if(!this.IsOpen)  
  86. thrownewInvalidOperationException("冰箱门未打开,无法放进东西。");  
  87. if(this.m_Content!=null)  
  88. thrownewInvalidOperationException("冰箱内有东西,无法放进新的东西。");  
  89.  
  90. this.m_Content=value;  
  91. }  
  92. }  
  93. }  
  94.  
  95. classContext  
  96. {  
  97. publicElephantElephant{get;set;}  
  98. publicRefrigeratorRefrigerator{get;set;}  
  99. }  

【编辑推荐】

  1. ASP.NET的DataList和Repeater控件
  2. 浅析ASP.NET的IIS映射
  3. 概述ASP.NET状态类型
  4. 浅谈ASP.NET和Web服务器
  5. ASP.NET的EnableViewState属性
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-07-24 10:41:00

asp.net mvc

2009-07-23 13:19:51

2009-07-23 13:09:23

2009-04-04 21:18:17

IIS6.0缺陷

2009-07-24 13:41:03

IIS ASP.NET

2009-07-28 10:59:13

ASP.NET IIS

2009-07-24 11:15:36

IIS ISAPI eASP.NET

2009-07-28 17:49:30

ASP.NET定期回收

2010-05-17 17:44:56

IIS6.0

2009-07-24 14:03:02

IIS ASP.NET

2009-08-04 09:32:27

部署Silverlig

2009-07-28 11:34:02

ASP.NET架设

2010-05-17 16:23:22

IIS 6.0

2009-07-31 09:41:39

ASP.NET MVCIIS版本变化

2009-07-20 17:16:46

IIS中使用ASP.N

2009-07-30 14:10:40

ASP.NET版本

2009-07-24 10:57:41

ASP.NET ISAIIS6

2010-05-13 17:57:44

IIS服务器

2011-04-08 09:34:10

windows serIIS 7.0

2016-01-06 16:54:57

HTTP网络协议
点赞
收藏

51CTO技术栈公众号