自从有了html与http就有了浏览器与Web服务器并有了Web应用最初的交互模式是这样的
)thisstylewidth=; border=>
该模式很好地运行了很多年然而随着计算机应用的发展人们越来越不满足于只有静态内容的页面而由某种机制动态产生html等代码的需求越来越迫切于是很多技术就应运而生ASPNET就是这样一种技术从本质上讲ASPNET就是一种服务器端动态产生htmlcssjavascript等浏览器认识的代码的技术ASPNET的交互模式如下
image onmousewheel=javascript:return big(this) onclick=get_larger(this) height= alt= hspace= src=http://imgeducitycn/img_///gif width= onload=javascript:if(thiswidth>)thisstylewidth=; border=>
由该图可知ASPNET必须解决两大问题一是如何与Web服务器(一般就是指IIS)进行交互二是如何根据不同请求产生不同的html等代码
第一个问题根据IIS版本()的不同ASPNET具有不同的进程模式与不同的交互模式该问题不是本篇要讲述的一般来说大家不必关心该问题而且要了解该问题又必须清楚IIS各个版本的模型而各个版本又各有各的不同因此我基本不准备讲述这个问题大家有兴趣的话可以自行搜索相关资料
我们来讨论第二个问题这里首先要说明的是因为IIS进程模式的变化比较大我也没去了解IIS的模型因此以下讲述及以后讲述将只针对IIS与IIS我们有理由认为针对IIS与IIS的讲述一般同样适用于IIS
先且按下该问题不表我们来看一段请求玉帝把大象放到冰箱里的代码(为什么不是上帝?因为我中华不归上帝管)请大家先跟着我的思路来别急别急
usingSystem; namespaceConsoleApplication
{
classProgram
{
staticvoidMain(string[]args)
{
Emperoremperor=newEmperor();
while(true)
{
ConsoleWriteLine(首先给玉帝准备好大象和冰箱);
ConsoleWriteLine(输入大象的名字);
stringelephantName=ConsoleReadLine();
ConsoleWriteLine(输入大象的体重);
intintelephantWeight=intParse(ConsoleReadLine());
ConsoleWriteLine(输入冰箱的名字);
stringrefrigeratorName=ConsoleReadLine();
Elephantelephant=newElephant()
{
Name=elephantName Weight=elephantWeight
};
Refrigeratorrefrigerator=newRefrigerator()
{
Name=refrigeratorName
};
Contextcontext=newContext()
{
Elephant=elephant Refrigerator=refrigerator
};
emperorProcessRequest(context);
ConsoleWriteLine(是否要玉帝继续把大象关进冰箱里?);
stringanswer=ConsoleReadLine();
if(answer==n)
break;
}
}
}
classEmperor
{
publicvoidProcessRequest(Contextcontext)
{
Elephantelephant=contextElephant;
Refrigeratorrefrigerator=contextRefrigerator;
//第一步打开冰箱门
refrigeratorIsOpen=true;
ConsoleWriteLine(stringFormat(玉帝打开了{}的冰箱门refrigeratorName));
//第二步把大象放进去
refrigeratorContent=elephant;
ConsoleWriteLine(stringFormat(玉帝把大象{}放到冰箱{}里了elephantNamerefrigeratorName));
//第三步关上冰箱门
refrigeratorIsOpen=false;
ConsoleWriteLine(stringFormat(玉帝关上了{}的冰箱门refrigeratorName));
}
}
classElephant
{
publicstringName{get;set;
}
publicintWeight{get;set;
}
}
classRefrigerator
{
publicstringName
{
get;
set;
}
publicboolIsOpen
{
get;
set;
}
privateobjectm_Content;
publicobjectContent
{
get
{
returnthism_Content;
}
set
{
if(!thisIsOpen)
thrownewInvalidOperationException(冰箱门未打开无法放进东西);
if(thism_Content!=null)
thrownewInvalidOperationException(冰箱内有东西无法放进新的东西);
thism_Content=value;
}
}
}
classContext
{
publicElephantElephant
{
get;
set;
}
publicRefrigeratorRefrigerator
{
get;
set;
}
}
}