asp.NET特写
2024-07-10 12:56:26
供稿:网友
asp.net特写
创建动态web页面的新技术已经以clr服务为基础全部重新改写。到目前为止,所有.net提供的语言都可用于编写asp.net页面,但页面的扩展名和asp 3.0的不同。具体地说,简单web页面以“.aspx”为扩展名,web服务以“.asmx”为扩展名(来源于“assembly”),一种称为pagelet的asp.net页面可重用部件以“.aspc”为扩展名。
.net应用能够流畅地同时运行.asp和.aspx页面。旧式的asp页面将由asp.dll直接运行,但它不能利用clr的功能。
现在,.aspx页面不再解释执行,而是在第一次调用出现时被编译成msil代码,然后再以中间代码运行,就象j2ee环境下的jsp一样。一个合乎逻辑的结论是性能会有所提升,microsoft宣称它可以与visual basic 4升级到编译版本5时应用性能的提升程度相媲美。
除了理解vb.net引入的所有新概念之外,这些根本性的改变还要求对asp页面的编写方式作较大的改动。为了了解从asp迁移到asp.net所要做的工作,下面我们来分析一下主要改动之处。
这些改动分属三个层次:
api中的改动
页面结构的改动
vb script和vb.net之间的改动
asp.net只允许每个页面使用一种语言。在dna中,asp页面可以同时使用jscript和vb script;但asp.net不再允许这种用法。
在asp.net中,函数必须用html < script >标记包围,而且不允许把用于生成html代码的函数分割成多个部分。例如,asp.net不允许出现下面这种代码:
相反,我们必须代之以如下代码:
< script language="vb" runat=server >
function sayhello()
response.write ("< b >< i > ")
response.write (" hello ! ")
response.write ("< /i >< /b > ")
end function
< /script >
括起函数调用参数的括号现在是必需的。另外,有的兼容性问题可能源于所有asp.net的数组下标都从0开始,而在asp 3中有的从0开始,有的从1开始。
在vb.net中,默认情况下参数以值(byval)传递,而在当前的vb script中,参数默认以引用传递(byref)。最后,vb.net将不再支持默认值或关键词set、let。
虽然这些改动都不是重大的、根本性的,但如果要利用clr以及编译代码的优势就必须修改现有的代码,这些改动会占据开发者大量的时间。microsoft已经宣布,用于代码迁移的工具会随同.net平台一起发布,但从现在起就养成合适的编码习惯无疑是有益无害的。
至于com组件,asp.net将采用封装的形式使得原有的com组件仍旧能够运行,但这些com组件将运行在clr受管理的环境之外,而且受管理以及非受管理环境之间的切换会牺牲一定的性能。因此,很多用户可能会决定重新把com组件编写成com + 2.0。
asp.net引入了服务器端控件,它可能是asp.net吸引开发者使用它的一个重要原因。使用这些控件,asp.net页面能够利用可视或者非可视控件提供的如下高级服务:treeview(树形视图), listbox(列表框), calendar(日历),等等。所有这些控件都会分析调用它们的客户程序类型,然后生成合适的表现代码。一般地,web页面中的输入框使用客户端java script进行输入合法性验证,但如果浏览器不支持java script或者禁用了java script,用户输入验证就会转到服务器端。