首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

.NET 後台開發實戰心得:編譯優化、ViewState 控制、例外分層與部署檢查清單

     編輯:關於C#

編譯與部署優化

  • 預編譯:aspnet_compiler 將 .aspx/.ascx 編譯為 DLL,部署時不含原始碼,啟動更快、體積更小(200KB → 28KB 實測)
  • 合併相關類別:同一繼承鏈、處理同一實體的類別放入同一組件,減少跨組件呼叫開銷
  • 命名空間規範:Company.Project.Layer.Module,避免百餘類別混淆

ViewState 與頁面生命週期

  • SmartNavigation:舊版 IE 專屬,已淘汰,勿用
  • 關鍵順序:Init → Load → Control Events → PreRender → Render;動態建立控制項必須在 CreateChildControls 或 Init 階段
  • ViewState 膨脹對策:EnableViewState="false" 針對無需回傳資料的控制項(GridView、Repeater 僅顯示)

例外處理分層策略

層級處理方式基底類別
資料存取層捕獲具體例外(SqlException),包裝為自訂 DataAccessException 拋出ApplicationException
業務邏輯層捕獲 DataAccessException,轉換為 BusinessRuleException 或領域例外ApplicationException
表現層統一捕獲 ApplicationException 顯示友善訊息;Exception 記錄日誌並顯示通用錯誤頁Exception

原則:框架例外繼承 System.Exception,應用例外繼承 ApplicationException,便於上層區分攔截。

常見陷阱避坑

  1. == vs Equals:參考型別 == 比較參考,Equals 比較值(字串已多載為值比較)
  2. string vs ToString():obj.ToString() 可能拋 NullReferenceException,用 Convert.ToString(obj) 或 obj?.ToString()
  3. Session 清理:Session.Remove(key) 移除單一,Session.Abandon() 棄用整個 Session
  4. 資料庫關鍵字與分隔符差異:SQL Server []、MySQL ``、Oracle "",參數化查詢統一用 @param / ?param
  5. 單引號注入風險:參數化查詢自動處理,拼接 SQL 絕對禁止

實用工具腳本

統一訊息輸出 Helper


public static string OutMessage(string[] args) {
    string msg = args.Length > 1 ? args[1] : args[0] switch {
        "0" => "操作失敗.", "1" => "操作成功.", _ => "操作結束."
    };
    var sb = new StringBuilder($"{msg}");
    if (args.Length > 2) {
        sb.Append($"
2秒後跳轉到{args[2]}"); sb.Append($""); sb.Append($"
點這裡直接跳轉"); } return sb.ToString(); }

Double 驗證正則


^([0-9]+)(\.[0-9]+)?([Ee][-+]?[0-9]+)?$

資料庫記錄檔壓縮


BACKUP LOG [DB] WITH NO_LOG;
DBCC SHRINKDATABASE([DB]);
ALTER DATABASE [DB] SET AUTO_SHRINK ON;

強制終止進程


ntsd -c q -p 

部署前檢查清單

  • [ ] 所有 try/catch/finally 正確釋放資源
  • [ ] 無硬編碼連線字串(使用 Web.config / appsettings.json)
  • [ ] 生產環境關閉 debug="true"、customErrors mode="Off"
  • [ ] 靜態資源啟用壓縮與快取標頭
  • [ ] 資料庫備份/還原腳本驗證通過
  • [ ] 服務帳戶權限最小化(資料庫唯讀/讀寫分離)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved