我们正在构建一个ASP.NET应用程序,并希望遵循最佳实践。一些最佳实践是:
服务器端代码:
HTML代码: - 不要编写内联CSS。 - 在页面末尾放置JavaScript代码(如果页面需要),除非页面需要加载时间操作。
现在已经到了这一点,如果您已经有完整的清单,请分享这些最佳实践点吗?
答案 0 :(得分:26)
我随着时间的推移学到了一些最好的实践,并且已经在我公司使用了......很多主要适用于WebForms而不是MVC。
答案 1 :(得分:19)
为所有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 。可以提高代码的可维护性并提高工作效率。
用户 Web Deployment projects 。它可以转换web.config部分并替换为生产服务器设置。它将所有已编译的代码隐藏类合并为一个单独的程序集,这是一个很好的。
使用无Cookie域来提供静态资源,如图片,脚本,样式等。每个客户端请求都与一大堆Cookie一起发送,您在服务时不需要Cookie图片或脚本。因此,将这些资源托管在无cookie的域中。
从服务器缩小脚本,样式表和HTML响应。删除不必要的换行符和空格可以改善加载时间和带宽优化。
答案 2 :(得分:7)
<强>表单:强>
设置Page.Form.DefaultFocus
和Page.Form.DefaultButton
以改善用户体验
在继续之前检查“保存”按钮处理程序中的Page.IsValid
。
常规强>
理解并实施文章“TRULY Understanding ViewState”中的技术
在页面事件中使用Page.IsPostBack来阻止代码不必要地运行。
尽可能使用超链接而不是发布和使用Response.Redirect。
一个。理解并使用Response.Redirect的第二个参数(它“表示当前页面的执行是否应该终止”)
正确使用Page Lifecycle。
在有意义的地方使用Per-Request cache(HttpContext.Items)代替Cache。
<强> Web.Config中:强>
使用<compilation debug="false">
在web.config level而不是page level(即@Register)注册您的控件。
<强>主题:强>
使用主题时,也将静态图像放在主题中。
一个。不要直接从标记链接到图像,而是从主题中的皮肤文件或css文件链接到它们。
例如:<asp:Image SkinID="MyImage" runat="server" ImageUrl="Images/myImage.gif" />
答案 3 :(得分:4)
我不认为try / catch块总是适合低级方法。当然,您希望在遇到任何错误之前捕获(并记录/警告,甚至更好!)任何错误。但是,对于低级方法来说,通常更好地将其错误提升到更高级别。我在低级别错误捕获中遇到的问题是它经常让更大的操作继续,但是不太正确的结果会呈现给用户或保存到数据库中,从长远来看,它要困难得多修理。如果你不想对错误“做任何事情”,直到它升级到更高的水平,那么在你的代码中添加一个try / catch在你的代码中也会有很多混乱。
答案 4 :(得分:2)
答案 5 :(得分:1)
如果您有兴趣追求成为更好,更高效的开发人员的旅程,我会推荐几本书。这些书与语言无关,正如您可以通过用户评论看到的,非常有用。
如果您正在寻找特定于.NET的书籍,您可能会欣赏以下书籍:
Microsoft Application Architecture Guide [在线以外免费提供打印格式]
答案 6 :(得分:1)
<强> ASP.NET 强>
Server.Transfer
代替Response.Redirect
。<强>设计强>