Web項目解決方案框架
目錄 ????????????
3
????
設(shè)計數(shù)據(jù)庫
...
2
5.2
????
確定界面布局(
layerout)和風(fēng)格(style)
...
4
5.3
????
頁面復(fù)用技術(shù)
...
4
1????????????????? 解決方案框架
每個功能都是一個用例,包含細節(jié)和邏輯流程。
2?????????????????? 用例文檔
一般的講,大型系統(tǒng)采用 UML UserCase 表達客戶需求。 UML 建模
除了 UML 圖,還需要文檔描述,文檔描述建議以下格式:
??????????? 前置條件:開始使用這個用例之前,必須滿足的條件。非必需
??????????? 主事件流:用例的正常流程。必需
??????????? 其它事件流:用例的非正常流,如:錯誤流
??????????? 后置條件:用例執(zhí)行結(jié)果“必須”為真的條件,也稱為“附加條件”,非必需
舉例:“安全登入”就是一個用例。
?????????? 前置條件:無
?????????? 主事件流:用戶輸入正確的用戶名和密碼,安全登入到 Web 應(yīng)用中。向用戶返回歡迎頁,包括可操作的菜單,提示登陸成功。
?????????? 其它事件流 1 :未輸入用戶名或密碼,顯示出錯信息:用戶名或密碼不可為空
?????????? 其它事件流 2 :用戶名和密碼不匹配,顯示出錯信息:用戶名或口令錯誤
?????????? 后置條件:該用例不是必須為真,無
3?????????????????? 設(shè)計數(shù)據(jù)庫
數(shù)據(jù)庫設(shè)計的最終目標是完整的回答:“數(shù)據(jù)從何處來,保存在什么地方”。
在這一步,應(yīng)該給出數(shù)據(jù)庫表的 UML 描述和 XML 文檔示例。 UML 描述的文檔說明格式建議如下(舉例說明):
/*
設(shè)計說明
設(shè)計人: Sun Duction
時間:
目標數(shù)據(jù)庫: Oracle 9i
表名: ADDR_TABLE
*/
字段 |
類型 |
說明 |
ID |
Int(4) |
記錄的 ID ,自動增長 |
NAME |
Char(25) |
姓名 |
PHONE |
Char(10) |
電話 |
ADDRESS |
Char(50) |
地址 |
XML 文檔示例為:
<?xml version="1.0" encoding="UTF-8"?>
<Table TableName="ADDR_TABLE">
?????? <item ID="1" NAME="
小強
" PHONE="02483992100" ADDRESS="
北京市海淀區(qū)
9
號
(110000)"/>
?????? <item ID="2" NAME="
王小花
" PHONE="02483992100" ADDRESS="
北京市海淀區(qū)
9
號
(110000)"/>
?????? <item ID="3" NAME="Jim Green" PHONE="02483992100" ADDRESS="
北京市海淀區(qū)
9
號
(110000)"/>
</Table>
4?????????????????? 業(yè)務(wù)邏輯
業(yè)務(wù)邏輯是獨立于系統(tǒng)實現(xiàn)的。采用 JAVA ,還是采用 .NET ,那時實現(xiàn)的體系結(jié)構(gòu)問題。業(yè)務(wù)邏輯描述系統(tǒng)中各個數(shù)據(jù)實體之間的關(guān)系。
MVC 框架下: Model 實現(xiàn)業(yè)務(wù)邏輯。
在 JAVA 中,它們是: JavaBean , EJB ,實用工具類,輔助類。
在 .NET 中,它們是:自定義數(shù)據(jù)對象,結(jié)構(gòu),工具類,輔助類。
一般的,在業(yè)務(wù)層都采用了 DAO 模式,實現(xiàn)的方式有多種。 JAVA 中,比較流行的解決方案是 Hibernate , JDO 。
.NET
下,一般采用
Data Access Application Block
。
關(guān)于如何根據(jù)需求為系統(tǒng)建模,是個專題,這里就不詳細描述。
5?????????????????? 設(shè)計 UI
UI 由需求分析而定,但必須獨立于業(yè)務(wù)邏輯的實現(xiàn),即: UI 不在意界面上顯示的數(shù)據(jù)從何而來(但必須有一種實現(xiàn)的方式)。設(shè)計 UI 時,最終要完成以下任務(wù):確定界面的總體布局和風(fēng)格、文檔描述各個 UI 元素、各個子 UI 元素(可復(fù)用元素)之間的關(guān)聯(lián)圖。
5.1??????????????? UI 文檔描述
UI 由用例而來,包括用戶界面的功能描述,與用戶交互的信息, UI 切換關(guān)系幾個要素。
舉例:
界面 |
字段 |
字段類型 |
說明 |
歡迎界面 index |
無 |
無 |
顯示歡迎信息,提供登陸入口 |
登入 logon |
username,password |
String |
字段可編輯 |
添加記錄界面 insert. |
Name,phone,address |
String |
可編輯 |
主菜單界面 mainMenu |
無 |
無 |
提供所有操作菜單 |
添加數(shù)據(jù)確認 confirm |
無 |
無 |
向用戶顯示添加成功或失敗信息。 |
5.2??????????????? 確定界面布局( layerout )和風(fēng)格( style )
由美工確定符合該項目的總體頁面布局和配色方案,給出基礎(chǔ) CSS 文件。
5.3??????????????? 頁面復(fù)用技術(shù)
如果采用 .NET 技術(shù),那么建議采用模版頁+自定義控件的方式,動態(tài)載入生成 HTML 頁面。
如果采用 JSP 技術(shù),那么,可以使用 Tiles 框架。
其實,兩個體系的解決方案在內(nèi)部實現(xiàn)上,幾乎是相同的,只不過 JAVA 領(lǐng)域成熟的開源框架多的多而已。
這一步應(yīng)該確定頁面關(guān)聯(lián),即每個功能頁面與其它片斷頁面的關(guān)系。這是為了達到頁面級別的最大程度復(fù)用而做的。這是值得的,因為這一步做的好,會大大縮短開發(fā),測試的時間。
對于 JSP 項目,建議將申明標簽庫的語句方在一個文件中,如 taglibs.jsp ,其它文件引用它,并對特定應(yīng)用使用定制標簽。
6?????????????????? 設(shè)計頁面處理組件
對于 Struts 而言,每個頁面對應(yīng)一個 ActionForm ,對于 ASP.NET 而言,每個頁面關(guān)聯(lián)一個代碼隱藏類。由于 ASP.NET 技術(shù),微軟的 IDE 給予的大量的自動化支持,且 ASP.NET 運行庫給予了大量的底層支持,天生的支持 MVC 框架。這里就不詳細描述如何實現(xiàn) ASP.NET 的代碼隱藏類。
ActionForm Bean 用于在視圖組件和控制器組件之間傳遞 HTML Form 數(shù)據(jù)。通常,每個 HTML Form 對應(yīng)一個 ActionForm Bean , HTML Form 中的字段和 ActionForm Bean 中的屬性一一對應(yīng)。
對于 Struts 應(yīng)用,請采用如下表格:
ActionForm 名 |
屬性 |
Validate 方法 |
LogonForm |
username,password |
二者不可為空 |
InsertForm |
Name,phone,address |
三者不可為空 |
注意,這里要保證 validate 方法不訪問 Model 層,即:它不執(zhí)行業(yè)務(wù)邏輯驗證。比如,口令不匹配這個邏輯所代表的代碼決不可以放在該方法中。
7?????????????????? 設(shè)計操作流
在需求階段確定了事件的流,為了實現(xiàn)這個流控制,需要在各個頁面之間切換。對于
ASP.NET
,由于代碼隱藏類給予了對頁面和邏輯完全的控制,并提供了類似于面向?qū)ο蟮木幊谭椒ǎ式缑媲袚Q直接根據(jù)業(yè)務(wù)的事件流處理即可。
如何在.NET下將控制流在外配置,有什么好的解決方案,希望大家討論啊!
對于
Struts
應(yīng)用,這是由
Action
和
struts-config.xm
文件聯(lián)合完成。所以必須在這一步就確定好
Action
和
Action
之間的映射關(guān)系。
Action 負責(zé)單個事件的流程控制。那么,一個事件,就必然對應(yīng)一個 Action 。
Action 映射決定了 Action 與其它 Web 組件之間的關(guān)聯(lián)。在實際應(yīng)用中,最好提供下表:
Action |
入口 |
Action Form |
出口 |
LogonAction |
Logon.jsp |
LogonForm |
mainMenu.jsp |
LogoffAction |
mainMenu.jsp |
無 |
Index.jsp |
InsertAction |
Insert.jsp |
InsertForm |
Confirm.jsp |
DisplayAllAction |
mainMenu.jsp |
無 |
Display.jsp |
該表如果使用圖的方式給出,將更加完美。
posted on 2006-04-26 15:03 都市淘沙者 閱讀(634) 評論(0) 編輯 收藏 所屬分類: VSS/SVN/Jira/Hudson/Sonar/TDD/UnitTest