天天看點

ASP.NET 程式設計規範

規範設計過程

即使是一兩個人的項目也不要進行手工作方式的程式設計方式。必須進行需求分析,系統分析,技術分析,系統設計,資料庫設計,頁面設計,系統實作,系統測試,系統釋出與布署。并且在每個階段都要遵循相應的規範,送出相應的項目文檔。這些文檔包括:

開發文檔:《功能要求》、《投标方案》、《需求分析》、《技術分析》、《系統分析》、《資料庫文檔》、《功能函數文檔》、《界面文檔》、《編譯手冊》、《QA文檔》、《項目總結》等。

産品文檔:《産品簡介》、《産品示範》、《疑問解答》、《功能介紹》、 《技術白皮書》、《評測報告》、《安裝手冊》、《使用手冊》、《維護手冊》、 《使用者報告》、《銷售教育訓練》等。

規範系統結構

層次與子產品的劃分

ASP.NET應用程式的結構從橫向分可分為多個邏輯層,從縱向分可多個子產品

ASP.NET應用程式的N個邏輯層,在實際應用中一般分為三個或四個邏輯層。

三個邏輯層即

• 使用者服務層 (USL) :使用者服務層為用戶端提供對應用程式的通路能力。

• 業務邏輯層 (BLL) :業務邏輯層提供用于處理業務邏輯。

• 資料通路層 (DAL) :資料通路層為 BLL 提供資料服務。

四個邏輯層即:将三層結構中的業務邏輯層分為業務外觀層與業務規則層。

• 業務外觀層(BusinessFacade):業務外觀層為 Web 層提供界面。業務外觀層用作隔離層,它将使用者界面與各種業務功能的實作隔離開來。除了低級系統和支援功能之外,對資料庫伺服器的所有調用都是通過此程式集進行的。

• 業務規則層(BusinessRules):它包含各種業務規則和邏輯的實作。

ASP.NET應用程式的各個子產品的一般按功能劃分。

比如:在一個網上商店系統中有:系統管理子產品,使用者管理子產品,商店業務子產品等。

命名空間

層次格式為:公司名[.解決方案名].具體子產品名.項目名

檔案夾及檔案名約定

将命名空間層次結構圖轉化成樹狀目錄,同時設定一些類似于images,stylesheets和XSLT files這樣的目錄。

規範程式設計

資料通路

 對于 Web 應用程式,通常對每個請求執行短操作(一般隻是顯示資料),使用 SqlDataReader。

 當執行不要求傳回資料的指令(如插入、更新和删除)時,也使用 SqlCommand。該指令通過調用 ExecuteNonQuery 方法發出,而該方法傳回受影響的行數。當要求傳回資料是單值時,則調用ExecuteScalor方法

 使用資料集的好處是它為您提供了斷開連接配接的資料庫視圖。可以在應用程式中操作資料集,然後在以後協調更改和實際的資料庫。對于長期運作的應用程式,這通常是最好的方法。

 使用存儲過程可以減少在應用程式中執行繁重的資料庫操作的開銷。

代碼

雖然 代碼塊為自定義操作從 ASP.NET 頁傳回的文本輸出提供了功能強大的方法,但它們不提供清晰的 HTML 程式設計模型。代碼隐藏方法使頁代碼能夠更清晰地從 HTML 内容中分離到完全單獨的檔案中。

更多的詳細内容見《C#程式設計規範》

代碼複用

 建立和使用可封裝常用功能的可重用 UI 控件(使用者控件或web伺服器控件),并由此減少頁開發人員必須編寫的代碼量的能力。

 為資料服務層建立一個基類—–封裝連接配接資料庫及常用操作。它使我們能夠快速而簡單地修改所有資料服務類行為的某個方面,而不是修改在每個單獨類中的代碼

 為aspx頁面建立一個基類—-包裝頁面通路中的常見操作。比如:在購物車中将購物清單作為頁面的一部分。

性能

 在未使用時禁用會話狀态:這可以通過以下頁級别指令實作:

 慎重選擇會話狀态提供程式:如果僅在會話狀态中存儲少量易失資料,則應使用迄今為止速度最快的解決方案“程序内提供程式”。

 避免與伺服器間的過多往返行程:應用程式通常僅在檢索資料或存儲資料時才需要往返于伺服器。比如在使用者送出資料前,通常可以在用戶端驗證窗體項。可以使用 Web 窗體架構包含一組驗證伺服器控件,它們提供易用但功能強大的方法檢查輸入窗體的錯誤,并在必要時向使用者顯示消息。

 使用 Page.IsPostback 避免進行額外的往返行程:

 謹慎适當地使用伺服器控件:盡管伺服器控件使用起來非常容易,但它并不總是最佳選擇。例如:許多情況下,簡單的呈現或資料綁定替換可以完成同樣的事情。

 使用 Response.Write 以進行字元串串聯:如果打算執行大量的字元串連接配接,則多次調用 Response.Write的方法來連接配接字元串比僅調用一次 Response.Write 方法要快。

 不要依賴代碼中的異常:異常是非常浪費資源的,應在代碼中盡量避免。如果可以在代碼中檢測到會導緻異常的條件,就應該那樣做,而不要等到捕捉異常後再處理該條件。常見的方案包括:檢查空值,配置設定給将分析為數字值的字元串,或在應用數學運算前檢查特定值

 在 Visual Basic 或 JScript 代碼中使用早期綁定。因為就性能而言,晚期綁定雖很友善但很昂貴。

 将 SQL 存儲過程用于資料通路:使用托管 SQL 提供程式時,可通過使用編譯的存儲過程而不是特殊查詢,獲得額外的性能提高。

 使用 SqlDataReader 獲得快進隻讀資料遊标:SqlDataReader 對象對從 SQL 資料庫中檢索的資料提供前進隻讀遊标。

 盡可能緩存資料和輸出:ASP.NET 程式設計模型提供了一種簡單的緩存頁輸出或資料的機制,不再需要為每個請求動态計算這些資料。在設計頁時可以考慮用緩存來優化應用程式中那些預期有最大通信量的地方。适當地使用緩存可增強站點的性能,有時甚至可以增大一個數量級或更多。

 不要忘記禁用調試模式:在部署生産應用程式或測量性能之前,始終記住在ASP.NET 配置中的 節禁用調試模式。

 最小化對視圖狀态:視圖狀态管理是伺服器控件的一個功能,它在伺服器請求之間的往返行程上重新填充屬性值。視圖狀态可以通過web.config 檔案中的設定或在頁級别或控件級别上為整個應用程式有選擇性地禁用。應最小化對視圖狀态的使用以在它的使用者操作和性能間保持平衡。

處理錯誤

指定自定義錯誤頁,以在發生錯誤時将用戶端重定向到該頁

配置

資料庫連接配接字元串、檔案路徑或遠端 XML Web Services URL等自定義應用程式設定通常存儲在配置檔案中。配置檔案可以是web.config檔案或自定義配置檔案。

建議所有各個子產品采用單獨的自定義xml配置檔案,并自定義一個類來讀寫它

其它

布署

通常建立安裝程式進行自動部署。

安全性

ASP.NET 和 IIS 一起使用,為應用程式提供身份驗證和授權服務。根據使用者與應用程式的需要采用不同的身份驗證政策并授權。使用對角色授權,可以降低管理的難度。