吕丽萍,刘 雯
(濮阳职业技术学院,河南 濮阳 457000)
在一个系统的开发设计中,网站建设是其中重要的一环,ASP.NET动态网页技术,可简化开发操作,分离程序代码和网页内容,可分享资源,节约成本,相应的提高了系统开发的效率。下面从 ASP.NET的发展、特点以及其运行模式来分析ASP.NET技术在系统开发中的应用。
ASP第一个版本是 0.9测试版。它能将代码直接嵌入HTML,并且通过内置的组件实现强大功能,ActiveX Data Objects (ADO)使得建立动态页面变得简单、方便。到ASP2.0,内置的Microsoft Transaction Server(MTS)也使制做组件变得简单。
但ASP还存在许多缺陷:①组件部署和组态困难;②缺乏良好的开发模型及程序语言;③Session状态信息限于单机使用;④业务逻辑和页面逻辑混合。
为克服ASP的不足,Microsoft推出Active Server pages-ASP.NET。Microsoft.NET平台的基本思想是:用户将能控制信息的传送时间、方式和内容。计算机、设备和服务能相辅相成来提供更广泛的服务,而不是由用户提供唯一的集成。侧重点转移到计算机、设备和服务群组上,而不是连接互联网的单一网站或设备上。使其加强合作,提供更丰富、广泛的解决方案。企业可提供一种方式,允许用户将其服务和产品无缝嵌入到自己的电子构架中。
在编写代码方面可页面逻辑和业务逻辑分开,分离程序代码与显示内容,程序代码更简单,使网页更易编写。
允许使用编译式语言,具有较好的执行效率以及跨语言的兼容性。
ASP.NET提供很多Server Control,能在网页执行期间自动检测浏览器所支持的功能,并自动生成客户端浏览器可用的网页。可以只编写一份代码供不同的客户端浏览器使用。
能提供三种不同的登录验证方式:Windows、Passport和Cookie。也可运用Impersonation功能使用登录者权限执行程序代码或存取资源。
由于 ASP.NET的程序代码是编译过的,所以执行时会比ASP的直译方式快很多。另外,ASP.NET也提供快取(cache)的能力,有效地缩短了服务器的应答时间。
可直接把相关文件复制到目的计算机相应目录下,不需要考虑组件注册问题。
采用容易阅读的XML组态文件Web.Config,只将其放在Web应用程序相关目录中即可完成组态的操作。
使用ASP.NET,Session的状态可在不同计算机的不同进程中维护,来解决web Farm中session的维护问题。
能解决应用程序故障。针对内存泄漏,能自动重新启动进程以增进适用性。
可编译成MSIL(Microsoft Intermediate Language)的程序语言都能成为制作ASP.NET网页的语言,其中ASP.NET主要使用的三种程序语言为:Visual Basic.NET、C#、Java Script。
MSIL是介于高级程序语言及机器码之间的一种中介语言,在ASP.NET中,程序语言先编译成MSIL,然后再被编译成机器码执行。
介于MSIL和机器码之间的编译器被称为JIT(Just-In-Time)编译器,由于MSIL十分接近机器码,从MSIL编译成机器码后执行速度快,可以即时被编译成机器码在不同计算机中执行,见图1。
图1 ASP.NET在不同计算机上的编译方法
这样MSIL便具有了跨平台的特性。相对于ASP的运作模式,ASP.NET多一次编译工作。ASP.NET网页第一次被浏览要经过两次编译,第一次编译速度慢于ASP,第二次编译速度优于ASP,即ASP.NET两次编译执行总时间要大于ASP编译执行时间,所以速度比 ASP网页慢,但第一次被浏览后,MSIL被存储下来,所以同一网页第二次被浏览时,只需花费从MSIL编译到机器码后再执行的时间,结果就比ASP网页要快很多。
用C#、VisualBasic.NET等.NET程序语言编写好程序代码后,便可用.NET提供的编译器编译程序,以产生EXE或DLL文件。但此时所编译出的程序是中间语言 IL(Intermediate Language),并非 CPU 可以执行的机器码。CLR(Common Language Runtime)的Class Loader在执行时,会将IL程序代码载入内存,然后再通过 JIT(Just-In-Time)的方式编译成此平台可执行的程序。因此,无论制作者使用哪种程序语言,网页都可以将组件的源代码和使用组件网页的源代码一起编译,直接使用这些组件,从而达到节省成本、分享资源的目的。
1 [美]G..AndrewDuthie著. ASP.NET程序设计.北京:清华大学出版社,2002:23~28
2 Lloyd D. Integrating reporting services into ASP.NET. Dr Dows Journal, v29, Fwbruary, 2005:33~68