第一篇:用友UAP打造全周期開發平臺 實現敏捷開發
用友UAP打造全周期開發平臺 實現敏捷開發
為了解開用友UAP平臺的面紗,了解更多平臺技術,5月28日記者來到用友軟件園,采訪了用友集團UAP中心的兩位專家,重點介紹了用友UAP的平臺產品之一——開發平臺所包含的組件及其特性,詳細講解了開發平臺如何使得敏捷開發成為可能。
用友UAP平臺誕生背景
中國軟件行業正在經歷第三次轉型的陣痛,用友UAP伴隨NC產品誕生,隨著業務復雜度的提升,對頁面交互、頁面數據處理能力都提出了新的要求,這促使全新的用友UAP開發平臺誕生。
用友UAP開發平臺從不同類型的軟件開發過程中,研究、分析、總結和提煉了大量的設計工具、開發工具、應用開發框架、中間件、基礎技術類庫以及研發模式等成果,并提供了一個集成的軟件開發環境。
用友集團UAP中心Java應用平臺開發部經理劉昆鵬表示,用友公司“平臺化發展 產業鏈共贏”的策略,對如何有效利用和擴展研發成果,并在不同研發層次進行獨立的資產管理和發展提出了要求。另一方面,隨著軟件工程的不斷推進,整個開發過程的各個環節更加精細化,管理人員、需求人員、設計人員、開發測試等各開發人員都需要協同工作。所以將在開發過程中所產生的最佳實踐達到有效的積累,也是開發平臺要解決的問題。
用友集團UAP中心Java應用平臺開發部經理 劉昆鵬
UAP開發平臺的核心優勢
用友集團UAP中心技術支持部總經理彭立東介紹,該平臺包括了覆蓋軟件全生命周期的需求分析、設計、開發、測試、構造、發布、運行及維護等各階段所需的工具。基于用友UAP開發平臺能夠大幅度提升軟件的開發效率、穩定性、可集成性及可維護性,降低軟件實現的技術難度以及開發成本。
用友集團UAP中心技術支持部總經理 彭立東
用友UAP開發平臺由可視化集成開發環境、應用開發框架、公共服務以及基礎技術類庫/中間件幾個部分組成,同時從開發過程角度提供了軟件配置管理與研發管理功能。可視化集成開發環境UAP Studio支持業務建模、分析、設計、開發、測試、組裝、發布等開發過程的全生命周期管理,提供各種管理工具、設計器、監控工具,以及軟件配置管理系統。采用模型驅動開發的方式,通過上一階段的輸出與下一階段的輸入結合,利用可視化設計器將開發過程串接起來,大大降低開發難度,降低各階段的鴻溝和不一致性。
用友UAP開發平臺的“靈魂”
隨后,彭立東先生向記者重點介紹了開發平臺的“靈魂”——元數據。元數據框架支持訪問服務、開發服務、管理服務,支持建模開發工具整合與適配其他系統模型數據,并提供統一的查詢服務,使得平臺上的開發者只需要關注業務邏輯,實現了業務與技術的分離。
開發平臺的實體設計器包含多種建模元素和實體元素,可以可視化的方式創建面向對象的實體組件,可通過配置代碼模板,自動產生可以直接運行的業務實體源代碼。
業務與技術相分離
用友UAP開發平臺的應用開發框架是基于企業建模理論的,將應用軟件的業務邏輯和開發技術相分離,是應用軟件開發者可以僅僅關注應用的業務邏輯,而不必關注繁瑣的技術實現,使得管理層與業務人員參與應用軟件的開發成為可能。大大縮短研發周期、提高研發效率、加快應用開發速度、減少企業信息系統開發的風險,并保證應用開發軟件的質量,實現最終用戶的個性化的需求。
除了支持開發WEB應用等常見的應用類型外,還支持開發跨平臺移動應用。用友UAP移動應用框架提供了數據處理、應用適配器等功能,提供移動應用商店,開發者可以在上面發布自己的移動應用產品。
用友UAP平臺產品的問世,能夠支持我國大型企業及公共組織更好的實現IT及軟件系統的運營與運維,提升管理績效,并幫助客戶參與全球化競爭。其開發平臺將開發的全過程做為資產管理起來,大量的原數據模型和可視化界面大大降低開發的難度,實現了敏捷開發。
第二篇:微信公共服務平臺開發(.Net 的實現)1
C#開發微信公眾平臺-就這么簡單(附Demo)最近公司在做微信開發,其實就是接口開發,網上找了很多資料,當然園友也寫了很多教程,但都是理論說了一大堆,實用指導或代碼很少。如果你自己仔細研究下,其實就那么點東西,C#實現起來也很簡單,原本不想寫這篇文章的,但是本人當時摸索走了很多彎路,這邊總結下,希望初次接觸微信公眾平臺的朋友別像當時的我一樣。
自己動手,豐衣足食。服務號和訂閱號
服務號是公司申請的微信公共賬號,訂閱號是個人申請的,我個人也申請了一個,不過沒怎么用。
服務號
1.1個月(30天)內僅可以發送1條群發消息。
2.發給訂閱用戶(粉絲)的消息,會顯示在對方的聊天列表中。3.在發送消息給用戶時,用戶將收到即時的消息提醒。4.服務號會在訂閱用戶(粉絲)的通訊錄中。5.可申請自定義菜單。訂閱號
1.每天(24小時內)可以發送1條群發消息。
2.發給訂閱用戶(粉絲)的消息,將會顯示在對方的訂閱號文件夾中。3.在發送消息給訂閱用戶(粉絲)時,訂閱用戶不會收到即時消息提醒。4.在訂閱用戶(粉絲)的通訊錄中,訂閱號將被放入訂閱號文件夾中。5.訂閱號不支持申請自定義菜單。URL配置
啟用開發模式需要先成為開發者,而且編輯模式和開發模式只能選擇一個,進入微信公眾平臺-開發模式,如下:
需要填寫url和token,當時本人填寫這個的時候花了好久,我本以為填寫個服務器的url就可以了(80端口),但是不行,主要是沒有仔細的閱讀提示信息,所以總是提示
從上面可以看出,點擊提交后微信會向我們填寫的服務器發送幾個參數,然后需要原樣返回出來,所以在提交url的時候,先在服務器創建接口測試返回echostr參數內容。代碼:
1.//成為開發者url測試,返回echoStr
2.public void InterfaceTest()3.{
4.string token = “填寫的token”;5.if(string.IsNullOrEmpty(token))6.{
7.return;8.} 9.10.string echoString = HttpContext.Current.Request.QueryString[“echoStr”];
11.string signature = HttpContext.Current.Request.QueryString[“signature”];
12.string timestamp = HttpContext.Current.Request.QueryString[“timestamp”];
13.string nonce = HttpContext.Current.Request.QueryString[“nonce”];14.15.if(!string.IsNullOrEmpty(echoString))16.{
17.HttpContext.Current.Response.Write(echoString);18.HttpContext.Current.Response.End();19.} 20.}
在一般處理程序ashx的ProcessRequest的方法內調用上面的方法,url填寫的就是這個ashx的服務器地址,token是一個服務器標示,可以隨便輸入,代碼中的token要和申請填寫的一致,成為開發者才能做開發。
創建菜單
我們添加一些微信服務號,聊天窗口下面有些菜單,這個可以在編輯模式簡單配置,也可以在開發模式代碼配置。微信公眾平臺開發者文檔:http://mp.weixin.qq.com/wiki/index.php?title=自定義菜單創建接口,可以看到創建菜單的一些要點,下面的使用網頁調試工具調試該接口,只是調試接口是否可用,并不是直接創建菜單的,菜單分為兩種:
? click: 用戶點擊click類型按鈕后,微信服務器會通過消息接口推送消息類型為event 的結構給開發者(參考消息接口指南),并且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與用戶進行交互。
? view: 用戶點擊view類型按鈕后,微信客戶端將會打開開發者在按鈕中填寫的url值(即網頁鏈接),達到打開網頁的目的,建議與網頁授權獲取用戶基本信息接口結合,獲得用戶的登入個人信息。
click菜單需要填一個key,這個是在我們菜單點擊事件的時候會用到,view只是一個菜單超鏈接。菜單數據是json格式,官網是php示例,其實C#實現起來也很簡單,就是post發送一個json數據,示例代碼:
1.public partial class createMenu : System.Web.UI.Page 2.{
3.protected void Page_Load(object sender, EventArgs e)4.{
5.FileStream fs1 = new FileStream(Server.MapPath(“.”)+“menu.txt”, FileMode.Open);
6.StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding(“GBK”));
7.string menu = sr.ReadToEnd();8.sr.Close();9.fs1.Close();
10.GetPage(“https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token”, menu);11.}
12.public string GetPage(string posturl, string postData)13.{
14.Stream outstream = null;15.Stream instream = null;16.StreamReader sr = null;
17.HttpWebResponse response = null;18.HttpWebRequest request = null;19.Encoding encoding = Encoding.UTF8;
20.byte[] data = encoding.GetBytes(postData);21.// 準備請求...22.try
23.{
24.// 設置參數
25.request = WebRequest.Create(posturl)as HttpWebRequest;
26.CookieContainer cookieContainer = new CookieContainer();
27.request.CookieContainer = cookieContainer;28.request.AllowAutoRedirect = true;29.request.Method = “POST”;
30.request.ContentType = “application/x-)代碼
31.string content = sr.ReadToEnd();32.string err = string.Empty;33.Response.Write(content);34.return content;35.}
36.catch(Exception ex)37.{
38.string err = ex.Message;39.return string.Empty;40.} 41.} 42.}
access_token獲取方式上面已經講過了,查詢菜單返回的是json數據,其實就是我們創建菜單的menu.txt里面的內容。刪除成功返回信息提示:{”errcode“:0,”errmsg“:”ok“},這個也只要在本地運行就可以了。
接受消息
微信公眾平臺開發者文檔:http://mp.weixin.qq.com/wiki/index.php?title=接收普通消息,我們使用微信就是要對用戶發送的信息進行處理,這邊以接受普通消息為例,語音、圖片消息等,舉一反三可得。
從文檔上可以看出接受消息獲得的是一個xml格式文件,當時有點犯傻的是,我要在哪邊進行接受消息啊?還郁悶了半天,其實就是你一開始填寫的url,是不是很汗顏啊,哈哈。
1.
2.
3.
4.
5.
6.
7.
8.
我們在ashx添加下面代碼:
1.public void ProcessRequest(HttpContext param_context)2.{
3.string postString = string.Empty;
4.if(HttpContext.Current.Request.HttpMethod.ToUpper()== ”POST“)
5.{
6.using(Stream stream = HttpContext.Current.Request.InputStream)
7.{
8.Byte[] postBytes = new Byte[stream.Length];9.stream.Read(postBytes, 0,(Int32)stream.Length);
10.postString = Encoding.UTF8.GetString(postBytes);
11.Handle(postString);12.} 13.} 14.} 15.16.///
18.///
19.private void Handle(string postStr)20.{
21.messageHelp help = new messageHelp();
22.string responseContent = help.ReturnMessage(postStr);23.24.HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
25.HttpContext.Current.Response.Write(responseContent);26.}
messageHelp是消息處理幫助類,這邊提供下部分代碼,完整的可以下載來,獲取的postString是xml,格式如上,我們這邊只需要轉換成XmlDocument進行解析就行了:
1.//接受文本消息
2.public string TextHandle(XmlDocument xmldoc)3.{
4.string responseContent = ”“;
5.XmlNode ToUserName = xmldoc.SelectSingleNode(”/xml/ToUserName“);
6.XmlNode FromUserName = xmldoc.SelectSingleNode(”/xml/FromUserName“);
7.XmlNode Content = xmldoc.SelectSingleNode(”/xml/Content“);
8.if(Content!= null)9.{
10.responseContent = string.Format(ReplyType.Message_Text,11.FromUserName.InnerText, 12.ToUserName.InnerText, 13.DateTime.Now.Ticks,14.”歡迎使用微信公共賬號,您輸入的內容為:“ + Content.InnerText+”rn點擊進入“);15.}
16.return responseContent;17.}
18.///
19./// 普通文本消息
20.///
21.public static string Message_Text 22.{
23.get { return @”
25.
26.
27.
上面的代碼就是接受消息,并做一些處理操作,返回消息。發送消息(圖文、菜單事件響應)
這邊發送消息我分為三種:普通消息、圖文消息和菜單事件響應。普通消息其實上面說接受消息的時候講到了,完整的代碼下邊下載來看。
我們先看下圖文消息和菜單事件響應,微信公眾平臺開發者文檔:http://mp.weixin.qq.com/wiki/index.php?title=回復圖文消息#.E5.9B.9E.E5.A4.8D.E5.9B.BE.E6.96.87.E6.B6.88.E6.81.AF,xml格式為:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21. 圖文消息分為兩種,我們先看下效果,找的圓通速遞的微信服務號做示例:
剛開始做的時候,我以為這兩種應該不是用的同一個接口,但是在文檔中找了半天也沒有找到除這個之外的,就試了下兩個圖文消息,發現就是這個接口發送的,如果多個的話,item中的Description會失效,只會顯示Title,大家試下就知道了,示例代碼:
1.//事件
2.public string EventHandle(XmlDocument xmldoc)3.{
4.string responseContent = ”“;
5.XmlNode Event = xmldoc.SelectSingleNode(”/xml/Event“);6.XmlNode EventKey = xmldoc.SelectSingleNode(”/xml/EventKey“);
7.XmlNode ToUserName = xmldoc.SelectSingleNode(”/xml/ToUserName“);
8.XmlNode FromUserName = xmldoc.SelectSingleNode(”/xml/FromUserName“);
9.if(Event!=null)10.{
11.//菜單單擊事件
12.if(Event.InnerText.Equals(”CLICK“))13.{ 14.if(EventKey.InnerText.Equals(”click_one“))//click_one
15.{
16.responseContent = string.Format(ReplyType.Message_Text,17.FromUserName.InnerText, 18.ToUserName.InnerText, 19.DateTime.Now.Ticks, 20.”你點擊的是click_one“);21.} 22./click_two
23.{ 24.responseContent = sage_News_Main, 25.FromUserName.InnerText, 26.ToUserName.InnerText, 27.DateTime.Now.Ticks, 28.29.m,”我要寄件“,”“,30.31.32.m, ”訂單管理“, ”“, 33.34.35.} 36.)//click_three
37.{ 38.responseContent = sage_News_Main, 39.FromUserName.InnerText, 40.ToUserName.InnerText, 41.DateTime.Now.Ticks, 42.43.m, ”標題“, ”摘要“, 44.45.46.} 47.} 48.}
else if(EventKey.InnerText.Equals(”click_two“))/
string.Format(ReplyType.Mes
”2“,string.Format(ReplyType.Message_News_Ite
”http://www.tmdps.cn/orderPlace.jpg“, ”http://www.tmdps.cn/“)+
string.Format(ReplyType.Message_News_Ite
”http://www.tmdps.cn/orderManage.jpg“, ”http://www.tmdps.cn/“));
else if(EventKey.InnerText.Equals(”click_three“)
string.Format(ReplyType.Mes
”1“,string.Format(ReplyType.Message_News_Ite
”http://www.tmdps.cn/jieshao.jpg“, ”http://www.tmdps.cn/“));
49.return responseContent;50.}
51.///
52./// 圖文消息主體
53.///
54.public static string Message_News_Main 55.{ 56.get
57.{
58.return @”
59.
60.
61.
62.
66. 67. “;68.} 69.}
70.///
71./// 圖文消息項
72.///
73.public static string Message_News_Item 74.{ 75.get
76.{
77.return @”
78.
79.
80.
81.
需要注意的是:XmlNode Event = xmldoc.SelectSingleNode(”/xml/Event“)表示獲取的是事件類型,XmlNode EventKey = xmldoc.SelectSingleNode(”/xml/EventKey“)表示事件標示,就是我們創建菜單添加click的key,通過key我們就可以判斷出是點的哪個菜單。還有一點是回復超鏈接,有時候在服務號會發送一些鏈接,我們打開直接就會鏈接到相關網址,只需要在回復內容中添加:點擊進入,就可以了。
示例Demo下載
下載地址:http://pan.baidu.com/s/1i3kMpwh 后記
關于微信公眾平臺當然還有許多其他的東西,本篇只是一些經驗之談,希望可以起到拋磚引玉的作用。有時候我們發現一些新鮮事物,覺得很難,就遠遠的看著,如果你用心的去感受它,其實也就這么回事。
第三篇:基于JSP+XML+SQL Server開發網絡教學平臺的設計與實現
基于JSP+XML+SQL Server開發網絡教學平臺的設計與實現
摘要 網絡教學平臺是面向教師和學生的網絡教學系統,采用JSP+XML+SQL Server開發,對該平臺的體系結構、功能進行了詳細的分析,并介紹了設計中所采用的關鍵技術。
關鍵詞 網絡;三層結構;教學平臺;JSP;流媒體
引言
隨著計算機技術的飛速發展,信息網絡已成為社會發展的重要保證。如何以網絡為紐帶快速、高效、方便地實現知識傳遞,以現代化手段促進教學改革,將傳統的課堂教學轉變為課堂+電腦+網絡課堂+internet等多種學習方式,是教育工作者應當為之努力的方向。基于JSP技術的網絡教學平臺是依托校園網的優勢設計和開發的,通過此平臺,學生可以不受時間、空間、地域的限制,實現網上瀏覽教學內容、完成作業,參加測試等功能,教師也可借助此平臺,發布公告信息,發布試題,實現課件上傳下載,組織討論答疑等功能。
系統體系結構
網絡教學平臺按照Browser/Server模式,將傳統的瀏覽器/WEB服務器的兩層體系結構擴展成瀏覽器—WEB服務器+應用服務器—數據庫服務器三層體系結構,這種模式采用多種標準的協議和技術,適合于任何硬件平臺和軟件環境。
系統采用JSP與SQL Server 2000 數據庫相結合,其實現的基本原理是利用SQL Server 2000 作為數據倉庫,用Servlet等高性能服務器端程序作為后臺總控程序,JSP程序在前臺運行,Servelet接受用戶的輸入,分別調用不同的JSP程序向客戶端反饋信息,JSP/Servlet通過HTTP連接在服務器端和客戶端傳遞數據,其體系結構如圖1所示。
圖1 系統體系結構
系統功能分析
網絡教學平臺由教師教學系統、學生學習系統和教學管理系統三大模塊組成,這些模塊之間相互聯系,相互配合,構成一個完整的網絡教學系統。系統功能框圖如圖2所示。
圖2 系統功能框圖
1、教師教學系統與學生學習系統
教師教學系統與學生學習系統的功能相對應,主要包含以下幾個模塊:
(1)網絡課堂:網絡課堂是實施網絡教學的主要場所,教師和學生可以通過此模塊實現實時和非實時的網上交流。教師可以實現課程添加、修改,將課件上傳等功能,而學生可以瀏覽教學大綱,教學計劃,教學參考資料,教學課件等內容,也可以下載這些資料,觀看優秀教師教學錄像,通過此平臺學生可以自主預復習,把傳統的學習過程變得更加方便靈活。
(2)網上作業:作業環節是對所學知識理解和鞏固的過程。教師可以在網上發布、批改、刪除作業,學生可以在線或下載完成作業,完成后可以將作業上傳,還可以通過此環節查看自己完成作業的情況,查看教師評語等內容。
(3)網上測試:教師可以完成試題添加,試題管理,可以調用網絡試題庫按章、節或綜合應用自動、手動組卷,進行成績分析;學生除了可以參加網上測試外,還可查詢測試結果。
(4)討論答疑 :在界面上采用了BBS形式,提問與回答的過程是異步的,學生將學習中遇到的問題用留言的形式公布在網上,教師通過此模塊進行答疑。教師也可以在網上發布討論題,引導學生進行學術研究和討論
(5)網上交流:本模塊類似于網絡聊天室,教師與學生、學生與學生之間可進行實時的網上交流,網上討論,通過此模塊可以解決個別學生的概念模糊,解題思路混亂等問題。
(6)實驗指導:教師把學生在實驗中遇到的問題和易犯的錯誤以回答問題的形式表現出來,以交互的形式輔導學生順利完成實驗;學生可以在計算機上撰寫、提交實驗報告,教師可以瀏覽、批閱。
2、教學管理系統
系統分為人員管理、課程管理、作業管理、考試管理和討論交流管理。
(1)人員管理:包括系統管理員、教師和學生管理。其中管理員可以對所有人員進行添加、修改、刪除和查詢,同時還可以對教師的所有權限進行分配。
(2)課程管理:包括課程添加、課程查詢和課件管理。
(3)作業管理:可以查看、修改和刪除作業。
(4)考試管理:試題添加、修改、審核和刪除。
(5)討論交流管理:包括BBS版主管理、帖子管理。
軟件開發技術
系統采用目前流行的JSP技術開發Web應用程序,采用XML技術對教學數據進行處理,通過JSP/Servlet和XML進行數據交互,同時也采用了計算機網絡中的許多成熟技術,如流媒體技術,客戶/服務器技術,數據庫技術。
(1)JSP技術:JSP是一種卓越的Java技術,它基于強大的Java語言,可在任何Web或應用服務器上運行,與Java Enterprise API(Java 企業應用編程接口)緊密結合,可快速創建高性能的Web應用程序。它將內容的生成和顯示進行分離,使Web開發人員能專注于應用邏輯的處理;利用可重用的組件(Java BtensEJB),加快了總體開發速度,并提高了系統質量,采用標識簡化頁面編程,降低了開發人員的難度。
(2)XML與HTML技術:XML和HTML一樣屬于標記語言,可以通過標記來描述數據的結構,并且它允許用戶自行視描述數據的需要,隨意地制定不同的標記,這和HTML有著極大的差別,除此之外,XML不同于HTML對于所有的標記都已經定義了顯示格式的意義,對于XML而言,顯示格式并不是最重要的,相對地,數據所代表的意義才是最重要的,因此,XML并不負責標記顯示的格式。不過,XML卻允許通過較復雜且靈活性的方式顯示數據,如通過XSL、CSS、HTML+XML Island以及編寫程序并通過DOM取出數據再顯示;XML具有跨平臺、與語言和應用程序等無關的特性;XML除了可以使用標記與屬性來描述數據的意義之外,另外還提供了可用來描述文件結構的DTD與XML Schema。
(3)基于連接池的數據庫技術:系統采用DB Connection Manager的Java類管理連接池對象,其中每一個連接池保持一組JDBC數據庫連接對象,可以為任何Servlet所使用。連接池具有以下功能:裝載和注冊JDBC驅動程序;根據在屬性文件中定義的屬性創建連接池對象;實現連接池名字與其實例之間的映射;跟蹤客戶程序對連接池的引用,保證在最后一個客戶程序結束后安全關閉所有連接池。
(4)流媒體技術:采用流媒體技術實現視頻音頻數據傳輸。在網絡上傳輸音/視頻等多媒體信息主要有下載和流式傳輸兩種。下載時用戶必須將既耗費時間又耗費磁盤空間的整個文件復制到自己的計算機中,然后才能播放.因為整個文件必須在下載之后才能播放,所以下載不能用于實況流。同時,下載也不能高效地使用可用帶寬,當客戶端開始下載數字媒體文件時,所有可用網絡帶寬都用于盡可能快地傳輸數據,其他網絡功能可能會減慢或被中斷。流式傳輸只以客戶端正確呈現的速度通過網絡發送數據,所以它比下載更高效地使用帶寬。因此,流式傳輸有助于防止網絡過載并能維持系統的可靠性。在流式傳輸的實現方案中,采用HTTP/TCP來傳輸控制信息,而用RTP/UDP來傳輸音視頻數據。
(5)客戶/服務器技術 :聯入校園網的計算機從功能上來說,可以分成服務器和客戶機兩種,不論哪種服務器,如文件服務器,FTP服務器,數據服務器,郵件服務器,數據服務器,代理服務器等都成天候運行,提供各種服務,為學生服務。
結論
相對于封閉的傳統教學模式而言,網絡化教學做到了信息渠道的暢通無阻,它突破了時間、空間、地域的限制,體現了以學生為本,因材施教的思想,促進了學生創新意識和創新能力的培養,為學生向多方向,全方位發展起到了推波助瀾的作用。
第四篇:基于MVC模式的快速Web應用開發平臺的設計與實現概要
收稿日期:2003-11-07;修返日期:2004-07-08 基金項目:湖南省普通高校青年骨干教師培養計劃([2001]204 基于MVC 模式的快速W eb 應用開發平臺的設計與實現 * 王 禹,王建新,江 南,王 斌
(中南大學信息科學與工程學院,湖南長沙410083 摘 要:在探討Web 應用開發平臺的基礎上,提出了基于MVC(Model-View-Cont roller模式的Web 應用平臺的開發方法,并詳細論述了應用開發平臺的核心體系結構、技術實現方案及其關鍵技術。利用該快速Web 應用開發平臺可以迅速搭建企業級的Web 應用,其代價要比利用傳統的J 2EE 開發平臺低,具有良好的應用前景。關鍵詞:Web 應用平臺;MVC 模式;應用邏輯組件框架;對象-關系映射基礎組件
中圖法分類號:TP31;TP 393 文獻標識碼: A 文章編號:1001-3695(200411-0204-03 Design a nd Im plem ent ation of Rapid Web Applicat ion Plat form Based on M VC Pat t ern WAN G Yu,WAN G J ia n-xin,J IAN G N an,WAN G Bin(C ollege of Information S cience &E ngineer ing,Centr al South Univers ity,Changsha H unan 410083,C hina Abst ract :Introduces developm ent t echnique a bout MVC pa tt ern ra pid Web applica tion plat form on t he bas is of exploreing Web a pplication plat form a nd det ailedly discusses it ’s kernel architect ure,technic reliz at ion schem e and key t
echnologies.B ased on this ra pid Web a pplicat ion developm ent pla tform ,the ent erprise Web applica tion ca n be cons truct ed quickly,a nd it s cost is fewer t ha n t ra dit iona l J 2EE dev elopm ent pla tform ,so it ha s glorious pros pect.Key wo rds:Web Applica tion P lat form;M VC P at tern;Applica tion Log ic Fram ework;Object-Relat ional Mapping C om po-nent近年來,隨著網絡技術和Internet 的迅速發展,基于B/S 模式的Web 應用,因其具有易用性、通用性和良好的可擴展性等優點而發展迅速,正逐漸成為企業應用信息系統市場的主流。但是,當前基于J ava 的Web 應用軟件開發過程中,還存在如下一些不盡人意的地方
[1] :(1程序可重用程度很低。多個項目常常有功能類似的部分,但由于設計之初沒有考慮到或不能深入考慮,導致程序雖然類似卻不能重用,只能重寫的局面。完成一個項目積累下來的只有經驗而沒有代碼,造成工作量的浪費。
(2維護工作煩瑣困難。即使不考慮由于需求模糊造成的追加,項目后期維護仍然煩瑣。用戶的幾乎任何一點修改都需要程序員參與才能夠完成,而這類維護中有近一半以上的修改都只需要非常簡單的改動就可以完成。
(3程序應變能力較弱。由于當前應用軟件的業務和用戶均不夠成熟,需求的變化就是一個客觀存在的必然事實,而目前應用軟件的應變能力無論從技術體系還是程序編碼都不夠強,這也導致了維護工作的困難。
為了能夠有效地提高Web 應用程序的可重用性、可維護性和可擴展性等方面,我們結合MVC(Model-View-C ontroller,模型-視圖-控制器模式來設計一個基于J 2EE 技術的Web
應用開發平臺,它能夠提供大量的高度抽象且功能強大的基礎組件框架;特別地,它還能提供豐富靈活的客戶化程序和應變體系。基于這個Web 應用開發平臺用戶或程序員可以快速地編寫出自己的應用軟件項目或產品
[2]。平臺的體系結構與實現方案 1.1 We b 應用平臺的中心體系結構 圖1 Web 應用平臺的中心體系結構
圖1說明了Web 應用平臺的中心體系結構的各個組件,每個服務器代表所提供的服務。服務器實際可能位于同一機器,或對于大型的Web 主機設備而言,可能存在幾個各自執行相似任務的服務器。這類Web 應用體系結構的長處之一是大部分的Web 應用程序可以通過向用于傳輸應用程序的服務器組或Web 區添加更多機器,升級以支持更多用戶。該Web 應用平臺體系結構中各部分的內容有:(1Web 瀏覽器客戶機。在Web 應用程序中,用戶接口通
過一個Web 瀏覽器進行傳輸。瀏覽器理解的主要語言是超文本標記語言HTML,大部分當前瀏覽器還具有執行JavaScript ?402?計算機應用研究2004 年 因特
網 因特網防
火墻
網絡服務器 企業防火墻 應用程序服務器 數據庫 服務器 企業計算資源
和J a va的內置能力。當前主要應用的瀏覽器有IE,Nets cape 和Opera等。(2Web服務器。它處理HTTP請求,并確定如何生成一個請求響應。在本體系結構中,Web服務器用于響應靜態Web頁,把請求傳遞到一個應用程序服務器,以及接收應用程序服務器的返回內容以生成響應內容。當前的平臺采用主流的Apache服務器作為Web服務器。
(3應用程序服務器。該平臺是基于J2EE的架構,應用程序服務器包括服務程序引擎和EJ B容器。本平臺是基于J2EE架構的輕量級Web應用實現,主要采用服務程序引擎部分來實現應用邏輯。服務程序引擎還提供對J S P的支持,J S P 是與平臺和Web服務器無關的。該平臺采用的服務程序引擎來自Apache的應用服務器Tom cat4.1.12。
(4數據庫服務器。在該體系結構中,數據庫可以通過運行EJ B或服務程序的J DB C API程序調用進行訪問。該平臺的數據庫服務器采用MS S QL S erv er2000。
(5傳統遺留系統。該平臺采用的J av a技術是將不同系統連接在一起的應用程序的理想平臺。J DBC允許建立大量通用數據庫的統一數據庫連接,J a va消息服務(J MS是實現提供消息中介服務標準化接口的良好起點,J a va與XML及簡單對象訪問協議(S OAP的組合可以提供從支持不同語言和通信機制的各種系統到傳統應用程序的訪問。
(6防火墻。防火墻及代理了限制應用程序在隨機套接字上通信的能力。如果客戶機上的代碼需求獨立于瀏覽器之外與服務器通信,則該通信應采用HTTP或HTTPS協議。
1.2 Web應用平臺的技術實現方案
Web應用平臺的程序結構是基于MVC模式來實現的。M VC模式中包括三類組件:Model組件用于描述應用程序中的數據以及操作該數據的方法,與用戶界面無關;View組件負責將數據展現給用戶;Cont roller組件將用戶操作翻譯為對Model 組件的操作。接到C ontroller傳來的操作之后,Model再更新View,以反映出數據的變化[3]。
Web應用平臺的技術實現主要采用J S P,J a va S ervlet,J a-vaB ea ns和J DBC等技術來實現基于J2EE架構的輕量級Web 應用的開發。其中,通過J DBC進行數據庫訪問的J a va Bea ns 代表模型(數據,S ervlet充當控制器(處理請求,J S P頁面則是模型的視圖[4]。
圖2 Web應用平臺的程序結構
如圖2所示,Web瀏覽器發出HTTP請求后,通過Web服務器接收后傳遞,然后由應用服務器中的服務引擎調用操作S ervlet來處理,操作S ervlet再將請求調至J avaBeans,即操作B ea n。操作B ea n更新代表業務對象模型的數據B ean,并向操作S ervlet返回一個操作路徑選擇器。操作S ervlet利用這個路徑選擇器將請求轉發或
重定向至J S P頁面,接著,J S P頁面訪問通常具有定制標記的業務對象,并向瀏覽器發回響應。
2平臺的主要功能與組成內容
Web應用開發平臺作為Web應用系統開發的通用化基礎平臺,其主要的功能要求有:(1將數據建模、數據顯示與用戶交互三者分開,使得程序設計的過程更清晰;(2簡化程序擴展時的副作用分析,從而提高系統的可擴展性;(3將應用程序的功能封裝在眾所周知的API后面,提高系統的可維護性,減少重復代碼,將應用程序的功能和數據表現分開,提高可復用程度;(4提高系統的靈活性,把數據模型、用戶交互和數據顯示等部分設計為可接插組件;(5可以用于部分發布,支持漸近式升級;(6提供自定義的系統通用組件集,包括改善數據庫訪問性能的連接池組件,用于應用程序錯誤處理的組件以及其他實現通用化的用戶與權限管理等組件。
開發平臺的內容包含一系列互相合作的類、Servlet控制程序、JSP定制標記庫以及一些實現通用化功能的組件集,它們共同組成了可重用的基于MVC的框架。
開發平臺主要由以下幾個部分組成:表示控制器(Control-ler部分的Web應用邏輯組件框架,表示視圖(View部分的Web用戶界面組件框架,表示模型(Model部分的對象-關系映射(ORM的基礎組件,以及有關的JSP定制標記組件庫和其他通用化組件集。
3平臺設計與實現的關鍵技術
(1控制器功能的Web應用邏輯組件框架的設計與實現
從JSP頁面或Servlet調用中接收請求,調用相應的操作Bean及數據Bean實現應用邏輯處理,最后再轉移到其他的JSP頁面或Servlet調用的操作。應用邏輯框架中包括四種類型的對象: ●Action(接口實現此接口的應用程序的特定操作;●ActionFactory(類生成操作實例;●ActionServlet(Servlet將請求映射到操作;●ActionR outer 將請求轉發或重定向至JSP頁面。
應用邏輯框架中的對象類型在運行過程中的協作關系如圖3所示。一般情況下,可以從JSP頁面或另一個Servlet調用操作Servlet(ActionServlet,作為表單提交或鏈接激活的結果。根據請求的類型,該Servlet重新檢索相應的操作類型。操作Servlet(ActionServlet從操作庫中獲得一個操作后,它便調用此操作的Perform方法,Perform方法實現了特定應用程序的功能,通常用于更新業務對象。Action.perform返回一個操作路徑選擇器,它具有一個URI和Boolean變量,指示是否將請求轉發或重定向至這個URI。操作Servlet使用操作路徑選擇器調用路徑選擇器的Route方法,Route方法將請求轉發或重定向到適當的Web組件[5,6]。
基于框架增加應用開發時,可以考慮按以下幾步實現:①實現Action操作,使其能操作業務對象模型,而且可能在適當
? 5 2 ?
第11期王禹等:基于MVC模式的快速Web應用開發平臺的設計與實現
瀏覽器 操作Servlet(控制器 4.返回操作路徑 JSP頁面(視圖
5.轉發或重定向 1.請求 7.響應 操作Bean 2.調度請求 3.更新 的范圍內為J S P頁面(視圖存儲B ea n,以便訪問;②實現J S P 頁面,使其能訪問業務對象以及特定范圍內的B ea n;③增加到應用程序屬性文件的映射,以便使上述產生的操作及頁面與邏輯名等同。
圖3 Web應用邏輯組件框架中對象類型的協作順序圖(2模型功能的對象-關系映射的基礎組件的設計與實現
通過數據Bean來存取后臺數據庫的相應數據,即將J a va 對象映射到數據庫表中,也就是要創建一個J ava對象來代表數據庫表的其中一行,然后初始化它的各個域,并且通知對象將其添加到數據庫中。此即對象到關系映射技術(Object-Re-la tional
Ma pping,ORM。平臺的ORM基礎組件設計一個基礎類,要能夠簡化數據Bean代碼的一個抽象數據庫對象類。并且,每一個映射到數據庫表的J ava類必須能夠提供它們自己的添加、更新和刪除語句,同時還必須能夠從ResultS et對象中讀出各個域。該抽象類Dat aba seObject的概要說明如下: public abstr act class Da tabaseObject{ public Vector g etAll(Connection connthrows S QLEx ception{} public Vector getAll(Connection conn,Str ing w hereC lausethrow s S QLException{} //返回表中符合條件的所有對象
public Vector getAll(Connection conn,S tring whereCla use,Str ing addi-tionalTablesthrows SQLException{} //執行一個指定連接的查詢串
public Vector executeQuer y(Connection conn,Str ing quer ythrows S QLE xception{} //插入對象到數據庫中
public int insert(Connection connthrows S QLException{} //返回表中用于S elect的字段列表 public abstr act Str ing getFieldList(;public Str ing getFieldList(S tring tableName{};public abstr act Str ing getInser tStatement(;public abstract void prepar eInsertStatem ent(Pr epar edS tatement s throw s S QLE xception;
//修改數據庫中的對象
public int update(Connection connthr ows SQLException{} public abstr act Str ing getUpdateS tatement(;public abstract void prepareUpdateS tatement(PreparedStatem ent s throw s S QLE xception;//刪除數據庫中的對象
public int delete(Connection connthrows S QLException{} public abstr act Str ing getDeleteS tatement(;public abstract void pr epar eDeleteStatem ent(PreparedStatement s throw s S QLE xception;public abstr act Str ing getTableName(;public abstr act DatabaseObject createInstance(ResultS et r esults throw s S QLE xception;} 所有業務應用需要的數據B ea n都可以從這個抽象對象基礎類上繼承出來,再結合具體的要求進行相應的擴展。
(3視圖功能的Web用戶界面組件框架的設計與實現
HTML表單用于Web應用程序,而用戶界面框架(如Sw ing和AWT用于傳統軟件,頁面制作者使用表單而不是用戶界面工具包來創建用戶界面。所以,為Web應用的開發提供一個類似傳統軟件用戶界面框架的Web用戶界面組件框架,這樣的作用是能夠大大提高Web應用界面開發中的代碼重用,也給開發人員提供了一個界面開
發中能不斷擴展的基礎平臺。在Web應用表示層的視圖部分,J S P規范沒有直接支持表單,Web應用平臺在此基礎上實現Bea n表單框架,也就是開發平臺的Web用戶界面框架。而且J SP沒有提供界面工具中類似于組件、容器或布局管理器的對象。但是J S P具有定制標記和包含Web組件的能力兩個特色,利用這兩個特色,可以實現定制的組件、容器和布局管理器。所以,Web應用平臺通過設計節點、區域和模板實現網頁的基礎組件來實現可擴展的、可重用的和可維護的Web應用的界面部分。
(4平臺的J S P定制標記組件庫和其他通用化組件集的設計與實現
它包括用于優化數據庫訪問效率的數據庫連接池,系統初始化設置、客戶端的顯示、上傳下載與頁面顯示分頁等通用控制組件,以及實現加密解密、第三方打印組件和通用的系統用戶與功能權限管理模塊等內容。基于該平臺的Web應用開發過程中,可以直接使用上述公用組件所提供的通用化功能,從而減少了開發Web應用系統的工作量。
4結束語
基于MVC模式的Web應用平臺具有如下特點:能夠快速完備地搭建Web應用系統;采取設計模式來擴展顯示邏輯、應用邏輯以及數據模型的復用度;結合區域與模板重用的定制JSP頁面;提供優化數據庫訪問的連接池以及豐富的、通用的工具組件。通過實踐證明,基于此通用化平臺開發的Web應用系統能夠具有以下的優良特點:使應用程序模塊化;減少了HTML和Java代碼的相關性;允許開發人員為相同的數據提供多個視圖;簡化了應用程序流程,使得應用程序更易維護,是一種進行Web應用開發的可靠模型。
參考文獻: [1]蔣步星.Web應用軟件開發平臺ExPl atO-Web[C].全國第四屆 Java技術與應用交流會,2001.285-288.[2]齊勇,等.基于Web的中間件系統集成框架———應用服務器的 研究[J].計算機研究與發展,2001,38(4:430-437.[3]姚慧廣,趙岳松.Web編程中MVC模型的應用[J].微機發展, 2002,11(3:9-10.[4]何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算 機工程,2002,28(6:274-281.[5]王斌,王建新,張堯學,等.基于通信的MAS內部自動服務協商 [J].小型微型計算機系統,2003.[6]王斌,張堯學,陳松喬.分布式環境下代理協同的主動黑板結構 設計模式[J].計算機工程,2003.作者簡介: 王禹,男,碩士研究生,主要研究方向為網絡信息系統;王建新,男,教授,博士,主要研究方向為計算機網絡理論;江南,男,碩士,主要研究方向為軟件工程;王斌,男,博士,主要研究方向為組件技術。
? 6 2 ?計算機應用研究2004年
JSP或Servlet ActionServlet ActionFactory Hashtable Class Action ActionRouter
service(getAction(Action action=get(classname action=newInstance(put(classname,action ActionRouter router=perform(this,req,resnew(“URL” route(this,req,res
第五篇:對“中澤地產XX項目全周期開發計劃”的幾點建議(朝陽劉總)
對“中澤地產XX項目全周期開發計劃模板”的幾點建議
一、建議將行政等事務性的工作及流程,從此計劃中刪除,由專項計劃規范實施。因為行政事務性工作對總體項目的開發計劃沒有直接影響。將不重要的日常性工作從此表中刪除,如圍擋的搭建、小金額的配套工程合同等。
二、建議多設置些一級節,將一級節點貫穿于全周期開發各主要階段,對于集團來講,重點把控一級節點就可以實現全盤監督與管理。此外,還應有二級和三級節點,二級節點由集團/城市公司共同監管。三級節點/專項計劃由職能中心/城市公司自行把控。但是總的節點數量不宜過多,節點過度會增加公司人力資源的成本。如此更便于集團/城市公司對總體開發計劃的把控與責權劃分。
三、全周期開發計劃表,應考慮二條時間線路進行編制。其一,是按開發的自然的流水時間進行編制,從拿地、開發到交付,全過程一目了然。其二,是按開發模塊分別進行編制,比如可按土地拓展階段、項目啟動階段、規劃方案階段、擴初設計階段、施工階段、營銷及策劃階段、竣工及交付階段等,并將成本合約、招采規劃及評審會議工作交叉貫穿于各個階段之中。
四、在每個開發模塊階段,建議應增加一個豎向列的內容,就是專題會議(評審會議)計劃,注明會議級別、由誰倡議和主持、由哪些部門參加、會議時間、幾次之后形成決議。比如,在營銷策劃階段,應該有籌劃方案及定位的會議;入伙實施階段,應該有入伙方案會議等等。