基於WebGIS的車聯網平臺的研究與應用
前言:
本文寫於2014年2月,五年彈指一揮間,近期整理髮表,本文出自門心叼龍的部落格,屬於原創類容,侵權必究。轉載請註明出處。https://blog.csdn.net/geduo_83/article/details/85855412
繼網際網路、物聯網之後,“車聯網”又成為未來智慧城市的另一個標誌,隨著我國經濟的飛速發展,汽車作為一種便捷的交通工具,日益進入人們生活當中,車輛、船隻和其他地面移動物體迅速增加,但隨之而產生的城市交通問題日益嚴重,駕駛員在夜聞或在生疏地帶、或發生了交通事故則無法確認自己的方位甚至迷路,己成為嚴重影響許多城市發展的主要問題,為這些地域擴大、機動性強的移動目標提供有效的監控、緊急救援和提供各種資訊服務成為越來越迫切的現實需求。基於此我們針對這個問題,進行了相關研究。
基於WebGIS的車聯網系統是構建於Internet上的一個大型公共的車輛動態資訊服務平臺,它同時融合了GPS衛星定位技術、GSM數字移動通訊技術、GIS地理資訊系統技術、軟話機技術以及Internet技術等多種目前世界上先進的科技成果,為在路途中的車輛進行監控、實時救援及資訊查詢提供了完整的解決方案。整個系統由車載GPS終端、GSM通訊網路、後臺服務、坐席中心、語音平臺、客戶關係管理系統、使用者自服務系統、WebGIS平臺八大部分組成。
基於WebGIS在車聯網的應用系統建設,有利於提供各種便捷的資訊服務、導航服務、救援服務、預防和減少交通事故,促進社會的資訊化、自動化建設等相關產業的發展、提高道路網的通行能力和提高汽車運輸生產率和經濟效益。
論文的主要研究內容:
(1)GIS軟體的基本介紹。
(2)按照軟體工程的方法,對車輛救援平臺進行需求分析。
(3)研究平臺的體系結構,以及各層之間是如何通訊。
(4)研究地圖服務的原理以及如何將服務應用於平臺之中。
(5)結合實際專案,使用車輛救援平臺構建一個實際的應用。
本文共分7章,具體內容安排如下:
第1章:緒論。介紹本文的研究背景意義。
第2章:相關概念技術介紹。介紹了GIS和WEBGIS的概念以及GIS重要元素的概念,還介紹了一些GIS中的常用技術。
第3章:平臺需求分析。從功能和效能的角度分別做了需求分析,給出了系統的功能結構圖,並且介紹了每項功能。
第4章:平臺的設計與實現。分析了平臺的體系結構,給出了平臺的體系結構圖,闡述了各個模組是如何實現的。
第5章:關鍵技術的研究。分別從資料層、服務層和客戶端介紹了平臺所使用的關鍵技術,詳細介紹了平臺實現的原理。
第6章:總結與展望。對論文工作加以總結,指出了平臺存在的不足以及今後的工作方向。
車聯網,是指裝載在車輛上的電子標籤通過無線射頻等識別技術,實現在資訊網路平臺上對所有車輛的屬性資訊和靜、動態資訊進行提取和有效利用,並根據不同的功能需求對所有車輛的執行狀態進行有效的監管和提供綜合服務。汽車數字化標準信源技術是基於RFID開發的涉車資訊資源的應用技術,該專案是由國家公安部組織研發,經國家科技部認證後列為2007年“國家科技支撐計劃”重點專項中進行的應用示範工程(專案編號為2008BAF31B00)。汽車數字化標準信源技術的開發將推進“車聯網”和RFID產業化程序。
從網路上看,車聯網系統是一個“端管雲”三層體系:
第一層(端系統):端系統是汽車的智慧感測器,負責採集與獲取車輛的智慧資訊,感知行車狀態與環境;是具有車內通訊、車間通訊、車網通訊的泛在通訊終端;同時還是讓汽車具備IOV定址和網路可信標識等能力的裝置。
第二層(管系統):解決車與車(V2V)、車與路(V2R)、車與網(V2I)、車與人(V2H)等的互聯互通,實現車輛自組網及多種異構網路之間的通訊與漫遊,在功能和效能上保障實時性、可服務性與網路泛在性,同時它是公網與專網的統一體。
第三層(雲系統):車聯網是一個雲架構的車輛執行資訊平臺,它的生態鏈包含了ITS、物流、客貨運、危特車輛、汽修汽配、汽車租賃、企事業車輛管理、汽車製造商、4S店、車管、保險、緊急救援、移動網際網路等,是多源海量資訊的匯聚,因此需要虛擬化、安全認證、實時互動、海量儲存等雲端計算功能,其應用系統也是圍繞車輛的資料匯聚、計算、排程、監控、管理與應用的複合體系。
相關概念:
ITS即智慧交通。是將先進的感測器技術、通訊技術、資料處理技術、網路技術、自動控制技術、資訊釋出技術等有機地運用於整個交通運輸管理體系而建立起的一種實時的、準確的、高效的交通運輸綜合管理和控制系統。
RFID,是Radio Frequency Identification的縮寫,即射頻識別。它通過射頻訊號自動識別目標物件並獲取相關資料,識別工作無須人工干預,可工作於各種惡劣環境。RFID技術可識別高速運動物體並可同時識別多個標籤,操作快捷方便。基本的RFID系統由標籤(Tag)、閱讀器(Reader)、天線(Antenna)。RFID技術有著廣闊的應用前景,物流倉儲、零售、製造業、醫療等領域都是RFID的潛在應用領域,另外,RFID由於其快速讀取與難以偽造的特性,一些國家正在開展的電子護照專案都採用了RFID技術。RFID具有車輛通訊、自動識別、定位、遠距離監控等功能,在移動車輛的識別和管理系統方面有著非常廣泛的應用。
在國內,簡單的車聯網應用早已在物流業出現,技術主線是GPS和GRS。十多年前物流行業就開始推進車輛物聯網監控與配送路徑實時優化,推廣物流配送的視覺化管理。1999年物流行業開始探討GPS技術和物流視覺化管理的結合。2001年,開始探索GPS在貨運監控和連網上管理的應用,那時出現了很多的網路配貨平臺,通過GPS系統對車輛進行跟蹤。因為車輛通過網路可以實時視覺化,可以實時線上管理,這些都可以稱為車聯網早期的應用。2003年出現了網上配貨系統。2004年,GPS、感知技術、定位技術和網際網路技術初步結合,實現了對移動中的運輸車輛進行聯網、跟蹤、定位、排程、配貨的智慧管理,初步具備了車聯網的本質特徵。但是,那時的技術路線和應用案例還沒有納入到車聯網的範圍。直到2006年才基於RFID和EPC,GPS和GRS的結合提出了車聯網的概念。
從09年G-Book和Onstar引入中國,09年被業界定位成中國的Telematics元年以來,汽車資訊化的概念就從來沒有停止過,甚至越來越熱,汽車行業沒人不提Telematics,眼下的汽車產業,Telematics代表著先進,代表著高階,代表著創新,中國的汽車業彷彿從09年開始已然進入了T時代。T的熱度在2010年逐漸被一個新的名詞所取代,這就是車聯網。
2009年12月北京九五一九零資訊科技有限公司,順應時代發展潮流,根據自己已有的95190 Telematics 服務系統平臺(以下簡稱95190TP)制定了一套終端裝置與服務平臺之間的通訊協議(NTSP),支援不同廠家、不同型別、不同商業模式的通訊導航終端裝置接入本平臺、享受服務。該協議可以作為裝置開發及生產的依據,95190TP是綜合GPS(全球衛星定位系統)、GIS(地理資訊系統)、無線通訊、INTERNET、CALLCENTER、資訊資源搜尋與整合等多項技術,向汽車使用者提供安全安心、智慧導航、資訊服務、車載通訊、線上娛樂等等綜合服務,是目前國內專業、商業化Telematics服務的支撐運營平臺。
在2010年上海世博會期間,“上汽—通用汽車館”播放了一部科幻影片《2030》,講述了通用汽車對20年後汽車生活的展望。在片中,車輛在智慧交通網路指揮下有序地行駛,車內觸屏終端隨時收取交通訊息及諮詢,汽車自動尋找停車場以及充電站進行充電。更重要的是,它提供了前所未有的交通安全保障,將汽車司機發生交通事故的概率降低為零。
2010年10月28日在無錫舉行的中國國際物聯網(感測網)大會傳出訊息,汽車移動物聯網(車聯網)專案將列為我國重大專項第三專項的重要專案,並且相關內容已上報國務院,一期撥款有望達百億級別,預期2020年實現可控車輛規模達2億。車聯網這個名詞在物聯網的大背景下應運而生,車聯網的概念通過這次大會逐漸被放大,現在不管是Telematics還是GPS運營,都被納入到車聯網這個範疇中了。越來越多的汽車廠商和通訊行業合作研究,車聯網技術被越來越多的人熟知。
2010年11月12日至27日廣州亞運會期間,80多臺安裝著G-BOS裝置的蘇州金龍智慧客車投入服務,這是亞運歷史上首次出現“3G”客車。標誌著車聯網技術正式走向社會視野。 現階段,車聯網在物流行業也有兩個比較典型的應用,一個是視覺化運輸管理與線上智慧配貨;另一個是行車管理與監控。國內的“黑匣子”可以進行聯網形成智慧終端系統,對車輛定位、貨物追蹤、行駛行為、駕駛行為、車速控制、車輛狀況、耗油分析等進行聯網監控。
2011年3月15日,大唐電信與長春一汽旗下的啟明資訊科技股份有限公司攜手共建聯合實驗室,研究下一代通訊服務與汽車電子產品的融合,開發有自主智慧財產權的高效能、低功耗汽車電子產品,標誌著我國車聯網從概念階段正式走向應用階段。
2011年3月29日,“ 2011中國車聯網產業發展論壇”在廣州隆重舉行,共同探討“見證科技推動生產力、車聯網產業上下游資源無縫對接”這一主題。針對“車聯網時代消費者到底需要什麼樣的後臺服務”、“應用車載應用和服務有哪些盈利模式”、“我們如何把握住這輪商機如何打通產業鏈”以及“將IT、通訊、物聯網、網際網路、汽車影音資源整合”等議題進行深入討論。來自電信運營商、汽車電子廠商、服務提供商的專家以及汽車車主從各個角度討論未來車聯網的發展方向,包括電信運營商如何為車載終端提供通訊服務、車聯網一站式軟硬體方案以及車聯網增值服務等。
通用汽車產品採用的是Onstar系統,它通過全球衛星定位系統和無線通訊技術為汽車提供安全資訊服務,包括自動撞車報警、道路求助、遠端車輛解鎖以及全程音控導航服務等。
豐田公司的“G-BOOK”基於消費者會員的公共建設資訊服務系統,通過車上無線通訊終端來提供互助資訊服務。其特色在於資料通訊模組(DCM)及最新網路服務的安全數字卡運用。使用者只需輕輕一按按鈕DCM,即可享受高速通訊,下載電影、音樂、電腦遊戲等;而且在網路中斷情況下,DCM具有自動聯機功能。當文字資料通過“G-BOOK”傳輸到車載終端,使用者可以聆聽到近似於人聲的資訊。
在國際上,美國的IVHS、日本的VICS等系統通過車輛和道路之間建立有效的資訊通訊,實現智慧交通的管理和資訊服務。RFID技術近年來在物流與供應鏈管理領域以及交通運輸領域智慧化管理中得到了應用,如智慧公交定位管理和訊號優先、智慧停車場管理、車輛型別及流量資訊採集、路橋電子不停車收費、高速公路多義性路徑識別及車輛速度計算分析等方面取得了一定的應用成效。
摩根士丹利研究部近日(2013.11.)釋出了一份名為“自動駕駛汽車(Autonomous Cars):自動駕駛車,汽車產業新範兒”的報告。10個全球研發團隊經過了幾個月採訪未來學家、汽車行業高管和業外潛在顛覆者。該報告預示著由於幾乎完全消除汽車交通事故,將大大減少人類死亡和痛苦,由於降低醫療成本、減少擁堵、節省燃油和提高生產力,僅在美國每年可節省1.3萬億美元——佔GDP的比例約為8%。“現在我們清楚地看到,不僅是自動駕駛汽車真實的,但他們很可能會比大多數人想象的更早來到我們身邊 ”報告說。 “自動駕駛汽車路線圖:基本的自動駕駛能力今天已經實現,半自動駕駛能力在未來12-18個月內實現,全自動駕駛能力(已經有原型機)商業化在2020年實現。”
V2X通訊是自動駕駛汽車的關鍵技術,“自動駕駛車輛需要可靠的感測器來發揮自己的潛力”,V2X(車輛與車輛、車輛到基礎設施)通訊技術公司Cohda Wireless執行長保爾-蓋利說。
V2X是一個無線感測器系統,使車輛與其他周圍的車輛分享他們的感測器資料。作為標準感測器,如雷達、光學、超聲波和鐳射雷達所有都是視線,他們只能檢測到可見的風險。
非視覺感測器360度感知可以檢測到隱藏於視覺外的威脅,因此它可以擴充套件感知範圍,超出了駕駛員視野。 V2X系統可靠性很重要,譬如兩輛車行駛在一條直路上,當兩輛車相互接近時存在死角,在丘陵的坡峰,在高速公路上行駛,或當車車之間有卡車行駛。
摩根士丹利的報告還指出,自動駕駛能力可能會改變汽車業的基本面,如車的“價值” 從硬體轉移到軟體、元件,以及,新玩家進入市場,並迫使現有選手徹底改造自己或放棄份額。恩智浦半導體高階副總裁、汽車娛樂業務部總經理託斯滕-雷曼表示。
思科系統公司產品管理總監安德烈亞斯•麥說“‘物聯網’何以改變我們的生活,V2X技術是一個很好的例子”。 Cohda的V2X解決方案使車輛相互溝通,讓司機和最終自動駕駛車一些額外的預警時間,可以防止迫在眉睫的撞車事故, ”他說。 美國安全試驗示範計劃(SPMD,Safety Pilot Model Deployment )有2800輛車安裝了V2X裝置。密歇根大學交通研究所( UMTRI )2013.6.進行摩托車匯入車聯通訊研究,作為美國安全試驗示範計劃(US Safety Pilot Model Deployment)一部分,以確定轎車、卡車和公共汽車如何採用V2V(車對車)通訊技術,與摩托車互動。 UMTRI與摩托車製造商本田和寶馬合作,在密歇根州安阿伯引入摩托車到車聯環境中進行概念性驗證,在專案的研究領域完成2項任務。連線的摩托車將參與摩托車通訊可行性的測試和摩托車到車輛( M2V )通訊效能測試。據美國國家公路交通安全管理局(NHTSA )的資料,摩托車事故佔所有公路死亡人數的5% ,但80%的事故導致人身傷害或死亡,相比之下,汽車佔20% 。車聯網技術還解決了這些易受傷害的道路使用者,這點非常重要。摩托車在美國運輸部的整體安全策略中佔重要位置。
該V2V連線車輛裝置是由Cohda提供,內含恩智浦軟體定義的無線電晶片RoadLINK晶片組和執行車聯通訊的Cohda韌體,衛星導航精確定位模組為NV08C。 V2V通訊,即使在城市環境中建築阻擋司機在路口看見對方,車輛能夠互相通訊。在這些安全苛刻場景,車聯技術可喜擴充套件到弱勢道路使用者,如摩托車手和行人。
GIS是在計算機硬、軟體系統支援下,對現實世界(資源與環境)各類空間資料及描述這些空間資料特性的屬性進行採集、儲存、管理、運算、分析、顯示和描述的技術系統,它作為集電腦科學、地理學、測繪遙感學、環境科學、城市科學、空間科學、資訊科學和管理科學為一體的新興邊緣學科而迅速興起和發展。
WebGIS是Intemet與GIS結合的產物,GIS通過WWW功能得以擴充套件,真正成為一種大眾使用的工具。從WWW的任意一個節點,Internet使用者可以瀏覽WebGIS站點中的空間資料、製作專題圖,以及進行各種空間檢索和空間分析,近些年網際網路的飛速發展讓GIS朝著WeGIS的方向過渡。
(1)基於Web標準。TCP, HTTP, Html, XML等
(2)平臺無關。通常,無論客戶機是何種作業系統,只要支援通用的Web瀏覽器,使用者就可以訪問WebGIS資料和服務。
(3)分散式。全球化的Client/Server,GIS資料和服務分佈在Internet的不同伺服器上,當需要時進行整合。
(4)互操作。資料在不同的WebGIS之間無縫傳輸,一個應用系統可以呼叫另一個系統的功能,來完成邏輯上的統一的任務。
與傳統的GIS相比,webGIS有以下優點:
(1)更廣泛的訪問範圍。客戶可以同時訪問多個位於不同地方的伺服器上的最新資料。這一特有的優勢大大方便了GIS的資料管理,使分散式的多資料來源的資料管理和合成更易於實現。
(2)平臺的獨立性。無論伺服器或客戶機是何種機器,無論WEBGIS伺服器端使用何種GIS軟體,由於使用了通用的WEB瀏覽器,使用者可以便捷地訪問WEBGIS資料,在本機或某個伺服器上進行分散式部件的動態組合和空間資料的協同處理與分析,實現遠端異構資料的共享。
(3)系統成本大大降低。普通GIS在每個客戶端都要配備昂貴的專業GIS軟體,而使用者使用所需要的通常只是一些最基本的功能,這實際上造成了極大的浪費。WEBGIS在客戶端通常只需使用WEB瀏覽器(有時還要加一些外掛),其軟體成本與全套專業GIS軟體相比明顯要節省得多。另外,由於客戶端的簡單性,節省的維護費用也不容忽視。
(4)更簡單的操作。要使GIS為廣大的普通使用者所接受,而不僅僅侷限於少數受過專業培訓的專業使用者,就要降低對系統操作的要求。通用的WEB瀏覽器無疑是降低操作複雜度的最好選擇。
(5)靈活高效的計算模式。傳統的GIS大都使用檔案伺服器結構的處理方式,其處理能力完全依賴於客戶端,效率較低。當今一些高階的WEBGIS能充分利用網路資源,將基礎性、全域性性的處理交由伺服器執行,而對資料量較小的簡單操作則由客戶端直接完成。這種計算模式能靈活高效地尋求計算負荷和網路流量負載在伺服器端和客戶端的合理分配,是一種較理想的優化模式。
WebGIS使GIS應用走向公眾,通過網路可以將空間資訊傳至千家萬戶,如美國紐約州某縣通過電視有線網,向公眾釋出城市和土地等資訊。香港旅遊局也正在著手建立香港旅遊資訊系統,該系統的基礎資料直接來源於香港地政署的大型空間資料庫,旅遊資訊則由旅遊協會(TA)提供。計劃首先在尖沙嘴等旅遊熱點安裝觸控式螢幕,遊客可以通過它直接瞭解香港地理環境和查詢旅遊資訊。
WebGIS的資料傳輸量很大,目前Internet的速度還不能完全滿足需求。MapGuide的外掛大約為1M,使用28.8K的調變解調器(MODEM)也至少需要6分鐘才能從伺服器上下載過來。不過,網路技術日新月異,56K的MODEM已經開發出來。1997年2月,美國總統克林頓提出“建立快1000倍的第二代網際網路絡,讓12歲以上的青少年人人都上網際網路”。微軟正在實施的一項計劃中準備發射840多顆人造地球衛星,這些衛星將用於取代光纖進行Internet資料傳輸。可以預見,隨著Internet技術的發展,WebGIS應用終將走上普通人的辦工桌、走進千家萬戶的家用電腦,與Internet本身一樣成為人們日常生活必不可少的實用工具。
WebGIS還可以應用於Intranet建立企業/部門內部的網路GIS,可以在科研機構、政府職能部門、企事業單位得到廣泛應用。WebGIS提供了一種易於維護的分散式GIS解決方案。儘管目前的WebGIS軟體提供的空間分析功能很難滿足專業應用的需要,但是隨著技術的發展,WebGIS終將取代傳統的GIS。
GIS軟體常用的基本概念和類,在本文後面還會經常使用到,雖然不同的GIS軟體實現原理不盡相同,但是一般都會用到這些概念和類,現在一一加以介紹
Map是GIS裡最重要的類,可以說各種操作都是圍繞Map展開的。Map就像一個空白的畫布,圖層都是一層一層加上去的,M印和地圖控制元件相關聯,可以在Map上監聽各種事件以響應各種操作。
Laver是圖層,例如500kv輸電線路是一個圖層,220kv輸電線路又是另一個圖層,這兩個都是線圖層,500kv變電站是一個點圖層。對應前面的兩種空問資料型別,前面提到的幾個圖層是向量圖層,除了向量圖層以外GIS還有柵格圖層,也稱之為瓦片圖層,是由大小相等的圖片拼接而成的圖層,一般作為底層圖層第一個加到Map裡面。不同型別的圖層繼承了父類Layer,然後自己又有各自的屬性和方法。地圖正是這些圖層一層一層的加到Map上然後展現出來的。
一般,GIS軟體中的Feature指一個地理要素,例如一棵樹、一條河流或者一片汙區都是一個Featrue。Featme會加到Layer中被Laver統一管理,例如500kv線路的圖層就有很多500kv線路Feature加到裡面。Feature一般具有兩方面的屬性,一方面是與地理資訊相關的,例如一個變電站的位置,以及這個變電站以何種符號顯示,另一方面是自身的一些和地理資訊無關的屬性,例如變電站的變電站名稱、電壓等級等屬性。
GML(Geography Markup Language)即地理標識語言,它由OGC(開放式地理資訊系統協會)於1999年提出。GML是xML的一個子集,專門用於地理資訊領域,用於描述地理資料。
高德地圖(Amap) 是國內一流的免費地圖導航產品,也是基於位置的生活服務功能最全面、資訊最豐富的手機地圖,由國內最大的電子地圖、導航和LBS服務解決方案提供商高德軟體提供。高德地圖採用領先的技術為使用者打造了最好用的“活地圖”,不管在哪、去哪、找哪、怎麼去、想幹什麼……一圖在手,統統搞定!省電省流量更省錢,堪稱最完美的生活出行軟體!
它具有一些特點:1、最專業的地圖導航,地圖資料覆蓋中國大陸及香港澳門,遍及337個地級2857個縣級以上行政區劃單位;導航支援GPS、基站、網路等多種方式一鍵定位;2、最全面的生活資訊〗美食、酒店、演出、商場等各種深度POI點達2600多萬條,衣食住行吃喝玩樂全方位海量生活資訊可供搜尋查詢;3、最智慧的出行指南自動生成“最短”“最快”“最省錢”等多種路線規劃以供選擇,可根據實時路況選擇最優公交/駕車出行路線。
四維地圖是北京導航地圖廠商四維圖新研製的一種導航地圖。四維地圖的基礎資料是國家測繪局的,路線很齊全,基本上鄉村的一些小公路都有收集;但也有些縣城資料不是很完整,據全球權威行業研究機構In-Stat資料監測結果顯示,四維地圖繼連續四年車載導航市場份額超過70%之後,2007年在中國行動式導航市場份額超過35%,在中國導航地圖市場的領導地位日趨穩固。目前,四維地圖已服務於豐田、日產、本田、通用、卡迪拉克、別克、大眾、賓士、沃爾沃、現代等全球10大主流汽車品牌,大部分國內高階車型(豐田雷克薩斯、日產英菲尼迪、本田謳歌、通用卡迪拉克、別克林蔭大道等等)都選擇了四維地圖;併成為諾基亞、宇達電通(Mio)、任我遊(合眾思壯|Garmin)、宇龍、天派等全球主流行動式導航裝置的獨家內嵌式導航地圖。在網際網路和LBS位置服務領域,不僅百度、QQ、MSN、搜狐、雅虎、攜程等上千家門戶和專業網站使用了四維地圖,中國移動、中國聯通等運營商也一致使用了四維地圖。並且也是中國首家支援動態交通訊息釋出及導航應用的地圖企業。
圖吧地圖是國內最大的線上電子地圖及無線地圖服務提供商,專業為為網際網路和手機使用者提供地圖搜尋位置查詢和公交駕車線路等交通規劃服。
凱立德在GIS應用領域,利用獨創的空間資訊處理技術,以資料視覺化、思維視覺化幫助客戶全面瞭解地理資訊的價值,並做出有遠見的決策。按照國際軟體工程標準,凱立德開發了具備自主智慧財產權的地理資訊系統平臺I-Spatial、電子政務平臺X-Bridge,並在此基礎上開發了國土資源管理資訊系統、城市規劃管理資訊系統等系列軟體產品;在地理資訊資料化基礎之上,凱立德率先將業務範圍從政府決策支援、行業應用延伸到個人GPS導航應用,繼續引領產業發展。
本平臺採用了多個開源的軟體框架,在此基礎上進行了修改和擴充,客戶端採用SSH開源客戶端軟體,伺服器端採用了WCF。下面對這幾個開源軟體和框架做一一介紹。
1.Struts是一個MVC框架,通過配置檔案很好的實現了模型與檢視的分離,Struts應用包括3個元件:
控制器元件(ActionServlet和自定義Action);
模型元件(普通介面和JavaBean);
檢視元件(ActionForm和Struts標籤);
Struts 的MVC設計模式可以使我們的邏輯變得很清晰。
Struts的工作流程:
在web應用啟動時就會載入初始化ActionServlet,ActionServlet從struts-config.xml檔案中讀取配置資訊,把它們存放到各種配置物件當ActionServlet接收到一個客戶請求時,將執行如下流程.
(1)檢索和使用者請求匹配的ActionMapping例項,如果不存在,就返回請求路徑無效資訊;
(2)如果ActionForm例項不存在,就建立一個ActionForm物件,把客戶提交的表單資料儲存到ActionForm物件中;
(3)根據配置資訊決定是否需要表單驗證.如果需要驗證,就呼叫ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors物件, 就表示表單驗證成功;
(5)ActionServlet根據ActionMapping所包含的對映資訊決定將請求轉發給哪個Action,如果相應的 Action例項不存在,就先建立這個例項,然後呼叫Action的execute()方法;
(6)Action的execute()方法返回一個ActionForward物件,ActionServlet在把客戶請求轉發給ActionForward物件指向的JSP元件;
(7)ActionForward物件指向JSP元件生成動態網頁,返回給客戶;
2.Spring 是一個輕量級框架,提供依賴注入容器,AOP實現,DAO/ORM支援,Web整合等功能。依賴注入需要先明確關聯元件的介面,然後使用這寫介面編寫程式,在執行前將介面的實現組裝到程式中執行。AOP的目的是從系統中分離出方面,獨立於業務邏輯實現,在程式執行時織入程式中執行。Spring 的IOC和AOP可以使我們的產品在最大限度上解藕。
spring工作原理
(1)spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責負責對請求進行真正的處理工作。
(2)DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller
(3)DispatcherServlet請請求提交到目標Controller
(4)Controller進行業務邏輯處理後,會返回一個ModelAndView
(5)Dispathcher查詢一個或多個ViewResolver檢視解析器,找到ModelAndView物件指定的檢視物件
(6)檢視物件負責渲染返回給客戶端
Spring框架是一個分層架構,由7個定義良好的模組組成。Spring 模組構建在核心容器之上,核心容器定義了建立、配置和管理 bean 的方式, 組成 Spring 框架的每個模組(或元件)都可以單獨存在,或者與其他一個或多個模組聯合實現。每個模組的功能如下:
☆ 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要元件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC)模式將應用程式的配置和依賴性規範與實際的應用程式程式碼分開。
☆ Spring 上下文:Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和排程功能。
☆ Spring AOP:通過配置管理特性,Spring AOP 模組直接將面向方面的程式設計功能整合到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何物件支援 AOP。Spring AOP 模組為基於 Spring 的應用程式中的物件提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 元件,就可以將宣告性事務管理整合到應用程式中。
☆ Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同資料庫供應商丟擲的錯誤訊息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常程式碼數量(例如開啟和關閉連線)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。
☆ Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的物件關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。
☆ Spring Web 模組:Web 上下文模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。所以,Spring 框架支援與 Jakarta Struts 的整合。Web 模組還簡化了處理多部分請求以及將請求引數繫結到域物件的工作。
☆ Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程式的 MVC 實現。通過策略介面,MVC 框架變成為高度可配置的,MVC 容納了大量檢視技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 伺服器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支援不繫結到特定 J2EE 服務的可重用業務和資料訪問物件。毫無疑問,這樣的物件可以在不同 J2EE 環境 (Web 或 EJB)、獨立應用程式、測試環境之間重用。
IOC 和 AOP
控制反轉模式(也稱作依賴性介入)的基本概念是:不建立物件,但是描述建立它們的方式。在程式碼中不直接與物件和服務連線,但在配置檔案中描述哪一個元件需要哪一項服務。容器(在 Spring 框架中是 IOC 容器) 負責將這些聯絡在一起。
在典型的 IOC 場景中,容器建立了所有物件,並設定必要的屬性將它們連線在一起,決定什麼時間呼叫方法。下表列出了 IOC 的一個實現模式。
3.Hibernate 是一個基於JDBC 的持久化解決方案,是一個優秀的"物件-關係對映" 框架。持久化就是將程式中資料在瞬時狀態和持久狀態間轉換的機制。
Hibernate 就是在 JDBC的方式上進行封裝,以簡化JDBC方式繁瑣的編碼工作,將物件儲存到資料庫也不用編寫長長的SQL語句,只需要執行簡單的 session.save(Object) 就行了,當然需要配置對應的配置檔案。採用Hibernate作為持久層技術的最大的好處在於:可以完全以面向物件的方式進行系統分析、系統設計。
DAO模式需要為每個DAO元件編寫DAO介面,同時至少提供一個實現類,根據不同需要,可能有多個實現類。用Spring容器代替DAO工廠通常情況下,引入介面就不可避免需要引入工廠來負責DAO元件的生成。Spring實現了兩種基本模式:單態模式和工廠模式。而使用Spring可以完全避免使用工廠模式,因為Spring就是個功能非常強大的工廠。因此,完全可以讓Spring充當DAO工廠。
由Spring充當DAO工廠時,無須程式設計師自己實現工廠模式,只需要將DAO元件配置在Spring容器中,由ApplicationContext負責管理DAO元件的建立即可。藉助於Spring提供的依賴注入,其他元件甚至不用訪問工廠,一樣可以直接使用DAO例項。
4.SSH是典型的J2EE三層結構,分為表現層、中間層(業務邏輯層)和資料服務層。三層體系將業務規則、資料訪問及合法性校驗等工作放在中間層處理。客戶端不直接與資料庫互動,而是通過元件與中間層建立連線,再由中間層與資料庫互動。
表現層是傳統的JSP技術,自1999年問世以來,經過多年的發展,其廣泛的應用和穩定的表現,為其作為表現層技術打下了堅實的基礎。中間層採用的是流行的Spring+Hibernate,為了將控制層與業務邏輯層分離,又細分為以下幾種:
Web層,就是MVC模式裡面的“C”(controller),負責控制業務邏輯層與表現層的互動,呼叫業務邏輯層,並將業務資料返回給表現層作組織表現,該系統的MVC框架採用Struts。
Service層(就是業務邏輯層),負責實現業務邏輯。業務邏輯層以DAO層為基礎,通過對DAO元件的正面模式包裝,完成系統所要求的業務邏輯。
DAO層,負責與持久化物件互動。該層封裝了資料的增、刪、查、改的操作。
PO,持久化物件。通過實體關係對映工具將關係型資料庫的資料對映成物件,很方便地實現以面向物件方式操作資料庫,該系統採用Hibernate作為ORM框架。
Spring的作用貫穿了整個中間層,將Web層、Service層、DAO層及PO無縫整合,其資料服務層用來存放資料。
1.概念
WCF是基於Windows平臺下開發和部署服務的軟體開發包。WCF為服務提供了執行時環境(Runtime Enviroment),使得開發者能夠將CLR型別公開為服務,又能夠以CLR型別的方式使用服務。建立服務不一定需要WCF,但使用WCF可以使得建立服務的任務事半功倍。WCF是微軟對一系列產業標準定義的實現,包括服務互動、型別轉換、封送(Marshaling)以及各種協議的管理。WCF還為開發者提供了大多數應用程式都需要的基礎功能模組。如:託管(Hosting),服務例項管理(Service Instance Management)、非同步呼叫、可靠性、事務管理、離線佇列呼叫(Disconnected Queued Call)、安全性等。WCF的大部分功能都包含在一個單獨的程式集System.ServiceModel.dll中,名稱空間為:System.ServiceModel。
2.服務
服務是一組功能的集合,服務可以是本地的,也可以是遠端的,可以有多個參與方使用任意技術進行開發。服務與版本無關,甚至可以在不同的時區同時執行。服務內部包含了語言、技術、平臺、版本、框架的諸多概念,服務之間的互動只允許制定的通訊模式。服務的客戶端只是使用服務功能的一方。
WCF中的所有訊息都是SOAP訊息。訊息與傳輸協議無關。因為服務的建立對外界而言是不透明的,所以WCF服務通常以公開元資料(Metadata)的方式描述可用的功能以及服務可能採用的通訊方式。一個非WCF客戶端可以將元資料作為本地型別匯入到本地環境中,WCF客戶端也可以匯入非WCF服務的元資料,然後以本地CLR類與介面的方式進行呼叫。 WCF不允許客戶端直接與服務互動。客戶端總是使用代理(Proxy)將呼叫轉發給服務。代理公開的操作與服務相同,同時還增加了一些管理代理的方法。WCF允許客戶端跨越執行邊界與服務通訊。在同一臺機器中,客戶端可以呼叫同一個應用程式域中的服務,也可以在同一個程序中跨應用程式域中呼叫,甚至跨程序呼叫。客戶端也可以跨越Intranet或Internet的邊界與服務互動。
3.位置透明度
WCF與其他分散式技術一樣要求客戶端保持一致的程式設計模型,而不用考慮服務的位置,但實現方式卻不同。即使物件是本地的,WCF仍然使用遠端程式設計模型的例項化方式,並使用代理。由於所有的互動操作都經由代理完成,要求相同的配置與託管方式,所以對於本地和遠端方式而言,WCF都只需要維持相同的程式設計模型。這使得開發者不會因為服務位置的改變影響客戶端,同時還大大簡化了應用程式的程式設計模型。
4.地址
WCF的每一個服務都有一個唯一的地址(Address)。地址包含兩個重要元素:服務位置與傳輸協議(Transport Protocol)。服務位置包括目標機器名、站點或網路、通訊埠、管道或佇列以及一個可選的特定路徑或者URI。
五種傳輸樣式:HTTP、TCP、Peer network(對等網)、IPC(基於命名管道的內部程序通訊)、MSMQ。
如:http://localhost:8001/
net.tcp://localhost:8002/Myservice
net.pipe://localhost/Mypipe
net.msmq://localhost:8002/MyService
5.契約
WCF所有的服務都公開為契約(Contract)。契約與平臺無關。
四種契約:
服務契約(Service Contract):服務契約描述了客戶端能夠執行的服務操作。
資料契約(Data Contract):資料契約定義了與服務互動的資料型別。
錯誤契約:(Fault Contract):錯誤契約定義了服務丟擲的錯誤。
訊息契約:(Message Contract):訊息契約允許服務直接與訊息互動。
服務契約
ServiceContract特性公開了CLR介面(或類)作為WCF契約。WCF契約與型別的訪問限定無關,因為型別的訪問限定屬於CLR的概念。
OperationContract特性公開了WCF服務契約中的方法,此特性只能被應用在方法上,而不允許應用到同樣屬於CLR概念的屬性、索引器和事件上。WCF只能識別作為邏輯功能的操作(Operation)。
契約操作不允許使用引用物件作為引數,只允許使用基本型別或資料契約。
服務的類要避免使用帶引數建構函式,因為WCF只能使用預設建構函式。同樣,雖然類可以使用內部的屬性、索引器、靜態成員等,但WCF客戶端卻無法使用它們。
7.託管(Hos