国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET應用程序規劃與設計(4)

2024-07-10 12:55:58
字體:
來源:轉載
供稿:網友


收集最實用的網頁特效代碼!

 數據訪問組件
  
    數據訪問組件設計文檔描繪與數據存儲系統的交互以及與用戶界面的交互的所有細節。在有些系統中,數據訪問組件實際上是處理過程中各種問題的多個程序集。例如,可能會有一系列業務規則呈現在與數據存儲和檢索完全獨立的用戶界面上。在這種情況下,將業務組件與數據訪問組件分開實現可能比較明智。
  
    在我們的示例中,實際實現的是兩個單獨的組件:message 組件和 dataaccess 組件。如果在支持基于 xml 的數據的傳輸服務(例如 soap web service)中進行規劃,這種面向消息的實現方案將會特別有成效。
  
    消息組件
  
    消息組件定義一系列用于在各圖層之間傳輸數據的類。這些消息可以作為二進制或 xml 文本數據存在。消息圖層的價值在于:保護系統的其余部分,使其獨立于數據存儲實現方案的具體細節,例如 sql server、xml 文件等。此外,通過實現消息圖層而不是更復雜的“智能對象”庫,我們的解決方案可以更輕松地支持那些不能同時發送數據和類級別邏輯的遠程調用服務,例如 xml-soap。
  
    下面是一個消息類示例,在該示例中實現了 topic 消息及其集合:
  
  public class topic
  private _id as integer
  private _title as string
  private _description as string
  
  public property id() as integer
  get
  return _id
  end get
  set(byval value as integer)
  _id = value
  end set
  end property
  
  public property title() as string
  get
  return _title
  end get
  set(byval value as string)
  _title = value
  end set
  end property
  
  public property description() as string
  get
  return _description
  end get
  set(byval value as string)
  _description = value
  end set
  end property
  
  end class
  
  public class topics
  inherits system.collections.collectionbase
  
  default public property item(byval index as integer) as topic
  get
  return ctype(list(index), topic)
  end get
  set(byval value as topic)
  list(index) = value
  end set
  end property
  
  public function add(byval s as topic) as integer
  return list.add(s)
  end function
  
  public sub remove(byval index as integer)
  list.remove(index)
  end sub
  
  end class
  
    注意:如果您已嘗試過面向消息的設計,便會了解我們想要使這些消息類系列化,以便在應用程序圖層之間輕松地來回發送。幸運的是,.net 運行時知道如何進行這項操作,而無需我們做過多的工作。但是,當我們學習創建消息的文章時,我們將詳細討論 .net 運行時如何系列化類,以及我們如何進行操作以使代碼中的過程最優化。
  
    在后面實現消息組件和數據訪問組件時,文章中將介紹此方法的細節。設計文檔將包含一個由所有信息及其屬性與數據類型組成的列表。現在,我們只是考慮如何使用此消息方法來封裝圖層間的數據傳輸,如何創建一種與本地方案和遠程方案配合使用的常規數據服務。
  
    數據訪問組件
  
    定義消息類的概念后,數據訪問組件可以集中精力處理與數據存儲系統直接對話的細節,并以正確的消息格式返回信息。在我們的示例中,這將涉及到使用來自用戶界面的請求映射 sql server 存儲過程,并創建可返回到用戶界面進行顯示的消息(或消息集合)。
  
    例如,下面是一個數據訪問組件的一部分示例代碼,該組件將從數據存儲中檢索單個 topic 記錄,并將正確的消息格式返回到用戶界面。
  
  public function gettopicrecord(byval id as integer) as messages.topic
  dim t as messages.topic = new messages.topic
  cn = new sqlconnection(secureconnectionstring)
  cd = new sqlcommand("gettopic", cn)
  cd.commandtype = commandtype.storedprocedure
  cd.parameters.add("@id", id)
  cn.open()
  dr = cd.executereader()
  dr.read()
  with t
  .id = id
  .title = dr("title")
  .description = dr("description")
  end with
  return t
  end function
  
    設計文檔將包括一系列用于處理來自用戶界面的各個請求的類和方法,并含有有關調用哪個存儲過程以及返回何種消息格式的詳細信息。同樣,我們將在后面主要介紹數據訪問圖層的文章中討論此過程的細節。
  
    web 用戶界面
  
    最后,用戶界面設計文檔將包括完成各種方案所需的所有用戶輸入和顯示。通常來說,用戶界面文檔包括界面機制的細節以及使用戶界面呈現唯一性的圖形設計元素。例如,配色方案、字體和總體頁面設計,與用于獲取搜索查詢的正確數據的輸入名稱和輸入數量一樣重要。
  
    要使文檔簡潔,通常在一個與圖形設計單獨的文檔中概要描述機制細節。這是我們將要在示例中做的工作。在后面的一篇文章中,我們將創建一個綜合性用戶界面文檔和實現方案,詳細說明每個屏幕的元素和相關操作。在另一篇文章中,我們將處理應用程序有關圖形的各個方面,重點討論作為一種外觀服務的級聯樣式表的使用。
  
    下面是一個典型的用戶界面描述,它涉及“主題”編輯方案。
  
    主題輸入屏幕
  
    “主題”屏幕將顯示所有當前主題(主題 id 和主題名稱)的一個縮略列表,在每個主題旁邊還將顯示一個“編輯”鏈接。單擊“編輯”鏈接將會調用關聯的主題記錄并將其顯示在一系列的輸入框中。“標題”和“描述”是可編輯的,而“主題 id”是只讀的。用戶可以編輯標題和描述,然后按“保存”按鈕將更改寫入數據存儲。輸入將被驗證。兩者都是必需的輸入項,“標題”的長度限制為 30 個字符,“描述”的長度限制為 500 個字符。更新完成后,將顯示一條響應消息指出已確認更新;如果更新失敗,則顯示一條消息指出錯誤狀況。
  
    用戶還可以刪除現有的主題記錄,方法是單擊列表中的“編輯”鏈接,審核顯示屏幕上的記錄細節后,單擊“刪除”鏈接。刪除完成后,將顯示一條響應消息指出已確認更新;如果更新失敗,則顯示一條消息指出錯誤狀況。請注意,用戶不能刪除與現有問題或回答相關聯的主題。
  
    此外,用戶可以完整地添加新主題記錄,方法是在初始顯示屏幕上單擊“新建主題”鏈接。將顯示“標題”和“描述”輸入(不顯示 id 輸入)并提供一個“保存”按鈕。輸入將被驗證。兩者都是必需的輸入項,“標題”的長度限制為 30 個字符,“描述”的長度限制為 500 個字符。更新完成后,將顯示一條響應消息指出已確認更新;如果更新失敗,則顯示一條消息指出錯誤狀況。
  
    利用上面的敘述,您可以輕松地實現一個完整的功能屏幕。判斷一個好的設計文檔的方法是:它能夠使讀者完成工作,且不會提出額外的問題。最終的用戶界面設計文檔將包括應用程序中每個屏幕的此類敘述。
  
    小結并付諸行動
  
    我們簡要介紹了數據庫、中間層和用戶界面實現方案的最終設計文檔。加上體系結構和初始規劃文檔,它們形成了我們的完整設計包。在實際的情況中,即使是最小的系統,完成這些文檔也至少需要幾個小時。對于大型系統,可能需要幾周甚至可能幾個月的時間。有些人可能會對此有一點挫敗感,但是通過事先完成這些工作,您可以在進入項目的編碼階段之前很早就了解完成解決方案面臨的幾乎所有主要障礙。這樣可以減少編寫實際代碼的時間,并且還可以減少您會遇到的錯誤和障礙的數量。
  
    在下一篇文章中,我們將討論使用 visual studio .net 在 sql server 中建立數據存儲系統的有關細節。我們將定義數據表,創建必需的存儲過程,并設置正確的數據訪問,以確保任何組件和數據本身之間具有安全可靠的連接。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡嘎县| 博乐市| 武邑县| 平陆县| 石首市| 邵阳县| 贺州市| 阿巴嘎旗| 柞水县| 增城市| 平谷区| 富平县| 温宿县| 安图县| 肥乡县| 札达县| 禹州市| 昌平区| 蒙山县| 铜陵市| 房产| 肃宁县| 德钦县| 延津县| 华宁县| 福泉市| 潞城市| 古田县| 色达县| 柳林县| 安庆市| 泰来县| 嵊泗县| 普兰县| 桃江县| 泰来县| 洪湖市| 水城县| 蒙自县| 交口县| 侯马市|