版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
系統(tǒng)開發(fā)項目-概要設(shè)計說明書25/26********************建設(shè)項目*********************系統(tǒng)開發(fā)“***********”系統(tǒng)建設(shè)概要設(shè)計說明書*********有限公司2015.5版本v1.0文檔審批修訂記錄日期版本編號簡要說明著者審核者審核日期2015.5.5V1.0王**說明:“簡要說明”主要是對修訂原因和修訂的內(nèi)容進行簡要說明
目錄TOC\o"1-5"\h\z\u1引言 41.1編寫目的 41.2背景 42系統(tǒng)總體設(shè)計 42.1需求規(guī)定 42.1.1系統(tǒng)集成建設(shè) 42.1.2系統(tǒng)功能設(shè)計 5網(wǎng)站欄目設(shè)計 5后臺功能設(shè)計 52.1.3系統(tǒng)界面設(shè)計 72.1.4系統(tǒng)可擴展性設(shè)計 82.1.5系統(tǒng)性能設(shè)計 82.2運行環(huán)境 82.3基本設(shè)計概念 92.3.1系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D 92.4技術(shù)路線 92.4.1底層開發(fā)框架 92.4.2Web開發(fā)框架 10SpringMVC 10Struts1 12Struts2 142.4.3前臺JavaScript框架 162.4.4數(shù)據(jù)持久層框架 17Hiberante 17MyBatis 19SpringDataJpa 20綜述 213系統(tǒng)部署 214系統(tǒng)性能設(shè)計 214.1高效的數(shù)據(jù)算法 214.2負(fù)載均衡 214.3良好的接口設(shè)計 224.4低耗的磁盤IO 224.5細(xì)粒度的事務(wù)管理 224.6應(yīng)用配置相關(guān)調(diào)優(yōu) 234.7數(shù)據(jù)庫性能設(shè)計 234.7.1索引控制 234.7.2SQL優(yōu)化 234.8數(shù)據(jù)庫高可用性設(shè)計 234.8.1設(shè)計原則 23分布性原則 23讀寫分離原則 23垂直分割原則 24水平分割原則 245系統(tǒng)出錯設(shè)計 245.1出錯信息 245.2補救措施 255.3系統(tǒng)維護設(shè)計 25
1引言1.1編寫目的本文檔基于《*********開發(fā)項目招標(biāo)文件》和《*********開發(fā)項目開發(fā)合同》和《“*********”系統(tǒng)需求規(guī)格說明書》,進行“*********”系統(tǒng)開發(fā)項目的概要設(shè)計。通過編制本文檔,明確本項目的整體架構(gòu)和整體設(shè)計思想,并為系統(tǒng)的詳細(xì)設(shè)計和技術(shù)實現(xiàn)提供指導(dǎo)和幫助。在下一階段的詳細(xì)設(shè)計中,程序設(shè)計員就可參考此概要設(shè)計報告,對系統(tǒng)進行詳細(xì)設(shè)計。在以后的軟件測試以及軟件維護階段也可參考此說明書,以便于了解在概要設(shè)計過程中所完成的各模塊設(shè)計結(jié)構(gòu),或在修改時找出在本階段設(shè)計的不足或錯誤,更好的完善和優(yōu)化文檔。1.2背景 *********建設(shè)是*********信息化建設(shè)的一項重要工作。待網(wǎng)站建設(shè)完成,將顯著提升原*********各部門內(nèi)計算機網(wǎng)絡(luò)應(yīng)用的水平,提升*********的辦公效率及業(yè)務(wù)水平。充分考慮*********的實際工作情況、業(yè)務(wù)流程、網(wǎng)站建設(shè)的目標(biāo)要求,在本次網(wǎng)站設(shè)計構(gòu)建中,應(yīng)始終堅持安全、便捷、切合實際工作的原則,有利于*********廣大教職工的高效、安全及簡單易用。根據(jù)*********建設(shè)的目標(biāo)和業(yè)務(wù)需求,在充分分析*********現(xiàn)有通信網(wǎng)絡(luò)基礎(chǔ)上,構(gòu)建*********網(wǎng)絡(luò),作為整個*********網(wǎng)運行的基礎(chǔ)網(wǎng),網(wǎng)站應(yīng)能滿足*********多項業(yè)務(wù)、高帶寬應(yīng)用的需求,因此*********網(wǎng)將建成一個承載多種業(yè)務(wù)的網(wǎng)絡(luò)平臺。2系統(tǒng)總體設(shè)計2.1需求規(guī)定2.1.1系統(tǒng)集成建設(shè)包括基礎(chǔ)平臺建設(shè)、網(wǎng)絡(luò)設(shè)備、安全設(shè)備、服務(wù)器設(shè)備和系統(tǒng)軟件集成。2.1.2系統(tǒng)功能設(shè)計網(wǎng)站應(yīng)用系統(tǒng)開發(fā),包括門戶網(wǎng)站建設(shè)、后臺管理系統(tǒng)建設(shè)。網(wǎng)站欄目設(shè)計網(wǎng)站欄目功能說明備注網(wǎng)站前臺管理行業(yè)資訊展示行業(yè)內(nèi)最新資訊信息企業(yè)展廳展示企業(yè)產(chǎn)品圖片專家點評展示專家的點評信息活動展示以圖文列表形式展示活動信息聯(lián)系我們展示聯(lián)系方式信息網(wǎng)站后臺管理欄目內(nèi)容管理各類文章的添加及管理廣告及廣告位管理廣告的添加及管理聯(lián)系我們和友情鏈接管理友情鏈接添加、編輯及聯(lián)系我們的信息管理輿論監(jiān)督管理輿論監(jiān)督信息的添加及管理企業(yè)管理企業(yè)信息的添加及管理后臺功能設(shè)計.1欄目內(nèi)容管理進入欄目內(nèi)容管理頁面,點擊欄目列表,出現(xiàn)欄目列表頁,在此頁面,可以新建文章。點擊欄目名稱,進入欄目內(nèi)容頁,所有文章內(nèi)容以信息分頁列表形式呈現(xiàn),可對文章進行查詢、編輯、刪除操作。在文章信息分頁列表中,可點擊編輯按鈕,點擊按鈕后,可在對文章內(nèi)容進行編輯。文章內(nèi)容包括:所屬欄目、標(biāo)題、信息來源、文章作者、外鏈、文章內(nèi)容頁配圖、文章列表頁圖片、首頁幻燈配圖、首頁幻燈配圖描述、文章內(nèi)容、文章排序。文章修改后,可直接發(fā)布。點擊新建文章按鈕,可在文章內(nèi)容信息板塊中新建文章,并可直接發(fā)布上線。.2廣告及廣告位管理在廣告位管理中,分為廣告位添加、廣告位列表;廣告位添加中,可新增廣告位,新增廣告位的內(nèi)容是:所屬欄目名稱、廣告位名稱、廣告位寬度、廣告位高度、廣告位描述。其中除廣告位描述外,其他字段均是必填項;點擊提交按鈕后,廣告位添加成功。點擊重置按鈕,則所有廣告位信息重置。在廣告位列表中,可新建廣告位,同時將已建好的廣告位以分頁信息列表形式展示。可對已建好的廣告位進行編輯、刪除操作;在廣告管理中,分為廣告添加和廣告列表;廣告添加中,可添加廣告,每條新增的廣告只能對應(yīng)一個廣告位。所添加的內(nèi)容是:所屬欄目名稱、所屬廣告位名稱、廣告名稱、廣告url、上傳廣告。其中上傳廣告需要上床一張廣告圖片。點擊提交按鈕后,廣告添加成功。點擊重置按鈕,則所填寫的廣告信息被重置。在廣告列表中,可新建廣告,同時已經(jīng)建好的廣告將以分頁信息列表的形式呈現(xiàn)。可對廣告進行編輯和刪除操作。.3聯(lián)系我們和友情鏈接管理在友情鏈接中,分為友情鏈接列表和添加友情鏈接。在友情鏈接列表中,已添加好的友情鏈接將以分頁信息列表的形式呈現(xiàn)。并可在此頁面進行新建友情鏈接操作??蓪π畔⒘斜磉M行編輯和刪除操作。在添加友情鏈接中,需要填寫的字段內(nèi)容是:友情鏈接名稱、友情鏈接圖片、友情鏈接url、友情鏈接排序。其中除友情鏈接排序外,其他字段均是必填項。再聯(lián)系我們中,點擊聯(lián)系我們列表,可展示出聯(lián)系方式。可對聯(lián)系方式進行編輯和刪除。聯(lián)系方式包括的字段有:公司名稱、公司地址、郵箱、廣告合作QQ、電話,所有字段均是必填項。.3輿情監(jiān)督管理輿論管理分為輿論列表和添加輿論。在輿論列表中,可新增輿論。已添加的輿論內(nèi)容以分頁信息列表的形式呈現(xiàn),在列表中,可對輿論內(nèi)容進行編輯和刪除操作。在添加輿論中,需要填寫的字段包括:輿論標(biāo)題、輿論內(nèi)容、輿論排序。.4企業(yè)管理在企業(yè)管理中,分為企業(yè)列表和添加企業(yè)。在企業(yè)列表中可新增企業(yè),已添加的企業(yè)信息內(nèi)容將以分頁信息列表的形式呈現(xiàn),列表中的內(nèi)容可進行編輯和刪除操作。在添加企業(yè)中,需要填寫的內(nèi)容字段包括:企業(yè)名稱、所屬欄目名稱、企業(yè)logo、企業(yè)展廳列表圖片、企業(yè)url、企業(yè)關(guān)鍵字、是否推薦到首頁、企業(yè)排序。在企業(yè)圖片組管理中,分為企業(yè)圖片組列表和添加企業(yè)圖片組。在企業(yè)圖片組列表中可新增企業(yè)圖片,已添加的企業(yè)圖片信息內(nèi)容將以分頁信息列表的形式呈現(xiàn),列表中的內(nèi)容可進行編輯和刪除操作。在添加企業(yè)圖片組中,需要填寫的內(nèi)容字段包括:所屬企業(yè)名稱、企業(yè)圖片信息(企業(yè)圖片、描述、url)。點擊提交按鈕后,添加成功。點擊重置按鈕,則所填寫的信息被重置。2.1.3系統(tǒng)界面設(shè)計 系統(tǒng)的界面整體設(shè)計如下:1)頁面內(nèi)容:主題突出,站點定義、術(shù)語和行文格式統(tǒng)一、規(guī)范、明確,欄目、菜單設(shè)置和布局合理,傳遞的信息準(zhǔn)確、及時。內(nèi)容豐富,文字準(zhǔn)確,語句通順;專用術(shù)語規(guī)范,行文格式統(tǒng)一規(guī)范。2)導(dǎo)航結(jié)構(gòu):頁面具有明確的導(dǎo)航指示,且便于理解,方便用戶使用。3)技術(shù)環(huán)境:頁面大小適當(dāng),能用各種常用瀏覽器以不同分辨率瀏覽;無錯誤鏈接和空鏈接;采用CSS處理,控制字體大小和版面布局。4)藝術(shù)風(fēng)格:界面、版面形象清新悅目、布局合理,字號大小適宜、字體選擇合理,前后一致,美觀大方;動與靜搭配恰當(dāng),動靜效果好;色彩和諧自然,與主題內(nèi)容相協(xié)調(diào)。2.1.4系統(tǒng)可擴展性設(shè)計本系統(tǒng)未來要接入“中國教育之聲”平臺,向自媒體和社交性網(wǎng)站方向發(fā)展,所以系統(tǒng)設(shè)計要求能夠體現(xiàn)擴展性要求,以適應(yīng)將來功能擴展的需求。2.1.5系統(tǒng)性能設(shè)計系統(tǒng)需要滿足百萬級用戶量,上千同時并發(fā),響應(yīng)時間0.2秒內(nèi),保證系統(tǒng)穩(wěn)定性、安全性、數(shù)據(jù)完整性等。2.2運行環(huán)境操作系統(tǒng):LinuxWEB服務(wù)器:Apache數(shù)據(jù)庫:MYSQL開發(fā)語言:PHP5瀏覽器:IE8.0+chrome30.0以上,及其他主流瀏覽器2.3基本設(shè)計概念2.3.1系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D2.4技術(shù)路線2.4.1底層開發(fā)框架PHP(外文名:HypertextPreprocessor,中文名:“超文本預(yù)處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,易于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。優(yōu)點:開放源代碼所有的PHP源代碼事實上都可以得到。免費性和其它技術(shù)相比,PHP本身免費且是開源代碼。快捷性程序開發(fā)快,運行快,技術(shù)本身學(xué)習(xí)快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言。編輯簡單,實用性強,更適合初學(xué)者??缙脚_性強由于PHP是運行在服務(wù)器端的腳本,可以運行在UNIX、LINUX、WINDOWS、MacOS下。效率高PHP消耗相當(dāng)少的系統(tǒng)資源。圖像處理用PHP動態(tài)創(chuàng)建圖像,PHP圖像處理默認(rèn)使用GD2。且也可以配置為使用imagemagick進行圖像處理。面向?qū)ο笤趐hp4,php5中,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M,php完全可以用來開發(fā)大型商業(yè)程序。專業(yè)專注PHP支持腳本語言為主,同為類C語言。缺點:對遞歸的不良支持許多PHP模塊都不是線程安全的沒有命名空間混亂的許可證缺少標(biāo)準(zhǔn)框架2.4.2Web開發(fā)框架SpringMVCSpringMVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在SpringWebFlow里面。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVC架構(gòu),可以選擇是使用內(nèi)置的SpringWeb框架還可以是Struts這樣的Web框架。通過策略接口,Spring框架是高度可配置的,而且包含多種視圖技術(shù),例如JavaServerPages(JSP)技術(shù)、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的視圖,所以不會強迫您只使用JSP技術(shù)。SpringMVC分離了控制器、模型對象、分派器以及處理程序?qū)ο蟮慕巧?,這種分離讓它們更容易進行定制。優(yōu)點:對覆蓋綁定(overridingbinding)、驗證(validation)等提供生命周期管理;清晰的角色劃分:控制器(controller)、驗證器(validator)、命令對象(commandobect)、表單對象(formobject)、模型對象(modelobject)、Servlet分發(fā)器(DispatcherServlet)、處理器映射(handlermapping)、試圖解析器(viewresoler)等等。每一個角色都可以由一個專門的對象來實現(xiàn);強大而直接的配置方式:將框架類和應(yīng)用程序累都能作為JavaBean配置,支持跨多個context的引用;可適配、非侵入:可以根據(jù)不同的應(yīng)用場景,選擇何事的控制器子類(simple型、command型、from型、wizard型、multi-action型或者自定義),而不是一個單一控制器(比如Action/ActionForm)繼承;可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的業(yè)務(wù)對象作為命令或表單對象,而不需要去擴展某個特定框架的基類;可定制的handlermapping和viewresolution:Spring提供從最簡單的URL映射,到復(fù)雜的、專用的定制策略。與某些webMVC框架強制開發(fā)人員使用單一特定技術(shù)相比,Spring顯得更加靈活;靈活的model轉(zhuǎn)換:在Springweb框架中,使用基于Map的鍵/值對來達到輕易的與各種視圖技術(shù)集成;簡單而強大的JSP標(biāo)簽庫(SpringTagLibrary):支持包括諸如數(shù)據(jù)綁定和主題(theme)之類的許多功能。他提供在標(biāo)記方面的最大靈活性;SpringBean的生命周期可以被限制在當(dāng)前的HTTpRequest或者HTTpSession。準(zhǔn)確的說,這并非SpringMVC框架本身特性,而應(yīng)歸屬于SpringMVC使用的WebApplicationContext容器;可定制的本地化和主題(theme)解析:支持在JSP中可選擇地使用Spring標(biāo)簽庫、支持JSTL、支持Velocity(不需要額外的中間層)等等;可定制的綁定(binding)和驗證(validation):比如將類型不匹配作為應(yīng)用級的驗證錯誤,這可以保證錯誤的值。再比如本地化的日期和數(shù)字綁定等等。在其他某些框架中,你只能使用字符串表單對象,需要手動解析它并轉(zhuǎn)換到業(yè)務(wù)對象;與許多表示層技術(shù)/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等;SpringMVC完美支持Rest服務(wù);便于測試——歸功于IoC;性能和原生態(tài)JSP和Servlet相差無幾;缺點:大量的XML配置文件;太過靈活——沒有公共的父控制器;沒有內(nèi)置的Ajax支持;Struts1Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用JavaServlet/JSP技術(shù),實現(xiàn)了基于JavaEEWeb應(yīng)用的MVC設(shè)計模式的應(yīng)用框架,是MVC經(jīng)典設(shè)計模式中的一個經(jīng)典產(chǎn)品。Struts是一個靈活的基于標(biāo)準(zhǔn)的技術(shù)(如Javaservlet,控制層javabean,resourcebundle,和XML,以及各種ApacheCommons包、BeanUtils和鏈的責(zé)任??蚣芸梢詭椭鸀槟膽?yīng)用程序創(chuàng)建一個可擴展的開發(fā)環(huán)境,基于出版標(biāo)準(zhǔn)和證明設(shè)計模式。優(yōu)點:實現(xiàn)MVC模式,結(jié)構(gòu)清晰,使開發(fā)者只關(guān)注業(yè)務(wù)邏輯的實現(xiàn);有豐富的tag可以用,Struts的標(biāo)記庫(Taglib)如能靈活動用,則能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個很好的起點;頁面導(dǎo)航,頁面導(dǎo)航將是今后的一個發(fā)展方向,事實上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)個部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接受這個項目時,這種優(yōu)勢體現(xiàn)的更加明顯;提供Exception處理機制;數(shù)據(jù)庫鏈接池管理;支持l18N;缺點:轉(zhuǎn)到展示層時,需要配置forward,每一次轉(zhuǎn)到展示層,相信大多數(shù)都是直接轉(zhuǎn)到JSP,而涉及到轉(zhuǎn)向,需要配置forward,如果有十個展示層的JSP,需要配置詩詞Struts,而且還不包括有時候目錄、文件變更、需要重新修改forward,注意,每次修改配置之后,要求重新部署整個項目。而tomcat這樣的服務(wù)器,還必須重新啟動服務(wù)器,如果業(yè)務(wù)變更復(fù)雜頻繁的系統(tǒng),這樣的操作簡直不可想象;Struts的Action必須是Thread—safe方式,它僅僅允許一個實例去處理所有的請求。所有Action用到的所有的資源都必須統(tǒng)一同步,這個就引起了線程安全的問題;測試不方便,Struts的每個Action都用Web層耦合在一起,這樣它的測試依賴于Web容器,單元測試也很難實現(xiàn)。不過有一個Junit的擴展工具StrutsTestCase可以實現(xiàn)它的單元測試;類型的轉(zhuǎn)換Struts的FormBean把所有的數(shù)據(jù)都作為String類型,它可以使用工具Commins—Beanutils進行類型轉(zhuǎn)化。但它的轉(zhuǎn)化都是在Class級別,而且轉(zhuǎn)化的類型是不可配置的。類型轉(zhuǎn)化時的錯誤信息返回給用戶也是非常困難的;對Servlet的依賴過強,Struts處理Action時必須要依賴ServletRequest和ServletResponse,所以它擺脫不來哦Serlvet容器;前端表達式語言方面,Struts集成了JSTL,所以它主要使用JSTL的表達式語言來獲取數(shù)據(jù),可是JSTL的表達式語言在Collection和索引屬性方面處理顯得很弱;對Action執(zhí)行的控制困難,Struts創(chuàng)建一個Action,如果想控制它的執(zhí)行順序?qū)浅@щy,甚至你要重新去寫Servlet來實現(xiàn)你的這個功能需求;對Action執(zhí)行前和后的處理。Struts處理Action的時候是基于Class的Hierarchies,很難在Action處理前和后進行操作;對事件支持不夠,在Struts中,實際是一個表單Form對應(yīng)一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應(yīng)一個事件,Struts這種事件方式稱為applicationevent,applicationevent和componentsevent相逼是一種粗粒度的事件;Struts2Struts2是Struts的下一代產(chǎn)品,是在struts1和WebWork的技術(shù)基礎(chǔ)上進行了合并的全新的Struts2框架。其全新的Struts2的體系結(jié)構(gòu)與Struts1的體系結(jié)構(gòu)差別巨大。Struts2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts2可以理解為WebWork的更新產(chǎn)品。雖然從Struts1到Struts2有著太大的變化,但是相對于WebWork,Struts2的變化很小。優(yōu)點:在Action的實現(xiàn)方面:Struts1要求必須統(tǒng)一擴展自Action類,而Struts2中可以是一個普通的POJO;線程模型方面:Struts1的Action是單實例的,一個Action的實例處理所有的請求。Struts2的Action是一個請求對應(yīng)一個實例(每次請求時都新new出一個對象),沒有線程安全方面的問題;Servlet依賴方面:Struts1的Action依賴于ServletAPI,比如Action的execute方法的參數(shù)就包括request和response對象。這使程序難于測試。Struts2中的Action不再依賴于ServletAPI,有利于測試,并且實現(xiàn)TDD;封裝請求參數(shù):Struts1中強制使用ActionForm對象封裝請求的參數(shù)。Struts2可以選擇使用POJO類來封裝請求的參數(shù),或者直接使用Action的屬性;表達式語言方面:Struts1中整合了EL,但是EL對集合和索引的支持不強,Struts2整合了OGNL(ObjectGraphNavigationLanguage);綁定值到視圖技術(shù):Struts1使用標(biāo)準(zhǔn)的JSP,Struts2使用“ValueStack”技術(shù);類型轉(zhuǎn)換:Struts1中的ActionForm基本使用String類型的屬性。Struts2中使用OGNL進行轉(zhuǎn)換,可以更方便的使用;Struts1中支持覆蓋validate方法或者使用Validator框架。Struts2支持重寫validate方法或者使用XWork的驗證框架;Action執(zhí)行控制的對比:Struts1支持每一個模塊對應(yīng)一個請求處理,但是模塊中的所有Action必須共享相同的生命周期。Struts2支持通過攔截器堆棧為每一個Action創(chuàng)建不同的生命周期;缺點:安全性不夠穩(wěn)定;struts2標(biāo)簽會影響性能;OGNL設(shè)計不當(dāng)會造成注入漏洞2.4.3前臺JavaScript框架JQuery是繼prototype之后又一個優(yōu)秀的Javascript框架。它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及后續(xù)版本將不再支持IE6/7/8瀏覽器。JQuery使用戶能更方便地處理HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)、events、實現(xiàn)動畫效果,并且方便地為網(wǎng)站提供AJAX交互。JQuery還有一個比較大的優(yōu)勢是,它的文檔說明很全,而且各種應(yīng)用也說得很詳細(xì),同時還有許多成熟的插件可供選擇。JQuery能夠使用戶的html頁面保持代碼和html內(nèi)容分離,也就是說,不用再在html里面插入一堆js來調(diào)用命令了,只需定義id即可。JQuery是一個兼容多瀏覽器的javascript框架,核心理念是writeless,domore(寫得更少,做得更多)。jQuery在2006年1月由美國人JohnResig在紐約的barcamp發(fā)布,吸引了來自世界各地的眾多JavaScript高手加入,由DaveMethvin率領(lǐng)團隊進行開發(fā)。如今,JQuery已經(jīng)成為最流行的javascript框架,在世界前10000個訪問最多的網(wǎng)站中,有超過55%在使用JQuery。JQuery是免費、開源的,使用MIT許可協(xié)議。JQuery的語法設(shè)計可以使開發(fā)者更加便捷,例如操作文檔對象、選擇DOM元素、制作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,JQuery提供API讓開發(fā)者編寫插件。其模塊化的使用方式使開發(fā)者可以很輕松的開發(fā)出功能強大的靜態(tài)或動態(tài)網(wǎng)頁。優(yōu)點:動態(tài)特效;AJAX;通過插件來擴展;方便的工具-例如瀏覽器版本判斷;漸進增強;鏈?zhǔn)秸{(diào)用;眾多插件資源;性能支持比較好;多瀏覽器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了對InternetExplorer6,7,8的支持);缺點:不能向后兼容;插件兼容性;2.4.4數(shù)據(jù)持久層框架HiberanteHibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。 優(yōu)點:對象/關(guān)系數(shù)據(jù)庫映射(ORM);它使用時只需要操縱對象,使開發(fā)更對象化,拋棄了數(shù)據(jù)庫中心的思想,完全的面向?qū)ο笏枷?;透明持久?persistent)帶有持久化狀態(tài)的、具有業(yè)務(wù)功能的單線程對象,此對象生存期很短。這些對象可能是普通的JavaBeans/POJO,這個對象沒有實現(xiàn)第三方框架或者接口,唯一特殊的是他們正與(僅僅一個)Session相關(guān)聯(lián)。一旦這個Session被關(guān)閉,這些對象就會脫離持久化狀態(tài),這樣就可被應(yīng)用程序的任何層自由使用。事務(wù)Transaction應(yīng)用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。它通過抽象將應(yīng)用從底層具體的JDBC、JTA以及CORBA事務(wù)隔離開。某些情況下,一個Session之內(nèi)可能包含多個Transaction對象。盡管是否使用該對象是可選的,但無論是使用底層的API還是使用Transaction對象,事務(wù)邊界的開啟與關(guān)閉是必不可少的;它沒有侵入性,即所謂的輕量級框架;對數(shù)據(jù)庫移植性支持很好;提供一級緩存和二級緩存;提供簡潔的HQL編程;提供和常見第三方緩存插件集成;提供和常見第三方數(shù)據(jù)庫連接池插件集成;極高的開發(fā)效率;缺點:對象持久化會影響一些執(zhí)行的性能;配置數(shù)據(jù)庫關(guān)系到對象比較復(fù)雜;對批量操作數(shù)據(jù)支持不好;MyBatisMyBatis是支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(PlainOldJavaObjects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。每個MyBatis應(yīng)用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預(yù)定義的配置類的實例獲得。用xml文件構(gòu)建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpathresource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創(chuàng)建的實例。MyBatis有一個實用類Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。 優(yōu)點:易于上手和掌握;sql寫在xml里,便于統(tǒng)一管理和優(yōu)化;解除sql與程序代碼的耦合;提供映射標(biāo)簽,支持對象與數(shù)據(jù)庫的orm字段關(guān)系映射;提供對象關(guān)系映射標(biāo)簽,支持對象關(guān)系組建維護;提供xml標(biāo)簽,支持編寫動態(tài)sql;良好的執(zhí)行性能;靈活的ORM封裝,可以選擇幾個字段進行返回賦值;缺點:sql工作量很大,尤其是字段多、關(guān)聯(lián)表多時,更是如此;sql依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫移植性差;由于xml里標(biāo)簽id必須唯一,導(dǎo)致DAO中方法不支持方法重載;字段映射標(biāo)簽和對象關(guān)系映射標(biāo)簽僅僅是對映射關(guān)系的描述,具體實現(xiàn)仍然依賴于sql;DAO層過于簡單,對象組裝的工作量較大;支持級聯(lián)更新、級聯(lián)刪除;編寫動態(tài)sql時,不方便調(diào)試,尤其邏輯復(fù)雜時;提供的寫動態(tài)sql的xml標(biāo)簽功能簡單,編寫動態(tài)sql仍然受限,且可讀性低;若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現(xiàn)象;參數(shù)的數(shù)據(jù)類型支持不完善;(如參數(shù)為Date類型時,容易報沒有g(shù)et、set方法,需在參數(shù)上加@param)多參數(shù)時,使用不方便,功能不夠強大;(目前支持的方法有map、對象、注解@param以及默認(rèn)采用012索引位的方式)緩存使用不當(dāng),容易產(chǎn)生臟數(shù)據(jù);SpringDataJpa SpringDataJpa是符合JPA(JavaPersistenceAPI)規(guī)范的基于Hibernate構(gòu)建的優(yōu)秀的ORM數(shù)據(jù)持久化框架,他是SpringData項目的子項目,這使其更容易構(gòu)建Spring-powered使用數(shù)據(jù)訪問技術(shù)的應(yīng)用程序。優(yōu)點:基于Hiberante構(gòu)建,繼承了Hiberante很多優(yōu)秀的特性;滿足JPA規(guī)范標(biāo)準(zhǔn),有良好的可持續(xù)發(fā)展性;按照SpringDataJpa規(guī)范只需定義接口即可,不需編寫實現(xiàn)類,極大的提高了開發(fā)效率;采用SpringScheme配置減少了配置文件編寫;缺點:基于Hibernate構(gòu)建,同時也存在Hibernate的一些缺點;按照SpringDataJpa規(guī)范定義接口實現(xiàn)時容易出錯;關(guān)聯(lián)多表查詢支持不好;技術(shù)文檔不夠全面;綜述 綜合以上三個最成熟使用最多的三個數(shù)據(jù)持久層框架的優(yōu)點和缺點,并考慮到本系統(tǒng)實際架構(gòu)情況,我們決定采用基于最成熟的Hibernate框架構(gòu)建的SpringDataJpa框架進行數(shù)據(jù)持久化;3系統(tǒng)部署web服務(wù)器與應(yīng)用服務(wù)器在部署上可以采用靈活的策略,既可以獨立安置web服務(wù)器,也可以使用weblogic自帶的http服務(wù)。web服務(wù)器起到前端代理和轉(zhuǎn)發(fā)http請求的作用,為應(yīng)用服務(wù)器分擔(dān)并發(fā)請求的負(fù)載,同時屏蔽對應(yīng)用服務(wù)器的直接訪問,保護應(yīng)用服務(wù)器的安全。此外,還可以將系統(tǒng)中的靜態(tài)內(nèi)容放置在web服務(wù)器上,如靜態(tài)頁面,圖片,樣式表,js文件等,將對這些靜態(tài)內(nèi)容的訪問負(fù)載轉(zhuǎn)移到web服務(wù)器來承擔(dān)。4系統(tǒng)性能設(shè)計4.1高效的數(shù)據(jù)算法針對每項數(shù)據(jù)算法,以及數(shù)據(jù)類型的選擇,經(jīng)過嚴(yán)格測試,從優(yōu)擇選以最優(yōu)算法,以及數(shù)據(jù)類型。4.2負(fù)載均衡系統(tǒng)遵循了可伸縮性原則,保障可橫向擴展,整體擴展依賴于中間件,保證系統(tǒng)高可用性。負(fù)載均衡模式是指采用多個相似功能的組件一起構(gòu)成負(fù)載均衡集,并且通過不斷地在他們間分配、均衡工作載荷,以實現(xiàn)期望的吞吐能力和響應(yīng)性能。如果需要支持更多的工作載荷,可以向負(fù)載均衡集中添加更多的組件或設(shè)備。負(fù)載均衡組件模式可以顯著地提高可用性,當(dāng)一個或多個參與負(fù)載均衡的組件因為失效或者維護等原因不可使用時,整個系統(tǒng)仍然可以使用。系統(tǒng)容量的損失取決于該組件承擔(dān)的負(fù)載的比例。采用負(fù)載均衡組件模式后,系統(tǒng)的性能受到少量的負(fù)面影響,因為負(fù)載均衡組件需要確定如何分配請求。但是,系統(tǒng)的伸縮性得到了顯著的改善。通過向負(fù)載均衡集中添加新的組件,就可以方便地增加系統(tǒng)的容量。負(fù)載均衡組件能夠確保向新添加的組件分配合理的請求份額。負(fù)載均衡組件方案也會顯著的增加成本,但通常要比活動冗余組件方案節(jié)省成本。因為購買多個中等容量的設(shè)備的代價要小于購買一個大容量的設(shè)備??梢娀顒尤哂嘟M件模式和負(fù)載均衡組件模式都提高了系統(tǒng)的可用性,同時,負(fù)載均衡組件模式還具有更好的伸縮性。因此,通常情況下,負(fù)載均衡模式是更好的選擇。即使如此,某些情況下,活動冗余組件方案可能是唯一的選擇。例如接入Internet的最外層的交換機就沒有辦法使用負(fù)載均衡組件模式,除非接入服務(wù)供應(yīng)商已經(jīng)提供了外部的負(fù)載均衡器。在確定系統(tǒng)邏輯架構(gòu)的過程中,我們通常要權(quán)衡是采用活動冗余組件模式還是采用負(fù)載均衡組件模式。如果同時滿足下述四個條件,活動冗余組件模式是較好的選擇,包括:單個組件如果能夠足夠提供長期的峰值負(fù)載容量;單個組件的價格比較便宜,使得活動冗余組件模式的成本比負(fù)載均衡組件模式的成本更低;單個組件本身的可靠性很高,組件維護也相當(dāng)方便快捷;組件故障引致的后果不是特別嚴(yán)重。綜合上述評估原則,在B/S應(yīng)用的基礎(chǔ)設(shè)施中通常對交換機和負(fù)載均衡器采用活動冗余組件模式,對Web服務(wù)器和應(yīng)用服務(wù)器采用負(fù)載均衡組件模式。4.3良好的接口設(shè)計接口經(jīng)過嚴(yán)格設(shè)計,使接口位最優(yōu),避免大量創(chuàng)建類,使整個系統(tǒng)最優(yōu)運行。4.4低耗的磁盤IO針對所有磁盤IO操作采用最低限度使用IO策略,針對某些高頻使用數(shù)據(jù)類型存儲到緩存中,盡量避免針對磁盤IO操作。應(yīng)用邏輯通過Cache技術(shù)直接訪問裝載在內(nèi)存的配置數(shù)據(jù),降低系統(tǒng)對磁盤的訪問頻率,提高系統(tǒng)的運行效率。4.5細(xì)粒度的事務(wù)管理整體數(shù)據(jù)訪問事務(wù),通過良好設(shè)計,封裝為細(xì)粒度事務(wù),從而避免了長事務(wù)的增長,導(dǎo)致的性能瓶頸。且針對事務(wù)鎖機制,系統(tǒng)將通過高壓測試調(diào)優(yōu),整體設(shè)計盡量避免鎖等待瓶頸。4.6應(yīng)用配置相關(guān)調(diào)優(yōu)該系統(tǒng)業(yè)務(wù)系統(tǒng)主要調(diào)優(yōu)點如下:并發(fā)線程數(shù)據(jù)連接池內(nèi)存回收策略隊列數(shù)量等參數(shù)4.7數(shù)據(jù)庫性能設(shè)計4.7.1索引控制系統(tǒng)數(shù)據(jù)模型中,索引經(jīng)過嚴(yán)格篩選,避免某表多索引造成的寫操作效率低下。4.7.2SQL優(yōu)化系統(tǒng)中對所有SQL語句均通過高并發(fā)的壓力測試并調(diào)優(yōu),整體語句完全通過測試且數(shù)據(jù)庫調(diào)為可優(yōu)化語句。且整體系統(tǒng)中避免冗余連接,在游標(biāo)控制中完全采用軟分析。4.8數(shù)據(jù)庫高可用性設(shè)計4.8.1設(shè)計原則分布性原則整體數(shù)據(jù)庫采用分布式技術(shù),從主機角度以及應(yīng)用角度等采取分布式技術(shù)。保障數(shù)據(jù)庫高效運行。讀寫分離原則讀寫分離原則,主要指在A數(shù)據(jù)庫中寫入數(shù)據(jù),然后把寫入的數(shù)據(jù)同步到多節(jié)點。而其它節(jié)點保障數(shù)據(jù)庫讀取應(yīng)用。如此可將應(yīng)用的負(fù)載分布在多個不同的數(shù)據(jù)庫節(jié)點上面。如果寫的數(shù)據(jù)庫失敗,可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院老人康復(fù)設(shè)施使用管理制度
- 2024年版車輛維修合作聘用協(xié)議條款版B版
- 改水電裝修合同(2篇)
- 2024年委托貸款業(yè)務(wù)展期與貸款利率調(diào)整協(xié)議3篇
- 2024年汽車維修保養(yǎng)連鎖企業(yè)股份購買與品牌連鎖合同3篇
- 2024年標(biāo)準(zhǔn)租賃合同簡化格式版B版
- 2024實習(xí)教師教育實習(xí)安全責(zé)任合同協(xié)議3篇
- 2025電梯維修改造合同范本
- 2024年國際航空運輸服務(wù)協(xié)議范本版B版
- 2025工程承包合同(水井)
- 傳統(tǒng)醫(yī)學(xué)醫(yī)術(shù)確有專長考核申請表
- 華中師范大學(xué)文學(xué)院《826語言文學(xué)綜合考試》考試大綱
- C語言課件完整版(精華)課件
- 抗菌藥物合理應(yīng)用PPT
- 裝飾、裝修安全教育培訓(xùn)試卷+答案
- 【期末試題】河西區(qū)2018-2019學(xué)年度第一學(xué)期六年級英語期末試題
- 迷你倉租賃合同范本
- 調(diào)試報告及設(shè)備單機試運行記錄
- DB33-T1174-2019《風(fēng)景名勝區(qū)環(huán)境衛(wèi)生作業(yè)管理標(biāo)準(zhǔn)》
- 五年級數(shù)學(xué)上冊試題 -《統(tǒng)計表和條形統(tǒng)計圖》習(xí)題2-蘇教版(含答案)
- 科研方法與論文寫作 PPT
評論
0/150
提交評論