选择ASP.NET代码编写策略
2024-07-10 12:56:35
供稿:网友
本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。开发社区包括.net framework的内容,其中最有特色的是asp.net的。然而,这里也包含大量的有关legacy asp代码及其开发人员的讨论。
很多asp开发人员并非真正经过培训的开发者,他们往往只是html代码编写者,他们处理的asp模型很不合理。这些开发人员通常只知道将他们的asp常规思维应用到asp.net环境中,而这个过程他们却不知做出相应的选择。
以往的缺点
我特别喜欢asp.net所具有的稳定性,尤其是当我在asp开发过程处于迷惑不解的时候。我的迷惑不解来自asp的本质,即所有操作都集中在同一个bucket,也就是说,一个asp页既包含源代码,也包含html。在一个web页中放置java script也是类似的,这通常称为内联(inline),但开发人员通常将其称为意大利面程序码(spaghetti code).
在一个开发项目中,计划和开发过程的结合没有很好地与项目任务匹配,而出现这种情况通常为web用户界面设计者和程序开发者。允许人员查看asp代码往往使得程序开发者感到不安,并且使人员感到迷乱。一个比较可行的方法是将设计过程分离化。
分离并改进
当提及.net的优点时,微软都会吹嘘面向对象程序开发(oop),而oop特点在asp.net中更为显著。它通过一个背后代码文件(codebehind file)的方式允许源代码从web markup分离开来。web markup存储在一个.aspx文件中,并且源代码(vb.net,c#等)存放在一个附带的代码文件中。codebehind文件名取决于使用的开发语言,但如果我们利用vb.net来建立一个名为testpage的asp.net页,以下的文件名是合法的:
testpage.aspx:web markup,java script等。
testpage.aspx.vb:包含vb.net源代码的文件。
如果选用的是c#.net语言,codebehind文件将被称为testpage.aspx.cs。codebehind文件包含的类是来源于位于system.ui.web空间名称的page类。codebehind文件与@page标志的aspx文件及其附带文件inherits属性进行链接。inherits属性指向codebehind文件和类的名称,而这一指向不需要文件扩展。
<%@ page language="c#" inherits="testpage" %>
语言的特性表示了页面的语言──并不是codebehind。页面可以通过内联(inline)代码使用一种语言和在codebehind文件中使用的另一种语言。inherits属性指定了页面的基本类(codebehind类)。
在缺省情况下,codebehind文件使用page类作为其基本类,但也可以使用普通的类。这就提供了建立程序的主控页面(master pages)的可能性。
以visual studio .net方式处理
使用codebehind文件是visual studio .net开发环境中的默认特性。例如,在asp.net页中建立的@page标志具有以下的语法:
<%@ page language="c#" codebehind="testpage.aspx.cs"
autoeventwireup="false" inherits="testpage" %>
以上代码包含两个额外的特性:
codebehind属性指向页面的codebehind文件。这一属性只适用于visual studio .net。
autoeventwireup属性表示标准事件是否自动地连接到代码中的任意句柄。visual studio .net在处理事件建立时将这一属性设置为false。
visual studio .net将codebehind文件编译成为一个可执行文件,这一可执行文件可使用于web程序的bin目录中。这就加快了页面的载入,因为当网页首次被请求时无需再被编译。另一方面,一旦第一个客户端请示时,内联(inline)代码即被编译。
做出你自己的选择
oop语法是分离源代码和用户界面部分的支撑者,但这也并非意味着它能适用于所有情况。分离方法依赖于不同因素(包括开发时间和专业技术),但拥有所有可能的知识可以更容易地做出决定。自从引入asp.net的介绍之后,关于内联(inline)和背后代码(codebehind)的话题一直处于激烈的讨论中。