一、看宏观导图:
二、细节拓展:
静态网页:早期的网页都是使用静态网页的。所谓的静态网页就是在网页中不包含有需要在服务器端执行的代码。比如一个含有 JavaScript 特效的 HTML 网页或一个含有 flash 的 HTML 网页,它们虽然在网页呈现的效果会“动”,甚至还有运行代码,但是都是在客户端执行的代码,因而算不上动态页面。
好处:是服务器只需要简单地将网页 HTML 创建并发送给浏览器就行了。
缺点:是维护起来困难,不能使用数据库带来的好处。
动态网页:是网页中包含有需要在 Web 服务器执行的代码。当我们向 Web 服务器请求一个动态网页的时候,对于页面的 HTML 代码部分,Web 服务器直接传送给浏览器了,而对于需要在 Web 服务器执行的代码,自然是 Web 服务器执行该部分代码并将最终的执行结果也就是 HTML 代码传送给浏览器,因为浏览器不认识动态代码。也就是不论以何种语言编写的动态网页,到达浏览器的时候都是 HTML 代码。当然不同的编程语言编写的动态页,Web 服务器会以不同的方式运行这些代码,更专业一点的说法是 Web 服务器会交给不同的程序去执行这些代码,这些执行代码的程序我们称之为脚本引擎。Web 服务器将这些脚本引擎的执行结果发送给浏览器。
ASP(active server pages):主要功能是将脚本语言、HTML、组件和Web数据库访问功能有机地结合在一起,形成一个能在服务器端运行的应用程序,该应用程序可根据来自浏览器端的请求生成相应的HTML文档并回送给浏览器。使用ASP能够创建以HTML网页作为用户界面,并能够与数据库进行交互的Web应用程序。
优点:自动编译、带有动态内容的Web页、源代码不可访问
缺点:面向过程型的程序开发方法,让维护的难度提高很多,尤其是大型的ASP应用程序。解释型的VBScript或JScript语言,让性能无法完全发挥。扩展性由于其基础架构的不足而受限,虽然有COM元件可用,但开发一些特殊功能(如文件上传)时,没有来自内置的支持,需要寻求第三方控件商的控件。尤其是面向过程的软件开发思想。
1、代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
3、弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能。
Asp.net的出现:
开发思想的转变:面向过程——面向对象。
更好的语言支持:ASP.NET 使用新的 ADO.NET。ASP.NET 支持完整的 Visual Basic,而非 VBScript。ASP.NET 支持 C# (C sharp) 和 C++。ASP.NET 支持 JScript,和以前一样。
事件驱动机制:所有 Web 页面上的 ASP.NET 对象都能够发生可被 ASP.NET 代码处理的事件。可由代码处理的加载、点击和更改事件使得编程更轻松,更有条理。
开发方式的转变:ASP将用户界面层和应用程序逻辑层的代码混合写在一起,因此在维护和重用方面比较困难。ASP.NET将用户界面层和应用程序逻辑层的代码分离开,程序的复用性和维护性都得到了提高。
运行机制不同:ASP是解释型的编程框架,因没有事先编译,而是一边解释一边执行,故而页面的执行效率相对比较低。ASP.NET是编译型的编程框架,服务器上运行的是已经编译好的代码,因此可以利用早期绑定来实时编译,进而提高执行效率。
从具体的性能表现上说就是:在我们第一次打开 asp.net 网页的时候,相应的网页会被编译成 dll 文件,然后 JIT来运行这个 dll 文件。一旦这个文件再次发生变化,下次第一个请求这个网页时又会被编译成 dll 文件。并且为了防止文件名重名,生成的 dll 文件采用了随机命名。这也就是 asp.net 网页不同于 asp 或者 php 的地方:asp.net 页面在第一次请求的时候会被编译成 dll 文件,由 JIT 编译执行,因而 aspx 页面第一次被打开的时候比较慢,而以后执行的时候就会比较快,因为以后执行的时候除非修改了代码否则就没有必要重新生.dll 文件了;而 asp 和 php 网页每次运行的时候都会被解释执行,因而 asp.net 网站的运行速度要快。
运行环境的转变:(跨平台性)因为ASP .NET是基于通用语言的编译运行的程序,其实现完全依赖于虚拟机,所以它拥有跨平台性,ASP .NET构建的应用程序可以运行在几乎全部的平台上。