Web應用的UML建模與.NET框架開發

引言

  基於Web的應用系統一般包含兩部分:服務器和客戶端瀏覽器。服務器主要對事務進行邏輯處理,而用戶對服務器上業務邏輯的影響,使Web應用往往具有複雜性和高度動態性的特點。這種特點使得基於Web應用的系統開發比較複雜、管理困難。爲了有效地解決上述問題,縮短開發週期,減少維護費用,主要策略是對Web應用進行建模。UML是面向對象技術領域中占主導地位的統一建模語言。此外,.NET框架在通用語言運行時CLR的基礎上,提供了完善的基礎類庫、數據庫訪問技術ADO.NET和網絡開發技術ASP.NET,使開發者可以快速構建Web應用。因此,本文主要探討基於.NET框架Web應用的UML建模及開發方法,並將該方法用於作者開發的研究所管理系統中,實際應用表明該方法可以有效地降低系統開發和管理的複雜性,提高經濟效益。

  Web應用的構架模式

  Web應用的基本構架包括瀏覽器、網絡和Web服務器。瀏覽器向服務器請求Web頁,Web頁可能包括由瀏覽器解釋執行的客戶端腳本,而且可以與瀏覽器、頁內容和頁中包含的其他控件(Java Applet、ActiveX控件和插件等)進行交互。用戶向Web頁輸入信息或通過超級鏈接導航到其它Web頁,與系統進行交互,改變系統的“業務狀態”。

  1、瘦Web客戶端

  主要適用於基於Internet的應用,對客戶端配置幾乎沒有控制。客戶端只需要標準Web瀏覽器,可以請求和顯示標準的HTML頁面。所有的業務邏輯都在服務器上執行。

      客戶端瀏覽器通過HTTP協議向服務器請求頁面資源,服務器將被請求的URL解析爲文件系統中的文件,或者由應用服務器處理並可能改變業務狀態,得到請求的頁面,返回給客戶端。

  2、胖Web客戶端

  胖Web客戶端對於可以確定客戶端配置和瀏覽器版本的Web應用是最適合的。客戶端通過HTTP與服務器通信,使用DHTML、Java applet或者ActiveX控件執行業務邏輯。HTTP的無連接特性,決定了客戶端腳本、ActiveX控件和Java Applet只能同客戶端對象進行交互。圖1顯示了構架中對象之間的關係。

 

圖1  胖Web客戶端構架中的主要參與者

  客戶端顯示接收的頁面時,執行嵌入的腳本,這些腳本通常可以在不同的線程中執行,通過DOM接口與頁面內容進行交互。

  3、Web傳輸

  Web傳輸模式除了使用HTTP負責客戶端和服務器的通信之外,還可以使用IIOP和DCOM等協議以支持分佈式對象系統。Web頁面通過遠程對象樁和遠程對象傳輸協議與遠程對象服務器通信,由服務器管理遠程業務對象的生命週期,向客戶端對象提供服務。圖2顯示了各組件之間的關係。


圖2  Web傳輸構架中的主要參與者

  遠程對象樁是一個對象,在客戶端執行,並與遠程對象具有相同的接口。當通過這個對象調用方法時,這些方法被封裝起來,使用遠程對象傳輸協議RMI/DCOM發送到遠程對象服務器,服務器解釋請求,實例化並調用實際對象實例中的方法。

  實際應用中,往往根據業務需要,綜合使用上述構架。在我們的研究所管理系統中,綜合採用了瘦Web客戶端和Web傳輸構架。客戶端使用了JavaScript進行客戶端驗證,把經過驗證的數據提交服務器處理。在數據的後臺管理上,採用了Web傳輸構架,保持客戶端與服務器的開放連接,以便進行較長時間的、較複雜的會話。

  UML的Web應用擴展

  UML(Unified Modeling Language)是一種通用的可視化建模語言,適用於各種軟件開發方法、軟件生命週期的各個階段、各種應用領域以及各種開發工具。但在對Web應用進行建模時,它的一些構件不能與標準UML建模元素一一對應,因此必須對UML進行擴展。

      UML的三種核心擴展機制包括構造型、標記值和約束。其中最重要的擴展機制是構造型,它不能改變原模型的結構,但可以在模型元素上附加新的語義,通常用“《構造型名》”來表示。約束是模型元素中的語義關係,定義了模型如何組織在一起,通常用一對“{}”之間的字符串表示。標記值是對模型元素特性的擴展,大多數的模型元素都有與之關聯的特性,通常用帶括號的字符串表示。

  1、Web頁建模

  Web頁可能同時包含客戶端腳本和服務器端腳本,因此必須分別進行建模。服務器端Web頁面一般包含由服務器執行的腳本,每一次被請求時都在服務器上組合,更新業務邏輯狀態,返回給瀏覽器。客戶端Web頁可能包含數據、表現形式甚至業務邏輯,由瀏覽器解釋執行,並可以與客戶端組件相關聯,如Java Applet、ActiveX、插件等。兩者之間通過定向關係相互關聯。這種關聯關係的構造型爲?build?。

  Web應用中的超級鏈接代表導航路徑,用構造型爲?link?的關聯關係表示。標記值用於定義隨超級鏈接請求傳遞的參數列表,供服務器端Web頁使用。圖3描述了Web頁之間的關係。

 

圖3  Web頁之間的關係

  .NET框架中大多數建立的是服務器端Web頁,經編譯後生成HTML代碼傳遞到客戶端瀏覽器。同時,爲了提高效率,對於那些不包含業務邏輯的Web頁,在.NET框架中可以直接用HTML元素建立客戶端Web頁,再建立起與對應的服務器端Web頁之間的調用關係。

  2、表單建模

  表單是Web頁的基本輸入機制,包括<input>、<select> 和 <textarea>等輸入元素,用《Form》構造型進行建模。《Form》沒有操作,與之交互的操作是包含表單的Web頁的特性。它可以與作爲輸入控件的 Applet或ActiveX 控件關聯,還可以把表單內容提交到服務器進行處理。圖4描述了含有表單的客戶端Web頁與服務器的交互過程。


圖4  包含表單的客戶端Web頁與服務器的交互過程

  .NET中每一個頁面只有一個表單,包含所有的輸入元素,通常表現爲服務器端控件或客戶端控件,其中服務器端控件由服務器端Web頁經過編譯後傳送到客戶端。

  3、組件建模

  Web應用中的組件分爲服務器端組件和客戶端組件兩類。服務器端較複雜的業務邏輯通常由中間層完成,包括一組封裝了所有業務邏輯的已編譯好的組件。因此,使用中間層不僅可以提高性能,而且可以共享整個應用的業務功能。客戶端Web頁中常見的組件是Java Applet和ActiveX,利用它們訪問瀏覽器和客戶端的各種資源,實現HTML無法實現的功能。

  Web應用擴展定義了《static page》和《dynamic page》兩個抽象組件構造型。《static page》實現客戶端組件。《dynamic page》的主要任務是在運行時系統的物理文件和邏輯視圖中的邏輯表現之間提供映射。圖5和圖6分別表示這兩種組件實現的邏輯視圖。


圖6  由《static page》實現的客戶端組件

 

圖5  由《dynamic page》實現的邏輯視圖類

  4、框架建模

  Web應用擴展定義了構造型《frameset》和《target》以及關聯關係構造型《targeted link》來實現對框架的建模。《frameset》直接映射到HTML的<frameset>標記。《target》表示當前Web頁引用的其它Web頁或框架。《targeted link》是指向另一個Web頁的超級鏈接,但它要在特定目標中才能提供。圖7顯示了論文管理的框架模型


圖7  論文管理框架模型

  基於.NET框架的Web應用開發

  .NET框架是一種基於通用語言的編程框架,提供了嶄新的編程模型:WebForm模型和WebService模型,提供了完善的基礎類庫、數據庫訪問技術ADO.NET和網絡開發技術ASP.NET,爲Web應用的開發提供了強有力的支持。

  1、Web頁的實現

  .NET框架提供了WebForm開發模型,利用內嵌的各種服務器組件來生成服務器端Web頁。它可以包含一些重要的頁面元素:用戶控件或者自定義控件等。用戶控件User Control在.NET框架中是以.ascx爲擴展名的文件,可以在多個Web頁面中使用,實現代碼的重用。自定義控件Custom Control是在.NET中創建或在原有控件上進行修改,添加新功能,以實現特定需求的控件,可以被多個應用程序調用。

  2、Web頁導航方式

  .NET框架中的頁面導航方式體現了Web頁之間的關係,可以用下列四種方式實現。

  (1)超級鏈接

  使用HTML超鏈接控件或HyperLink控件可以實現頁面之間的鏈接。其中HyperLink服務器控件允許在代碼中改變其NavigateUrl屬性,從而構造出具體目標可根據應用的當前狀態動態變化的超鏈接。

  (2)用Response.Redirect 實現

  當Response.Redirect( )方法被調用時,創建HTTP應答,其中指出了狀態代碼302(表示目標已經改變)和新的目標URL。瀏覽器接收到該應答,發出一個對新URL的請求。 即重定向操作發生在客戶端,涉及到兩次與服務器的通信。

  (3)用Server.Transfer 實現

      這種方法把執行流程從當前的ASPX頁面轉到同一服務器上的另一個ASPX頁面。但新的頁面仍使用前一頁面創建的應答流。 瀏覽器中的URL不會改變,重定向完全在服務器端進行。因此,這種方法能夠避免不必要的網絡通信,獲得較好的性能和瀏覽效果。

  (4)用Server.Execute 實現

  此方法允許當前的ASPX頁面執行同一服務器上的指定ASPX頁面,指定的ASPX頁面執行完畢後,控制流程返回原頁面中發出Server.Execute( )調用的位置,被調用頁面能夠訪問調用頁面的表單數據和查詢字符串集合。默認情況下,被調用頁面的輸出追加到當前應答流。但是,Server.Execute( )方法有一個重載的方法,允許通過一個TextWriter對象獲取被調用頁面的輸出,而不是直接追加到輸出流,這樣,在調用頁面中可以方便地調整被調用頁面輸出結果的位置。

  3、數據庫操作

  數據庫處於Web應用的最底層,存放系統數據和部分後臺數據庫邏輯,如存儲過程、觸發器等。它與業務邏輯層和用戶界面分開,易於管理和維護,執行效率高,安全性能好。

  (1)Oracle數據庫操作

  .NET框架提供了System.Data.OracleClient和System.Data.OleDb 命名空間,實現對Oracle數據庫的支持,其中前者的針對性較強,本文的實例中使用了此命名空間。

  數據庫連接字符串爲連接數據庫提供必要的參數,通常保存在配置文件web.config中,以簡化代碼實現和便於部署。

  Web應用中對數據庫的操作頻繁,通常情況下,把對數據庫的各種操作集成在一個數據庫操作類中,在需要進行數據庫操作的地方只需調用此類的各種方法即可。

  (2)Oracle數據庫中LOB對象的存取

  Web應用中的二進制文件、圖片、大段文本等在數據庫中的存取,通常都要用大對象(LOB)實現。.NET框架提供了OracleLob類來完成對Oracle中BLOB、CLOB、NCLOB等數據類型的操作。Oracle中實現大段文本存入CLOB字段的過程可以表示爲:

  ①用SQL語句向數據庫中添加一個CLOB字段爲empty_clob( )的記錄;

  ②開始事務,鎖定剛加入的記錄,把要寫入CLOB字段的內容用流或CLOB的Write( )方法寫入;

  ③提交事務,完成對CLOB字段的寫入;

  Oracle中對CLOB類型數據的讀取過程相對簡單,不需要對數據庫記錄進行鎖定:

  ①執行SQL 語句獲得OracleDataReader對象;

  ②用OracleDataReader對象的GetOracleLob( )方法得到要讀取的CLOB字段的OracleLob對象;

  ③用OracleLob對象的Read( )方法或流讀出CLOB字段的內容;

  結束語

  系統建模對軟件開發過程相當重要,UML的擴展機制爲Web應用的建模提供了必要的支持。.NET框架爲Web應用的開發提供了很好的解決方案。本文首先分析了常見的Web應用的構架模式,然後把Web應用的UML建模與基於.NET框架的開發結合起來,提出了對Web應用中的各種對象進行建模的方法,對開發過程中的相關重要問題進行了闡述,並針對現有文獻中較少涉及的Oracle數據庫的操作提供了詳細的解決步驟,希望能起到拋磚引玉的作用。
本篇文章來自<A href='http://www.soidc.net'>IDC專家網</a> 原文鏈接:http://www.soidc.net/articles/1213781277395/20051114/1214038627217_1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章