我爱Aspx >> Asp.Net >> 通过避免10 个常见 ASP.NET 缺陷使网站平稳运行Jeff Prosise
本文将讨论:
? 缓存和 Forms 身份验证
? 视图状态和会话状态
? 配置文件属性序列化
? 线程池饱和
? 模拟和设置配置文件
本文使用了下列技术:
.NET Framework、ASP.NET、Windows Server 2003
本页内容
LoadControl 和输出缓存
会话和输出缓存
Forms 身份验证票证生存期
视图状态:无声的性能杀手
SQL Server 会话状态:另一个性能杀手
未缓存的角色
配置文件属性序列化
线程池饱和
模拟和 ACL 授权
不要完全信赖它 — 请设置数据库的配置文件!
结论
ASP.NET 成功的其中一个原因在于它降低了 Web 开发人员的门槛。即便您不是计算机科学博士也可以编写 ASP.NET 代码。我在工作中遇到的许多 ASP.NET 开发人员都是自学成材的,他们在编写 C# 或 Visual Basic? 之前都在编写 Microsoft? Excel? 电子表格。现在,他们在编写 Web 应用程序,总的来说,他们所做的工作值得表扬。
但是与能力随之而来的还有责任,即使是经验丰富的 ASP.NET 开发人员也难免会出错。在多年的 ASP.NET 项目咨询工作中,我发现某些错误特别容易导致缺陷不断发生。其中某些错误会影响性能。其他错误会抑制可伸缩性。有些错误还会使开发团队耗费宝贵的时间来跟踪错误和意外的行为。
下面是会导致 ASP.NET 生产应用程序的发布过程中出现问题的 10 个缺陷以及可避免它们的方法。所有示例均来自我对真实的公司构建真实的 Web 应用程序的亲身体验,在某些情况下,我会通过介绍 ASP.NET 开发团队在开发过程中遇到的一些问题来提供相关的背景。
LoadControl 和输出缓存
极少有不使用用户控件的 ASP.NET 应用程序。在出现母版页之前,开发人员使用用户控件来提取公用内容,如页眉和页脚。即使在 ASP.NET 2.0 中,用户控件也提供了有效的方法来封装内容和行为以及将页面分为多个区域,这些区域的缓存能力可以独立于作为整体的页面进行控制(一种称为段缓存的特殊输出缓存形式)。
用户控件可以采用声明的方式加载,也可以强制加载。强制加载依赖于 Page.LoadControl,它实例化用户控件并返回控件引用。如果用户控件包含自定义类型的成员(例如,公共属性),则您可以转换该引用并从您的代码访问自定义成员。图 1 中的用户控件实现名为 BackColor 的属性。以下代码加载用户控件并向 BackColor 分配一个值:
protected void Page_Load(object sender, EventArgs e)
{
// 加载用户控件并将其添加到页面中
Control control = LoadControl("~/MyUserControl.ascx");
PlaceHolder1.Controls.Add(control);
// 设置其背景色
Ҷƪл˵?
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
ASP.NET Atlas 強力支援您期待已..[04-21]
在ASP.NET Atlas中调用Web Servi..[04-21]
文件压缩代码(为.Net2.0新增)[04-21]
ASP.NET 2.0+Atlas编写鼠标拖放程..[04-21]
ASP.NET2.0中Gridview中数据操作..[04-21]
ASP.NET 2.0中使用multiview控件[04-21]
ASP.NET 2.0中实现跨页面提交[04-21]
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
我的可爱的小外甥们小侄子们[04-21]
一个高中毕业生关于互联网创业的..[04-21]
BSP 模式的一些思考和结论[04-21]
RSS2.0中文规范详解及示例[04-21]
网易部落的rss弱智错误[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
雅虎搜虫大行动----快来抓毛毛虫..[04-21]
为什么XML文件的分析结果出现乱码..[04-21]