我们正在构建一个ASP.NET应用程序,并希望遵循最佳实践.一些最佳实践是:
服务器端代码:
使用catch块来捕获和记录低级错误.
使用Cache对象填充下拉列表等,我们不希望在底层数据/数据库中进行更改.
如果出现错误记录框架,请提供电子邮件警报以及记录错误.
HTML代码: - 不要编写内联CSS. - 将JavaScript代码(如果页面需要)放在页面末尾,除非页面需要加载时间操作.
现在谈到这一点,如果您已经有完整的清单,请分享这些最佳实践点吗?
我随着时间的推移学到了一些最好的实践,并在我的公司中使用...很多主要适用于WebForms而不是MVC.
不要直接在ASPX标记中编写.NET代码(除非是用于数据绑定,即Evals).如果您有一个代码,这会将页面的代码放在多个位置,并使代码更易于管理.将所有.NET代码放在代码隐藏中.
SessionPageStatePersister可以与ViewState结合使用,以使ViewState有用,而不会增加页面大小.使用新的SessionPageStatePersister覆盖Page的PageStatePersister会将所有ViewState数据存储在内存中,并且只会在客户端存储加密的密钥.
创建页面可以继承的BasePage,以便重用页面之间的公共代码.为您的页面创建一个MasterPage以进行可视继承.具有完全不同视觉样式的页面应使用不同的MasterPage.
在通过URL传入的每个WebForm上创建页面参数键名称的枚举,以设置强类型页面参数.这可以防止需要硬编码的页面参数键字符串及其可能的错误输入,以及允许从其他页面进行强类型参数访问.
使用ASP.NET缓存来缓存数据库中经常使用的信息.构建(或从另一个项目重用)一个包装ASP.NET缓存的通用缓存层.
在页面上使用"属性"包装ViewState对象,以避免在引用ViewState集合中的项目时出现拼写等方面的开发错误.
避免在ViewState中放置大对象和对象图,主要用于存储ID或非常简单的DTO对象.
使用SessionManager包装ASP.NET会话,以避免在引用Session中的项目时出现拼写等方面的开发错误.
在web.config中广泛使用applicationSettings键/值配置值 - 使用可用于轻松检索配置设置的类包装Configuration.ApplicationSettings,而无需记住web.config中的键.
避免在UI控件上设置显示属性的容易性,而是使用CSS样式和类 - 这将使您的样式更易于管理.
在应用程序中创建UserControl,以便在整个页面中重用常用的UI功能.例如,如果包含类别集合的下拉列表将在站点中的许多位置使用 - 创建一个CategoryPicker控件,该控件将在加载页面时将数据绑定到自身.
使用UserControls上的Properties设置默认值,页面之间的不同显示等.可以在UserControls上定义值类型属性,然后使用UserControls上的类级别属性在ASP.NET标记中设置.
使用ASP.NET验证控件执行简单验证,或使用CustomValidator执行复杂验证.
创建一个错误处理页面,可以在您的网站中发生未处理的异常时重定向到该页面.重定向可以通过Page中的Page_Error事件,Global.asax中的Application_Error事件或web.config中的部分进行.
处理使用高度动态数据驱动显示的页面时,请使用第三方(免费)DynamicControlsPlaceholder控件来简化在回发之间保存动态添加控件的状态所需的代码.
为您的所有asp.net页面创建一个基页.此页面将派生自System.Web.UI.Page,您可以将其放在YourApp.Web.UI中.让所有的asp.net页面都来自YourApp.Web.UI.Page类.这可以减少很多痛苦.
使用Application_OnError处理程序可以正常处理任何错误或异常.您应该记录关键异常,并将异常的详细信息以及客户端的日期时间和IP发送到管理员电子邮件ID.是的ELMAH肯定是要走的路.
使用ASP.NET主题.许多开发人员不使用它.使用它们 - 它们很棒.
使用MembershipProvider和RoleProvider.而不要使用内置ProfileProvider -他们都储存在普通的字符串.在执行R/W时,它会大大降低性能
使用Firebug进行客户端调试.尝试遵循Web应用程序的YSlow标准.对FireBug 使用YSlow扩展.
使用jQuery进行客户端脚本编写.
切勿在会话中存储用户身份验证信息,或者不使用会话来判断用户是否已登录.仅在会话中存储最少的必要信息.
看看PostSharp.可以提高代码的可维护性并提高工作效率.
永远不要在生产的调试配置下部署asp.net应用程序.在这里找出scottgu对此有何看法.
用户Web部署项目.它可以转换web.config部分并替换为生产服务器设置.它将所有已编译的代码隐藏类合并为一个单独的程序集,这是一个很大的问题.
使用无Cookie域来提供静态资源,如图像,脚本,样式等.每个客户端请求都与一大堆cookie一起发送,在提供图片或脚本时不需要cookie.因此,在无cookie的域上托管这些资源.
从服务器中缩小脚本,样式表和HTML响应.删除不必要的换行符和空格可以改善加载时间和带宽优化.
形式:
设置Page.Form.DefaultFocus
并Page.Form.DefaultButton
改善用户体验
Page.IsValid
在继续之前检查" 保存"按钮处理程序.
一般:
理解并实现" TRULY Understanding ViewState "一 文中的技巧
在页面事件中使用Page.IsPostBack可以阻止代码不必要地运行.
尽可能使用超链接而不是发布和使用Response.Redirect.
一个.理解并使用Response.Redirect的第二个参数(它"表示当前页面的执行是否应该终止")
正确使用Page Lifecycle.
在有意义的地方使用Per-Request缓存(HttpContext.Items)而不是Cache.
Web.Config中:
部署用
在web.config级别而不是页面级别(即@Register)注册控件.
主题:
使用主题时,也将静态图像放在主题中.
一个.不要直接从标记链接到图像,而是从主题中的皮肤文件或css文件链接到它们.
例如: