首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构建ASP.NET应用程序-最佳实践

构建ASP.NET应用程序-最佳实践
EN

Stack Overflow用户
提问于 2009-11-06 16:27:46
回答 7查看 8.7K关注 0票数 18

我们正在构建一个ASP.NET应用程序,并希望遵循最佳实践。一些最佳做法是:

服务器端代码:

  • 使用catch块也可以捕获和记录低级别错误。
  • 使用Cache对象填充下拉列表等,这样我们就不会期望底层数据/数据库中的更改。
  • 如果出现错误日志记录框架,请在记录错误的同时提供电子邮件通知。

HTML代码:-不要写内联CSS。-将JavaScript代码(如果页面需要的话)放在页面的末尾,除非页面需要它来执行加载时间操作。

现在说到这里,如果你已经有了一个完整的清单,你能分享一下这些最佳实践要点吗?

EN

回答 7

Stack Overflow用户

发布于 2009-11-06 16:44:21

随着时间的推移,我学到并编写在我的company...many中使用的一些最佳实践主要适用于WebForms而不是MVC。

  • 不要在您的ASPX标记中直接编写.NET代码(除非是用于数据绑定,即Evals)。如果后面有代码,这会将页面的代码放置在多个地方,从而降低代码的可管理性。将所有.NET代码放入代码隐藏中。
  • SessionPageStatePersister可以与ViewState一起使用,使ViewState在不增加页面大小的情况下很有用。用新的PageStatePersister重写页面的SessionPageStatePersister将在内存中存储所有ViewState数据,并且只在客户端存储加密密钥。
  • 创建一个页面可以继承的BasePage,以便重用页面之间的通用代码。为您的页面创建一个用于视觉继承的MasterPage。视觉样式迥异的页面应该使用不同的MasterPage。
  • 在通过URL传入的每个WebForm上创建页面参数键名的枚举,以设置强类型的页面参数。这防止了硬编码页面参数键字符串及其可能的错误类型的需要,以及允许其他页面进行强类型参数访问的需要。
  • 利用ASP.NET缓存来缓存数据库中经常使用的信息。构建(或从另一个项目中重用)一个将包装ASP.NET缓存的通用缓存层。
  • 在页面上使用属性包装ViewState对象,以避免在引用来自ViewState集合的项时出现拼写等方面的开发错误。
  • 避免在ViewState中放置大型对象和对象图,主要用于存储ID或非常简单的DTO对象。
  • 将ASP.NET会话包装为SessionManager,以避免在引用会话中的项时出现拼写等方面的开发错误。
  • 广泛使用web.config中的web.config键/值配置值--用一个类包装Configuration.ApplicationSettings,该类可以方便地检索配置设置,而不必记住来自web.config的键。
  • 避免在UI控件上设置显示属性的简单性,而使用CSS样式和类-这将使您的样式更易于管理。
  • 在应用程序中创建UserControls,以便在整个页面中重用通用UI功能。例如,如果包含类别集合的下拉列表将在站点的许多地方使用--创建一个CategoryPicker控件,该控件将在加载页面时绑定自己。
  • 使用UserControls上的属性设置默认值、页面间的不同显示等。值类型属性可以在UserControls上定义,然后通过在UserControls上使用类级属性在ASP.NET标记中设置。
  • 使用ASP.NET验证控件执行简单验证,或使用CustomValidator执行复杂验证。
  • 创建一个可重定向到网站内发生未处理异常时的错误处理页面。重定向可以通过页面中的Page_Error事件、Global.asax中的Application_Error事件或web.config中的部分进行。
  • 当使用使用高度动态数据驱动显示的页面时,使用第三方(免费) DynamicControlsPlaceholder控件来简化保存回发之间动态添加控件的状态所需的代码。
票数 26
EN

Stack Overflow用户

发布于 2009-11-06 16:38:36

  1. 为所有asp.net页面创建一个基页。此页面将从System.Web.UI.Page派生,您可以将其放在YourApp.Web.UI中。让您的所有asp.net页面从YourApp.Web.UI.Page类中删除。这可以减轻很多痛苦。
  2. 使用Application_OnError处理程序来优雅地处理任何错误或异常。您应该记录关键异常,并将异常的详细信息以及客户端的日期、时间和IP发送到管理电子邮件id。是的,ELMAH是很好的选择。
  3. 使用ASP.NET主题。许多开发人员不使用它。一定要使用它们--它们是一笔很大的交易。
  4. 使用MembershipProvider和RoleProvider从不使用内置的ProfileProvider --它们将所有东西都存储在普通字符串中。在执行R/W时,它将大大减慢表演速度。
  5. 使用火虫进行客户端调试.尝试遵循YSlow的web应用标准。对YSlow使用FireBug扩展。
  6. 使用jQuery进行客户端脚本编写。
  7. 从不在会话中存储用户身份验证信息,也不使用会话判断用户是否登录。只在会话中存储最低限度的必要信息。
  8. 看看PostSharp。可以提高代码的可维护性,并使您更有效率。
  9. 从未在产品上在调试配置下部署asp.net应用程序。找出这里斯科特古对此有什么看法。
  10. 用户Web部署项目。它可以转换web.config部分并替换为生产服务器集。它将把所有编译后的代码隐藏类合并成一个程序集,这是一个很大的问题。
  11. 使用Cookie无域来提供静态资源,如图像、脚本、样式等。每个客户端请求都与大量Cookie一起发送,您在提供图片或脚本时不需要Cookie。所以把这些资源存放在没有cookie的域上。
  12. 缩小了来自服务器的脚本、样式表和HTML 。消除不必要的换行和空白可以改善加载时间和带宽优化.
票数 19
EN

Stack Overflow用户

发布于 2009-11-06 17:10:29

表单:

  1. 设置Page.Form.DefaultFocusPage.Form.DefaultButton以改善用户体验
  2. 在继续之前,请检查保存按钮处理程序中的Page.IsValid

General:

  1. 理解并实现"真正理解ViewState“一文中的技术
  2. 在页面事件中使用Page.IsPostBack来阻止代码不必要地运行。
  3. 尽可能使用超链接而不是张贴和使用Response.Redirect。 理解并使用Response.Redirect的第二个参数(它“指示当前页面的执行是否应该终止”)
  4. 正确使用页面生命周期
  5. 在有意义的地方使用每个请求缓存 (HttpContext.Items)而不是缓存。

Web.Config:

  1. 使用<compilation debug="false">部署
  2. web.config水平而不是页级 (即@页级)注册您的控件。

主题:

  1. 在使用主题时,也要将静态图像放在主题中。 不要直接从标记链接到图像,而是从主题中的皮肤文件或css文件链接到它们。 例:<asp:Image SkinID="MyImage" runat="server" ImageUrl="Images/myImage.gif" />
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1688696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档