asp.net编程中的十大技巧

避坑指南:Windows下OpenCV摄像头索引混乱问题的3种解决之道 本文详细解析了Windows下OpenCV摄像头索引混乱问题的3种解决方案,包括GUID查询法、DirectShow接口集成和注册表固化技术。针对工业视觉和智能监控场景,提供实战代码和性能优化建议,帮助开发者稳定识别多路摄像头设备,有效解决VideoCapture接口的索引漂移问题。 阅读详情
在本篇文件中,为大家整理了编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。 



1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。 



.NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用Visual Studio .NET作为集成开发环境。但使用了Visual Studio .NET,我们可以在Windows文件管理器中看到文件,或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。 

使用Visual Studio .NET作为集成开发环境有许多好处,其中最显著的好处是它极大地提高了生产效率。使用Visual Studio. NET,我们能够在付出较小代价的情况下更快地开发软件。作为集成开发环境一部分的IntelliSense提供自动的代码完成、在输入方法或函数时提供动态帮助、语法错误的实时提示,以及其他能够提高生产效率的功能。 

象其他复杂的工具那样,在学会如何充分发挥它的作用和掌握其“习性”前,Visual Studio .NET也会使我们产生一种挫折感。有时,它象一个难以了解的黑盒子,会生成大量的文件和许多无用的代码。 

Visual Studio .NET的一个功能是,无论是类、控件或表单中的对象,它都能够为新对象提供缺省名字。例如,如果我们创建了一个新的ASP.NET Web Application,其缺省的名字将是WebApplication1。我们可以在“新工程”对话框中方便地改变该应用的名字,但同时改变的只是该应用程序的名字空间的名字及其所在的虚拟目录,源代码文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs(C#工程)或WebForm1.aspx.vb(VB.NET工程)。 



我们可以在方案浏览器中改变ASPX和代码使用的文件名字,但Web页类的名字仍然将是WebForm1。如果在该Web表单上生成一个按钮,其缺省的名字将是Button1。事实上,所有控件的名字都是由控件的类型和数字组成的。 

我们能够,也应该将应用程序中所有的表单和控件的名字都修改成有意义的名字。对于较小的演示性程序而言,缺省的名字还能够胜任,但如果应用程序由多个表单,每个表单上有许多按钮和标签时,象frmStartup、frmDataEntry和frmReports这样的表单名就比Form1、Form2和Form3这样的名字更易于理解和维护。 

如果表单上控件要在代码的其他地方引用,使它有一个有意义的名字就更重要了。btnOK、btnCancel和btnPrint这样的名字使看代码的人更容易理解,因而,也比名字为Button1、Button2、Button3这样的控件更容易维护。 

修改一个工程中所有文件中出现的一个名字的一个好方法是,在Visual Studio .NET菜单中依次选择“编辑”->“发现和替换”->“替换”命令。 

在看二周前编写的代码时,我们经常就象第一次见到这些代码一样,因此使它们有一个有助于我们理解其含义的名字是十分有必要的。 





2、即使不使用Visual Studio .NET进行编程,使用代码支持文件也有利于提高应用程序的性能 



在Web应用程序、Web服务或Web控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代码支持文件。代码支持文件使工程具有更好的组织、模块性,更适合多人组成的开发团队。另外,它还会带来性能的提高。 

代码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL文件,有时也可以是EXE文件。该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时,可以立即得到它。 

如果代码是包含在<script>标记中或ASPX文件代码中,它仍然会被编译成一个Web页类。在这种情况下,每当该网页在应用程序对话中第一次加载时,都需要重新进行编译,被编译的类就会驻留在内存中。每当计算机启动、IIS停止、重新启动或者源代码、配置文件改变时,该文件必须重新编译。尽管不大,但这样引起的性能损耗也是相当可观的。 





3、尽量减少表单回送 



每当点击Web网页上的Button、LinkButton或ImageButton控件时,表单就会被发送到服务器上。如果控件的AutoPostBack属性被设置为true,如果CheckBox、CheckBoxList等控件的状态被改变后,也会使表单会发送回服务器。 

每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码。把网页的初始化代码放在这里是最合适不过的了。我们经常会希望在每次加载网页时执行一些代码,而希望只有在网页第一次加载时执行另一些代码,甚至希望一些代码在除首次加载外的每次加载时执行。 

可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。通过测试,可以在任意时候执行指定的代码。下面是相关的C#代码: 

protected void Page_Load(Object sender, EventArgs e) 

{ 

// 网页每次加载时,执行的一些操作 

if (!IsPostBack) 

{ 

// 网页第一次加载时执行的操作 

} 

else 

{ 

// 回送时执行的操作 

} 



// 网页每次加载时执行的操作 

} 

我们希望尽量不引起回送(每次回送都会要求服务器进行一系列的操作),即使引起回送后。也希望能够执行尽量少的操作。大规模、浪费时间的操作(例如数据库查找)尤其应当避免,因为它们能够延长应用程序的响应时间。 





4、使用StringBuilder类 



字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder类就是一种比较好的选择了。 

下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作;第二次使用了StringBuilder类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号: 



<%@ Page Language="C#" %> 



<script runat="server"> 

void Page_Load(Object Source, EventArgs E) 

{ 

int intLimit = 10000; 

DateTime startTime; 

DateTime endTime; 

TimeSpan elapsedTime; 

string strSub; 

string strWhole = ""; 



// 首先执行字符串连接操作 

startTime = DateTime.Now; 

for (int i=0; i < intLimit; i++) 

{ 

strSub = i.ToString(); 

strWhole = strWhole + " " + strSub; 

} 

endTime = DateTime.Now; 

elapsedTime = endTime - startTime; 

lblConcat.Text = elapsedTime.ToString(); 

// lblConcatString.Text = strWhole; 



// 使用stringBuilder类进行同样的操作 

startTime = DateTime.Now; 

StringBuilder sb = new StringBuilder(); 

for (int i=0; i < intLimit; i++) 

{ 

strSub = i.ToString(); 

sb.Append(" "); 

sb.Append(strSub); 

} 

endTime = DateTime.Now; 

elapsedTime = endTime - startTime; 

lblBuild.Text = elapsedTime.ToString(); 

// lblBuildString.Text = sb.ToString(); 

} 



</script> 



<html> 

<body> 

<form runat="server"> 



<h1>String Concatenation Benchmark</h1> 



Concatenation: 

<asp:Label 

id="lblConcat" 

runat="server"/> 



<br/> 



<asp:Label 

id="lblConcatString" 

runat="server"/> 



<br/> 

<br/> 



StringBuilder: 

<asp:Label 

id="lblBuild" 

runat="server"/> 



<br/> 



<asp:Label 

id="lblBuildString" 

runat="server"/> 



</form> 

</body> 

</html> 

二种方式的差别是相当大的:使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍。比较的结果如下所示: 

(图:picture01) 





5、只在必要时使用服务器端控件 



ASP.NET中新引入了一种在服务器端运行的被称作Web Server Controls的控件,在代码中,它们经常通过下面的语法被说明: 



<asp:TextBox id="txtLastName" size="40" runat="server" /> 

它们有时也被称作ASP控件。服务器端控件是由runat属性指示的,它的值总是“server”。 

通过添加runat属性,一般的HTML控件可以被很方便地转换到服务器端运行,下面是一个简单的例子: 



<input type="text" id="txtLastName" size="40" runat="server" /> 

可以通过id属性中指定的名字,我们可以引用程序中的控件,可以通过编程的方式设置属性和获得值,因此,服务器端处理方式有较大的灵活性。 



这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外,除非控件、网页或应用程序明确地禁止view state,控件的状态是包含在view state的隐藏域中,并在每次回送中都会被传递,这会引起严重的性能下降。 

在这方面的一个很好的例子是,网页上控件表格的应用,如果不需要在代码中引用表格中的元素,则使用无需进行服务器端处理的HTML表格。我们仍然可以在HTML表格单元中放置服务器控件,并在代码中引用服务器控件。如果需要引用任意的表格元素,例如指定的单元,则整个表格必须是服务器控件。 





6. HyperLink控件、LinkButton控件的差别 



对于Web访问者而言,HyperLink、LinkButton控件是一样的,但它们在功能方面仍然有较大的差异。 

当用户点击控件时,HyperLink控件会立即将用户“导航”到目标URL,表件不会回送到服务器上。LinkButton控件则首先将表件发回到服务器,然后将用户导航到目标URL。如果在“到达”目标URL之前需要进行服务器端处理,则使用LinkButton控件;如果无需进行服务器端处理,则可以使用HyperLink控件。 





7、注释代码 



这一技巧并不是针对ASP.NET的,但它是一个良好的编程习惯。 

注释不仅仅应当说明代码会执行什么操作,还应当注明原因。例如,不要仅仅在注释中说明是在遍历数组,而是要说明遍历数组是根据某一算法计算一个值,除非算法是相当简单的,否则还应当对算法进行简要的说明。 

.NET工程中的不同的编程语言都有各自不同的注释符号,下面是一个简要的说明: 

HTML <!-- 注释 --> 

javascript // 注释 

VBScript ’ 注释 

VB.NET ’ 注释 

C# // 注释 

/* 多行内容 

的注释 

*/ 

SQL -- 注释 



在服务器控件的开始和结束标记中没有注释符号,但服务器能够忽略掉所有它不能识别的属性,因此我们能够通过使用没有定义的属性来插入注释。下面是一个例子: 



<asp:TextBox 

id="txtLastName" 

size="40" 

comment="这是我的注释" 

runat="server" /> 

在Visual Studio .NET中对源代码进行注释非常简单。高亮度显示需要注释的行,然后按Ctrl+K+C组合键添加注释。要删除注释,只需高亮度显示被注释的代码,并按下Ctrl+K+U组合键。 

在C#工程中,我们还可以通过在每行的开始处使用///输入XML注释小节。在注释小节中,我们可以使用下面的XML标记组织注释: 

<summary></summary> 

<remarks></remarks > 

<param></param> 

<returns></returns> 

<newpara></newpara> 

要在Visual Studio .NET中查看这些XML注释的格式化的报告,我们可以首先选择“工具”菜单项,然后选择“建立注释Web网页”菜单项。 





8、使用trace方法和trace属性记录Page目录中网页的执行情况 



调试程序的一种古老的技术是在程序中的关健点插入输出语句,通常情况下,输出信息中会包含重要变量的值,相关信息可以输出到屏幕、日志文件或者数据库。 

在ASP.NET中,通过使用Page命令中的trace属性,这种调试技术的使用更简单了。Page命令是ASPX文件开始处的一行代码,它提供编译器的指示。Page命令中包含一个或多个属性,向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。 

Page命令中的属性之一是trace,其值可能是true或false,下面是一个典型的Page命令,其中的trace属性的值是true: 



<%@ Page language="c#" trace="true" %> 



如果trace属性的值设置为true,由ASPX文件生成的Web页就会显示出来,除了网页本身外,关于该页的大量其他信息也会显示出来。这些信息以下面小节的形式显示在一张表格中: 

·Request细节 提供Session ID、请求时间和请求的状态码。 

·Trace Information 包含跟踪日志、网页生命周期中按时间先后顺序各个步骤的列表。另外,也可以向其中添加定制信息。 

·控件树 以一种分层次的方式列出网页上的所有控件,包括每个控件以字节计算的大小。 

·Cookies集合 列出该网页创建的所有Cookie。 

·头部集合 HTTP头部以及它们的值。 

·Server变量 与该网页相关的Server环境变量。 



包含在Trace Information小节中的跟踪日志是最有用的,在这里我们可以插入自己的跟踪命令。trace类中有2个方法能够在跟踪日志中插入命令:Trace.Write和Trace.Warn,除了Trace.Warn命令用红色字体显示、Trace.Write命令用黑色字体显示外,它们是相同的。下面是跟踪日志的一个屏幕快照,其中包含有几个Trace.Warn命令。 



跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个代码中插入Trace.Write和Trace.Warn语句,而在最终交付应用程序时,可以通过改变Page命令中trace属性的值,禁止这些命令起作用,而无需在部署应用软件前删除这些输出语句。 





9、使用存储过程 



微软公司的SQL Server和其他现代关系数据库都使用SQL命令定义和处理查询。一个SQL语句或一系列SQL语句提交给SQL Server,SQL Server会对命令进行解析,然后创建一个查询计划并对它进行优化,然后执行该查询计划,这都需要大量的时间。 

存储过程是一系列被查询处理器预解析和优化的SQL命令,这些命令会被存储起来,可以得到快速地执行。存储过程也被称作sprocs,它可以接收输入参数,使一个单一的存储过程能够处理较大范围的特定的查询。 

因为sprocs是预先被解析的,对于复杂的查询更显得重要,其查询计划是预先优化的,因此调用查询过程比执行相同功能的SQL语句速度要快得多。 





10、使用.NET命令行 



.NET命令行工具在命令提示符窗口中运行。为了使命令能够执行,它必须驻留在命令提示符的当前目录中,或通过设置PATH环境变量。 

.NET SDK在“启动”菜单上安装一个菜单项,该菜单项能够打开一个正确设置了PATH环境变量的命令提示符窗口。我们可以通过依次点击“开始”->“程序”->“Microsoft Visual Studio .NET”->“Visual Studio .NET工具”->“Visual Studio .NET命令提示符”,启动命令提示符窗口。 

通过在将该菜单项从菜单上拖到桌面上时,同时按Ctrl+C键,就可以将该菜单项的快捷方式拷贝到桌面上,使用起来会非常方便。
华为eNSP实战:手把手教你配置DHCP全局地址池(含AP固定IP分配) 本文通过华为eNSP模拟器,详细演示了如何配置DHCP全局地址池,为不同业务VLAN动态分配IP地址,并重点讲解了如何通过MAC地址绑定为接入点(AP)分配固定IP。文章涵盖了从拓扑设计、基础网络搭建到地址池精细配置、验证测试及常见故障排查的全流程,是网络工程师掌握企业级DHCP部署与AP管理的实用指南。 阅读详情

相关推荐

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1435

【ASP.NET Core 基础知识】--环境设置

NET Core SDK(Software Development Kit)是Microsoft推出的一个开源跨平台框架,用于开发和部署.NET应用程序。它是.NET Core平台的核心组件之一,为开发者提供了在多个操作系统上构建高性能、可扩展、跨平台的应用程序的能力。.NET Core SDK设计用于在不同操作系统上运行,包括Windows、macOS和Linux。这使得开发者能够在各种环境中构建、测试和部署应用程序,而无需担心平台兼容性问题。

喵叔 3366

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

.net环境变量 的设置

昨天读《C#高级编程第六版》的时侯 讲到 使用csc.exe 编译器的时候 需要设置一下环境变量 如果没有设置环境变量有两种解决办法 第一种方法:在命令行上运行批处理文件%Microsoft VisualStudio 2008%\Common7\Tools\vcvars32.bat 其中%Microsoft VisualStudio 2008% 是安装Visual Studio 2...

weixin_30446197的博客 654

【NAS系统】DSM7.2部署SVN服务

早期的群晖版本可以在套件中心找到SVN Server直接安装,然后配置仓库和用户。但‌2提到DSM7.0之后套件中心没有SVN了,得用Docker。

qq_38350004的博客 4848

基因家族Motif 分析

MEME

hgz2020的博客 6317

.NET Core 环境配置与工具安装

NET Core 是一个开源、跨平台的开发框架,由微软主导开发。它允许开发人员构建高性能、可扩展的应用程序,支持 Windows、macOS 和 Linux 等多种操作系统。随着微服务架构和云原生应用的普及,.NET Core 已成为许多开发者的首选。通过上述步骤,您已经成功配置了 .NET Core 开发环境,并安装了所需的开发工具。无论您是在 Windows、macOS 还是 Linux 上开发,.NET Core 都能够为您提供一个强大而灵活的平台。

hy_4377的博客 3998

【gcc】跨版本兼容实战:高版本编译程序在低版本glibc环境下的部署方案

本文针对高版本gcc编译的程序在低版本glibc环境下部署的兼容性问题,提供了四种实战解决方案:静态编译的局限性、容器化部署的优雅方案、使用Devtoolset工具链的官方支持,以及最通用灵活的打包依赖SO发布方案。重点剖析了通过设置RPATH和Interpreter或使用patchelf工具,实现程序与自带库的独立部署,有效解决glibc版本鸿沟。

weixin_29237635的博客 362

ASP.NET Core Web API 开发实战指南

本文提供了一份完整的ASP.NET Core WebAPI开发教程,涵盖从环境搭建到部署运维的全流程。内容包括:开发环境配置(.NET SDK安装和IDE设置)、项目创建与结构设计、数据模型定义与数据库配置(使用Entity Framework Core)、控制器开发与路由规则设定、数据访问层实现(支持EF Core和Dapper两种方案)、业务逻辑编写、测试调试方法(Postman使用与常见问题解决)以及多种部署方案(IIS/Linux/云平台)和监控日志管理方案。

caifox的博客 1719

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7891

航空电子系统标准全景图:ARP4754A、ARP4761、DO-178C、DO-254 的协同作用

通过 ARP4754A、ARP4761、DO-178C 和 DO-254 的相互配合,确保航空电子系统的安全性和功能性在开发过程中得到充分保障。每一个文件在不同层面发挥作用,共同构成了一个完整的、系统的开发和验证框架,确保航空电子设备达到适航要求。这些标准不仅帮助开发人员有条理地开发复杂的航空系统,还确保所有系统组件(软件和硬件)在整个生命周期内都能满足最严格的安全和可靠性要求。

qq_41854911的博客 1812

学习笔记34(asp.net编程中的十大技巧)

在本篇文件中,为大家整理了编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。.NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPa...

weiyinchao88 130

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ASP.NET编程中的十大技巧

ASP.NET编程中的十大技巧[日期:2005-02-06]来源:csdn  作者:[字体:大 中 小] 在本篇文件中,我们将讨论编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。 1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省

平凡的心 1105

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ASP.NET编程的十大技巧

ASP.NET编程的十大技巧 1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字 .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿 意,我们并非一定要使用Visual Studio .NET作为集成开发...

dianzudi1839的博客 109
上一篇: asp.net面试必考题
下一篇: asp.net动态生成验证码
KimoGao
博客等级 码龄16年 180粉丝 82原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值