我是个ASP.NET 2.0的初学者,最近在看一本名为<Apress.Beginning.ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional>的书,是全英文版本的,刚看完第一章就有股冲动写读书笔记,因为发现其的博大精深,奥妙真是不言而喻.部分是我自己的翻译,翻译得很差,请看的朋友见谅.
PART 1 Introducing .NET
CHAPTER1 Introducing the .net framework.
WEB开发的革命
HTML 和 HTML Forms
早期的WEBSITES根本不能说是WEB应用程序,他就好象是一个以固定格式,包含内容的文本文档一样,当你接收到这个文本文档的时候,同样是以固定格式显示出来,他实际上没有做任何事情.
<html>
<head>
<title>填充WEB页的标题</title>
</head>
<body>
<h1>h1是一种稍大的字体.以h1的字体输出.</h1>
<p>我想P应该是PRINT的缩写,意思是直接输出.</p>
</body>
</html>
HTML的语言格式,以<*>开始,以</*>结束,在其中加入内容,由此可知HTML语言是由两部分组成,一部分是文本,另一部分则是形如<>的标签.
在HTML2.0中加入了名为HTML FORMS的技术,使得HTML页面能够加入更多的控件,例如CHECKBOX,SUBMIT等,而这些内容必须放置在<FORM>...</FORM>之间,形式是<input type="checkbox">checkbox的名称<br>,<input type="submit" value="submit控件的名称">.
我认为,在早期HTML是一种面向过程的语言.(本人没学过HTML语言,别骂.)
服务端的程序
CGI的服务器对每一个WEB请求必须运行相对应的程序,即使这些请求是相同的但来自不同地方,如果WEB的访问量很高,那么这些运行的程序片就会越多,造成服务器的当机.(这里是我对问中CGI的一些理解,如有不对,请指正).
因此,微软开发出了ISAPI,Internet服务应用程序接口以解决此问题,但却代来了明显的复杂性.然而ISAPI并没有完全的退出历史舞台,微软在他的基础上开发出了ASP和ASP.NET技术,这两种技术都支持生成动态页,并且不用去想程序低层的问题,所以这两种语言很受欢迎.
虽然ASP和ASP.NET很相近,但ASP是一种依赖于脚本的语言,而ASP.NET是一种面向对象的语言,可以像些程序一样来做网页.
备注:ASP.NET1.X与ASP.NET2.0使用的是相同的技术,2.0是对1.X的更新但不是革新(这在书中有明确指出),但ASP使用的技术却是COM.
虽然我不知道什么是ISAPI,COM,以及ASP.NET到底使用的是什么技术,但我想我不需要知道这么多,我需要知道的时候,我如何用ASP.NET2.0去写网站,并让网站能够安全的运行起来,我不是狂人,我除了学习还有生活,所以我不准备去了解什么ISAPI,COM等技术,我想大多数学ASP.NET的人看见这一大堆术语肯定就望而怯步了吧,有的甚至想去了解,我认为不用去了解,就让他们这样放着,等你真正需要的去了解的时候再去了解.
客户端程序
这些程序的代表有JAVA脚本,DHTML,但他们并没有解决程序给服务器带来的压力,当用户访问WEB时,服务器会传一个包给用户,这个包在用户端编译,执行,这同样带来了问题:
浏览器和操作系统必须支持JAVA脚本,使得通用性的减低.
如果JAVA脚本进行升级,那么客户机也要面临升级的烦恼.
对服务器上数据的读取的难度加大.
安全性的问题.因为程序是在客户机上运行,也就是说,客户机拿到了一张通往服务器的通行证,在合理的情况下他可以任意的访问服务器的内容,如果客户机的程序在某个黑客的手中,那么服务器是很危险的.
而ASP.NET是服务端的程序,程序通过请求生成静态的HTML页面,将静态页面发给客户端,上述的问题则没有了.
但这个时候我也想过,如果访问量大的话一样会对服务器造成很大的压力,因为访问数据库会造成很大的开销,所以我查了一下,网上有一篇关于ASP.NET的页面缓存技术,可以让ASP.NET在第一次请求的时候生成一个页面,页面保存在内存中,可以设置这个页面的生存周期,一般而言首页的访问量是最大的,那么可以设置将这个页面缓存在内存中,每个几个小时,或者几天,或者手动的更新,如果需要更新网页的话.
ASP存在的问题
书中说,如果你以前使用过ASP,那么你也许遇见过以下的这些问题:
脚本的限制:ASP是依赖于VB脚本的.ASP.NET是.NET语言,是非脚本的.
无应用程序结构:这应该是废话了.
更新以及修改带来的问题:当要更新和修改的时候必须停止运行,这样对一个网站而言是很不利的,而ASP.NET可以动态的更新.
状态限制(这里我没理解透):一个页面一旦发送给用户后,服务器的连接就会关闭,任何的用户细节的信息就会报废,ASP用SESSION状态来解决这个问题,使得每个用户的连接被保存在内存中,但也有脆弱之处,脆弱之处就在于如果像163这样的网站,他一定会有多台服务器,当用户的细节信息在A服务器中,而他却登陆到了B服务器中,那么连接就会丢失.而ASP解决了这个问题,他使用了一个中心仓库来解决这个问题.
我想了一个很BT的例子,不知道对不对,如有不对请大家指正.
例如说一个用户登陆一个网站,这个网站有两个服务器A和B,登陆这个服务器先要验证一次密码,然后再验证一次密码,当用户先是在A服务器上验证密码,通过了,此时A服务器的繁忙,用户的第二次密码被送往了B服务器,此时,在B服务器中并没有任何用户通过了第一次的密码的信息,则用户连接中断,如果A服务器一直处于繁忙状态,那么用户这辈子都别想登陆服务器了,哈哈.