知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當前位置>首頁 » 新聞資訊 » 網(wǎng)站建設 >
Web應用程序開發(fā)方法研究
發(fā)表時間:2012-9-7
發(fā)布人:葵宇科技
瀏覽次數(shù):72
Web應用程序開發(fā)方法研究
摘要:如今已進入了web2.0高速發(fā)展的網(wǎng)絡時代,各種基于互聯(lián)網(wǎng)的Web應用程序如雨后春筍般出現(xiàn)。近幾年,Web開發(fā)技術層出不窮,日趨成熟。本文介紹了Web技術的前世今生,對計算機科學前輩們孕育的軟件設計模式、JavaEE平臺下的流行開發(fā)框架進行了分析。總結了Web應用程序開發(fā)的一般步驟,提出了將軟件復用技術,經(jīng)典設計模式、開源框架合理應用于程序開發(fā)以達到高效開發(fā)大型Web項目的思路。
關鍵詞: Web應用程序 軟件復用 設計模式 MVC
一、Web應用程序概述
Web應用程序首先是“應用程序”,它和用標準的程序語言,如C、C++等編寫出來的程序沒有什么本質上的不同。然而Web應用程序又有自己獨特的地方,就是它是基于Web的,而不是采用傳統(tǒng)方法運行的。換句話說,它是典型的瀏覽器/服務器架構的產(chǎn)物??v觀歷史,Web技術經(jīng)歷了以下幾個發(fā)展階段。
客戶端技術:
1、用超文本技術(HTML)實現(xiàn)信息與信息的連接。用統(tǒng)一資源定位技術(URI)實現(xiàn)全球信息的精確定位;用新的應用層協(xié)議(HTTP)實現(xiàn)分布式的信息共享。2、JavaApplets和JavaScript語言隨心所欲地豐富HTML頁面的功能。
3、真正讓HTML頁面又酷又炫、動感無限的CSS(Cascading Style Sheets)和DHTML技術。
服務器端技術:
1、CGI(CommonGateway Interface)技術。CGI技術允許服務端的應用程序根據(jù)客戶端的請求,動態(tài)生成HTML頁面,使客戶端和服務端的動態(tài)信息交換成為了可能。早期的CGI程序大多是編譯后的可執(zhí)行程序,其編程語言可以是C、C++、Pascal等任何通用的程序設計語言。后來的Perl語言結合了C語言的高效以及sh、awk等腳本語言的便捷,很快,Perl在CGI編程領域的風頭就蓋過了它的前輩C語言。隨后,Python等著名的腳本語言也陸續(xù)加入了CGI編程語言的行列[9][13]。
2、專用于Web服務端編程的PHP(Personal Home Page Tools)語言。PHP語言將HTML代碼和PHP指令合成為完整的服務端動態(tài)頁面,Web應用的開發(fā)可以用一種更加簡便、快捷的方式實現(xiàn)動態(tài)Web功能。
3、Microsoft借鑒PHP的思想,在其Web服務器IIS 3.0中引入了ASP技術。ASP使用的腳本語言是我們熟悉的VBScript和JavaScript。
4、Servlet技術問世,JSP技術誕生。Servlet和JSP的組合(還可以加上JavaBean技術)讓Java開發(fā)者同時擁有了類似CGI程序的集中處理功能和類似PHP的HTML嵌入功能,此外,Java的運行時編譯技術也大大提高了Servlet和JSP的執(zhí)行效率[15][16]。
兩種重要的企業(yè)開發(fā)平臺:
Web服務端開發(fā)技術的完善使開發(fā)復雜的Web應用成為了可能。兩個最重要的企業(yè)級開發(fā)平臺——J2EE和.NET在2000年前后分別誕生于Java和Windows陣營,它們隨即就在企業(yè)級Web開發(fā)領域展開了你死我活的拼爭。平臺針鋒相對的競爭關系促使了Web開發(fā)技術以前所未有的速度提高和躍進。J2EE是純粹基于Java的解決方案,J2EE體系及相關的軟件產(chǎn)品已經(jīng)成為了Web服務端開發(fā)的一個強有力的支撐環(huán)境。和J2EE不同的是,Microsoft的.NET平臺是一個強調多語言間交互的通用運行環(huán)境。ASP.NET超越了ASP的局限,可以使用VB.NET、C#等編譯型語言,支持WebForm、.NET Server Control、ADO.NET等高級特性??梢哉f.NET平臺中的ASP.NET是Web開發(fā)技術在Windows平臺上的一個集大成者。
XML語言及相關技術:
XML語言對信息的格式和表達方法做了最大程度的規(guī)范,應用軟件可以按照統(tǒng)一的方式處理所有XML信息。這樣一來,信息在整個Web世界里的共享和交換就有了技術上的保障。HTML語言關心的是信息的表現(xiàn)形式,而XML語言關心的是信息本身的格式和數(shù)據(jù)內容。從這個意義上說,XML語言不但可以將客戶端的信息展現(xiàn)技術提高到一個新的層次,而且可以顯著提高服務端的信息獲取、生成、發(fā)布和共享能力。
可以預見的是,在未來的幾年里,還會有許多新的開發(fā)技術或開發(fā)平臺出現(xiàn)。從靜態(tài)技術到動態(tài)技術,從開發(fā)平臺到應用模型,從傳統(tǒng)Web到語義化Web……為了讓更多的人獲得更有價值的信息服務,Web開發(fā)者們也許還會經(jīng)歷一次又一次的技術浪潮,還會面臨更為嚴峻的技術挑戰(zhàn)。
二、基于JavaEE平臺的Web開發(fā)技術
在基于JavaEE陣營的web應用開發(fā)過程中,JSP/Servlet是主要的實現(xiàn)技術。但是JSP并沒有很好地實現(xiàn)業(yè)務邏輯與用戶界面的分離,符合MVC設計模式的Struts框架很好地解決了這一問題。這里首先對MVC設計模式進行概要介紹,然后對Struts、Hibernate等框架應用的主要思想進行詳細的描述。
1、MVC設計模式
MVC(ModeI—View—Controller),即把一個應用按照Model,View,Controller的方式進行分離,這樣一個應用被分成三個層一模型層、視圖層、
控制層,如圖1所示:
(1)視圖層
視圖(View)代表用戶交互界面,MVC設計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理以及用戶的請求,而不包括對視圖上的業(yè)務流程的處理。
(2)模型層
模型(Model)就是業(yè)務流程/狀態(tài)的處理以及業(yè)務規(guī)則的制定。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結果。業(yè)務模型的設計是MVC最主要的核心。(3)控制層
控制(Controller)可以從用戶接收請求,將模型與視圖匹配在一起.共同完成用戶的請求,可將其視為一個分發(fā)器.控制層并不做任何的數(shù)據(jù)處理。MVC設計模式達到了分而治之的目的,但是在具體實現(xiàn)上并不是千篇一律。比如我們熟悉的Struts框架只是其中的一種實現(xiàn)[13]。
2、流行Web開發(fā)框架介紹
軟件系統(tǒng)發(fā)展到今天已經(jīng)很復雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當于讓別人幫你完成一些基礎工作,你只需要集中精力完成系統(tǒng)的業(yè)務邏輯設計。框架,即framework,其實就是某種應用的半成品,把不同應用程序中有共性的一些東西抽取出來,做成一個半成品程序,這樣的半成品就是所謂的程序框架。這樣每次開發(fā)就不用白手起家,而是可以在這個基礎上開始搭建。
使用框架的最大好處:減少重復開發(fā)工作量、縮短開發(fā)時間、降低開發(fā)成本。同時還有其它的好處,如:使程序設計更合理、程序運行更穩(wěn)定等?;谶@些原因,基本上現(xiàn)在在開發(fā)中,都會選用某些合適的開發(fā)框架,來幫助快速高效的開發(fā)應用系統(tǒng)。
常見的JAVA框架:
(1)Struts框架
Struts是一種基于Java的技術。web應用程序開發(fā)人員通過Struts即可充分利用面向對象設計、代碼重用以及“編寫一次、到處運行”的優(yōu)點,它是使用Servlet和JSP技術的一種MVC實現(xiàn)。Struts本質上是一款開源軟件。Struts的作用是為了幫助我們減少在運用MVC設計模型來開發(fā)Web應用的時間。如果我們想混合使用Servlet和JSP的優(yōu)點來建立可擴展的應用,Struts是一個不錯的選擇[5]。
(2)Spring框架
Spring 也表示是一個開源框架,是為了解決企業(yè)應用程序開發(fā)復雜性由Rod Johnson創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為 J2EE 應用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益[6]。
(3)Hibernate框架
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任[5]。
(4)SSH框架
SSH為struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架。集成SSH框架的系統(tǒng)從職責上分為四層:表示層、業(yè)務邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統(tǒng)的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業(yè)務層用Spring支持。具體做法是:用面向對象的分析方法根據(jù)需求提出一些模型,將這些模型實現(xiàn)為基本的Java對象,然后編寫基本的DAO接口,并給出Hibernate的DAO實現(xiàn),采用Hibernate架構實現(xiàn)的DAO類來實現(xiàn)Java類與數(shù)據(jù)庫之間的轉換和訪問,最后由Spring完成業(yè)務邏輯[5]。
三、Web應用軟件復用性的探討
從上面提到的開發(fā)框架產(chǎn)生的背景中可看出,隨著軟件規(guī)模的不斷擴大,其復雜度將不斷提高。隨著時間的推進,技術的進步,開發(fā)者們從其他工業(yè)領域借鑒的經(jīng)驗中認識到只有實行軟件工業(yè)化生產(chǎn).才能滿足日益增長的軟件需求。同時不斷提出各種技術、理論和方法來開發(fā)軟件,希望以最小的人力、物力和財力資源來獲得更大的軟件生產(chǎn)規(guī)模以及更可靠的軟件質量[1]。
(1)基于構件的軟件復用
在眾多的軟件復用開發(fā)方法中,基于構件的軟件開發(fā)方法是一條有效實際的軟件復用途徑。所謂構件是指系統(tǒng)中可以明確辨識的構成成份,軟件構件是系統(tǒng)中具有一定意義的獨立構成成份。
構件應具備的基本特征:(1)復用:復用是構件最基本的性質。構件的設計必須滿足能在新的應用項目中使用;(2)封裝:是對外界隱藏構件的設計和實現(xiàn)細節(jié),僅通過接口與外界交互,可以保證構件功能復用的完整性和構件開發(fā)及交互的獨立性;(3)組裝:構件可以通過組裝形成新的構件或系統(tǒng),組裝是構件復用的手段;(4)粒度:構件是有大小的,與領域相關的構件粒度大;(5)層次:構件可以按層次進行劃分,企業(yè)級應用系統(tǒng)的復雜邏輯可以通過分層來解決[2]。
開發(fā)某個應用時,在設計各個模塊、類等時就要注入軟件重用的思想,因為在軟件設計分析階段的軟件復用更有通用性和重用性。這樣就能設計出重用性相對較高的復用構件。并方便構件庫的設計.在以后進行類似系統(tǒng)開發(fā)時,可以根據(jù)需求從構件庫中選取合適構件直接加以復用,而不用重新設計開發(fā)。在構件庫中查找不到的情況下,按照軟件復用的思想設計新的復用構件,并加以存儲[1]。
(2)基于范式抽象的軟件復用
所謂范式就是抽象的解決方案模板,它可在不同具體項目中使用。范式抽象就是在此基礎上提出的對范式的設計方法。針對不同的問題域,就應該有與之對應的設計方法,這樣可以使范式的設計達到很高的重用性。針對面向對象分析階段具體現(xiàn)狀,總結出下列范式抽象方法[4]:
(1)關系抽象
針對具體的項目,會分析出大量的關系模型。例如在學校排課表系統(tǒng)中,需要定義教師類,它包括教師姓名、性別、職稱等有關教師的基本信息,同時,為了便于教師很快得出自己的上課表,還需要定義一個與教師對應的教師課表類,這個類顯示了一周中教師的課程安排情況;在網(wǎng)上購物系統(tǒng)中,需要定義一個購物者類,包括了購物者的相關信息,同時為了得到購物者所購的物品,還需定義一個購物車類,該類描述了購物者與所購買的物品的對應關系。這兩個系統(tǒng)的具體業(yè)務是不同的,但教師類與教師課表類、購物者類與購物車類的關系卻是基本相同的,都是一個實體對另一個實體的擁有關系,同樣,所進行的操作也基本相同,諸如都涉及到對所擁有實體的查詢操作等。因此可將這種關系抽象出來,定義為擁有關系,然后在此關系的基礎上定義相應的操作。這種關系就可以以范式的形式保存起來,在不同的項目中都可重用這種范式。同樣,還可抽象出許多其他的關系范式,如實體——內容關系,上下級關系等。這些關系都是不依賴于具體的項目和業(yè)務的,可重復使用,只是在針對具體的業(yè)務時,在相關屬性和方法上稍作修改就可以了[3]。
(2)相似對象抽象
在不同項目的OOA階段,還會分析出大量的相似對象或類,例如用戶、用戶組、角色、權限等在所有涉及到權限管理的系統(tǒng)中都會出現(xiàn)這類對象;在一些相同領域的項目中,由于涉及的領域的標準化,有些對象的相似性以及相同的機率會更大。對于這些相似程度如此大的對象來說,由于其在項目開發(fā)中的相對獨立性,把這些對象模型以范式的形式保存起來會使分析的結果得到更大的重用[3]。
按照上述思想進行的范式抽象稱為相似對象抽象,這種抽象依據(jù)的是分析階段的對象模型,這種對象模型具有獨立的、高度的相似性,抽象出來的范式可稱為對象范式。這種范式與具體項目之間的相似可稱為表面相似性。表面相似越接近,范式的重用性就越大。
四、淺談軟件設計模式
首先引出模式的概念:對于某領域內的專家知識和成功經(jīng)驗的文檔記錄以及總結,這樣的經(jīng)驗在特定的環(huán)境下對于某類問題具有廣泛的適用性,并且模式定義了一組和成功經(jīng)驗以及問題解法相關聯(lián)的詞匯[8]。在辯證法的角度來看:模式是廣義化的并可重復使用的人類經(jīng)驗總結,從這一角度來看,軟件工程領域的軟件重用概念與模式的理論是相通的。軟件設計模式其實就是“程序員進行面向對象代碼重用時的一種技術手段,進而成為程序員之間、各項工程之間的通訊手段”。軟件設計模式屬于在更高層次上對程序代碼、程序流程圖的抽象,是對軟件編程思路、軟件設計流程的另一種表述。隨著計算機科學技術發(fā)展,前輩們多年來的智慧結晶創(chuàng)造出了一些經(jīng)典的設計模式。如創(chuàng)建型的單件模式、工廠模式,結構型的適配器模式、外觀模式,行為型的迭代器模式、命令模式、狀態(tài)模式、解釋器模式等。軟件設計模式在軟件的發(fā)展過程中起到了里程碑的作用,促進了軟件質量,提高了軟件可靠性。更為重要的是,它提高了軟件的可讀性,為軟
件設計師們進行軟件設計理念的交流提供了平臺。同時它為軟件設計師們開辟了一條通往其他領域優(yōu)秀理念的大路,相信會有更多在其他行業(yè)廣泛應用的理念會應用于軟件設計領域,從而產(chǎn)生更多的軟件設計模式。軟件設計模式的出現(xiàn)是必然的,它反映了人類思維活動的規(guī)律,反映了各學科之間存在著必然的聯(lián)系;軟件設計活動同樣是人類智慧的結晶,多種軟件模式的產(chǎn)生正是其他學科領域的詞匯移植的結果。但是模式畢竟只是模式,實用高效才是硬道理,具體實踐中還要視實際情況靈活變通[7][8]。
五、Web應用程序的開發(fā)一般過程
不管是用什么平臺,什么技術,開發(fā)每個Web應用程序都有其共同的一些工作。技術、平臺要根據(jù)客戶要求、項目情況而定,關鍵是開發(fā)程序的整體思想、解決方案。筆者總結出如下通俗易懂的步驟。
步驟(1):分析
開發(fā)一個web應用的第一步是分析客戶的需求。此時應該
定義出一個盡量周全的該應用應該提供的功能清單。開發(fā)者需要明白客戶想要什么(和客戶溝通時要確保你們對方都知道對方在說些什么)。從與客戶的交流討論中總結出需求和軟件規(guī)格。
步驟(2):設計
一旦弄清楚了這個Web應用需要做哪些事情,就可以開始設計了??梢越Y合一些經(jīng)典的設計模式,將其靈活運用。這個步驟通常會反反復復進行很多次,每一次都把設計細化一些。第一要做的是畫出頁面流程圖。頁面流程圖通常是很抽象的黑白繪畫,畫出將要實現(xiàn)的web應用的樣子(可以加一些色彩,但盡量保持簡單)。當你對做出的草圖滿意后,你可以開始制作實體模型了。實體模型仍然是些圖案,但有色彩和細節(jié)。最終的實體模型看起來應該像你將要實現(xiàn)的Web應用的一個截屏圖。不要忘記及時與客戶交流溝通,他會看看這些東西,并給予他的認可。
步驟(3):實現(xiàn)、選擇一個框架
現(xiàn)在已經(jīng)知道了要去開發(fā)什么東西,那就要把它做出來。這一部分的工作很多,大部分的時間都要花在這個上面。第一個要做的決定是如何著手,采用什么樣的技術,什么框架。這里有很多選擇的余地,開發(fā)人員需要選出一個適合自己的。下面是一些常用的Web技術列表:
·ASP.NET
·PHP
·JSP
·Ruby> 本文在參閱大量資料的基礎上對Web應用程序開發(fā)進行了分析總結。從Web應用程序的發(fā)展講起,介紹了計算機前輩們的軟件設計思想、框架。隨著當前軟件項目復雜度的提升,怎樣快速高效即“多、快、好、省”地開發(fā)Web應用程序成為人們關心的話題。筆者嘗試將軟件復用技術、設計模式、主流框架靈活運用于實際的Web項目開發(fā),以構建高效的開發(fā)方法。
參考文獻:
[1] 董躍華,馬亞飛.軟件復用在綜合教務信息管理系統(tǒng)中的探索[J].江西理工大學學報,2011,32(3):26-29.
[2] 江龍強,汪海濤.基于構件的軟件復用技術研究及在 MIS中的應用[J].微型機與應用,2011,30(17):16-18.
[3] 肖振南,陳紀銘.淺析軟件復用技術的應用[J].電腦知識與技術,2011,7(21):5163-5164.
[4] 熊風光.基于構件的軟件復用技術的研究[D].山西:中北大學,2005.
[5] 百度百科. http://baike.baidu.com/view/25603.htm
[6] 維基百科. http://zh.wikipedia.org/wiki/Spring
[7] 閻宏.JAVA與模式[M].北京:電子工業(yè)出版社,2002.
[8] 王越超,姚娛.探討軟件設計模式背后的科學方法與科學哲學[J]. 廣州城市職業(yè)學院學報,2010,4(1):45-49.
[9] 徐長盛,戴超,謝立.一種快速開發(fā)Web應用程序方法的研究[J]. 計算機工程與設計,2004,6(7):25-29.
[10] 景曉璽,葛瑋,郝克剛. 基于JMS的企業(yè)即時通訊系統(tǒng)的設計與實現(xiàn)[J]. 計算機應用與軟件,2009,26(3):167-169.
[11] 徐晶,許煒.消息中間件綜述[J].計算機工程,2005,31(16):73-76.
[12] 余童蘭,張娟,何杰[J].電腦知識與技術,2010,6(25):7049-7051.
[13] 孫衛(wèi)琴.Java網(wǎng)絡編程精解[M].北京:電子工業(yè)出版社,2007.
[14] PaulJ.Deitel,Harvey M.Deitel.Java for programers[M]. 北京:電子工業(yè)出版社,2010.
[15]Eckel B.Thinking in Java[M].America:Person Education,2003.
[16]EnterpriseEngineering Software[EB/OL].http://www.intergraph.com/
相關案例查看更多
相關閱讀
- 昆明軟件公司
- 云南網(wǎng)站建設價格
- 汽車報廢回收管理軟件
- 小程序公司
- 云南科技公司
- 網(wǎng)站建設招商
- 制作一個小程序
- 云南小程序開發(fā)推薦
- 網(wǎng)站建設案例
- 云南網(wǎng)站制作哪家好
- 網(wǎng)站建設服務公司
- 云南網(wǎng)站建設選
- 云南網(wǎng)站建設首頁
- 云南省建設廳網(wǎng)站
- 網(wǎng)站建設首選公司
- 云南微信小程序開發(fā)
- 昆明小程序開發(fā)聯(lián)系方式
- 云南網(wǎng)站建設特性
- 云南網(wǎng)站建設 網(wǎng)絡服務
- 小程序開發(fā)公司
- 北京小程序制作
- 分銷系統(tǒng)
- 云南企業(yè)網(wǎng)站
- web
- 汽車回收系統(tǒng)
- 小程序開發(fā)課程
- 云南網(wǎng)絡營銷顧問
- 云南建設廳官方網(wǎng)站
- 報廢車拆解系統(tǒng)
- 小程序被攻擊