.NET 2.0 釋出後,ASP.NET 2.0 搭配 SQL Server 2005 大幅簡化多層架構 Web 應用建構。本文透過一個簡易「作者-書籍」查詢範例,示範表現層、業務邏輯層、資料存取層、資料庫層的分層實作,並展示關鍵新特性:ObjectDataSource、Master Pages、CLR 預存程序、TableAdapter 嚮導。
| 層級 | 職責 | ASP.NET 2.0 關鍵技術 |
|---|---|---|
| 表現層 | UI 呈現、使用者互動、輸入驗證 | Master Pages 版面一致性、GridView/DetailsView 資料繫結、ObjectDataSource 繫結業務元件 |
| 業務邏輯層 (BLL) | 業務規則、工作流程驅動、資料驗證 | 純 .NET 類別庫、ObjectDataSource TypeName/SelectMethod/UpdateMethod 對應 |
| 資料存取層 (DAL) | SQL 執行、參數化命令、連線管理 | TableAdapter 嚮導產生強型別 DataSet/TableAdapter、參數化 CRUD |
| 資料庫層 | 資料持久化、完整性約束、效能優化 | SQL Server 2005 CLR 預存程序、T-SQL 預存程序、索引/統計資訊 |
GridView 繫結 ObjectDataSource → 呼叫 BLL GetAuthors() → DAL TableAdapter.GetAuthors() → SQL SELECT * FROM Authors → 顯示作者清單。AuthorID 至頁面二。GridView 繫結 ObjectDataSource → 呼叫 BLL GetBooksByAuthor(authorId) → DAL → SQL 參數化查詢 → 顯示該作者書籍清單。<%@ Master Language="C#" %>
<html><body>
<div class="header">作者書籍查詢系統</div>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
<div class="footer">© 2024</div>
</body></html>
內容頁:<%@ Page MasterPageFile="~/Site.master" %>,自動套用統一版面。
<asp:ObjectDataSource ID="odsAuthors" runat="server"
TypeName="BLL.AuthorService"
SelectMethod="GetAuthors"
DataObjectTypeName="DAL.AuthorsDataTable">
</asp:ObjectDataSource>
BLL 類別:
public class AuthorService
{
public AuthorsDataTable GetAuthors()
{
AuthorsTableAdapter adapter = new AuthorsTableAdapter();
return adapter.GetAuthors();
}
}
DataSet.xsd,從伺服器總管拖曳 Authors、Titles 資料表。AuthorsTableAdapter、AuthorsDataTable、AuthorsRow 強型別類別。TableAdapter 方法可對應 sp_GetAuthors、sp_GetBooksByAuthor。使用 C# 撰寫預存程序,部署至 SQL Server:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetAuthorBooks(int authorId)
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
using (SqlCommand cmd = new SqlCommand(
"SELECT Title, YearPublished FROM Titles WHERE AuthorID = @AuthorID", conn))
{
cmd.Parameters.AddWithValue("@AuthorID", authorId);
conn.Open();
SqlContext.Pipe.ExecuteAndSend(cmd);
}
}
優勢:複雜邏輯用 C# 撰寫、重用 .NET 類別庫、效能優於 T-SQL 游標迴圈。
ASP.NET 2.0 與 SQL Server 2005 提供的工具鏈,讓多層架構從理論走向落地實踐,大幅降低企業級應用開發門檻。