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

ASP.NET 2.0 與 SQL Server 2005 建構多層架構應用:ObjectDataSource、Master Pages、CLR 預存程序、TableAdapter 實戰

     編輯:關於ASP.NET

.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 預存程序、索引/統計資訊

範例應用流程

  1. 頁面一:GridView 繫結 ObjectDataSource → 呼叫 BLL GetAuthors() → DAL TableAdapter.GetAuthors() → SQL SELECT * FROM Authors → 顯示作者清單。
  2. 使用者點選作者連結 → 傳遞 AuthorID 至頁面二。
  3. 頁面二:GridView 繫結 ObjectDataSource → 呼叫 BLL GetBooksByAuthor(authorId) → DAL → SQL 參數化查詢 → 顯示該作者書籍清單。

關鍵技術實作重點

Master Pages 版面一致性

<%@ 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" %>,自動套用統一版面。

ObjectDataSource 繫結 BLL

<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();
    }
}

TableAdapter 嚮導產生 DAL

  • 專案加入 DataSet.xsd,從伺服器總管拖曳 Authors、Titles 資料表。
  • 自動產生 AuthorsTableAdapter、AuthorsDataTable、AuthorsRow 強型別類別。
  • 支援預存程序對應:TableAdapter 方法可對應 sp_GetAuthors、sp_GetBooksByAuthor。

SQL Server 2005 CLR 預存程序

使用 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 游標迴圈。

架構優勢總結

  • 關注點分離:UI、業務、資料存取、資料庫各司其職。
  • 可測試性:BLL/DAL 可單元測試,無需啟動 Web 伺服器。
  • 可維護性:資料庫結構變更僅影響 DAL(TableAdapter 重新產生)。
  • 可擴充性:新增業務規則只擴充 BLL,不動 UI 與 DAL。
  • 部署彈性:各層可獨立部署於不同伺服器(Remoting/WCF)。

ASP.NET 2.0 與 SQL Server 2005 提供的工具鏈,讓多層架構從理論走向落地實踐,大幅降低企業級應用開發門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved