版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
服務(wù)計算與SOA開發(fā)
-Web服務(wù)開發(fā)技術(shù)
ServicesComputing&SOADevelopment授課教師:文斌
2014SpringHainanNormalUniversity1授課內(nèi)容
01SOA及服務(wù)計算基本概念
02HTTP和XML03Web服務(wù)
04WSDL
05SOAP
06業(yè)務(wù)流程與服務(wù)組合
07主流的Web服務(wù)開發(fā)工具
08SOA應(yīng)用開發(fā)案例2授課內(nèi)容
01SOA及服務(wù)計算基本概念
02HTTP和XML03Web服務(wù)
04WSDL
05SOAP
06業(yè)務(wù)流程與服務(wù)組合
07主流的Web服務(wù)開發(fā)工具
08SOA應(yīng)用開發(fā)案例3Web服務(wù)4概述SOAP、WSDL、UDDI通常被認(rèn)為是Web服務(wù)的支撐協(xié)議,通過上面章節(jié)對HTTP和XML協(xié)議的講解,有助于我們了解Web服務(wù)的基本設(shè)計思路。規(guī)范與協(xié)議定義了關(guān)于Web服務(wù)最基本的特征,但涉及具體實現(xiàn)這些特征的細(xì)節(jié),卻沒有做出深入的決定。而各個軟件提供商,會根據(jù)自己現(xiàn)有產(chǎn)品的特征,遵循規(guī)范來提供自己的Web服務(wù)平臺。本章將從程序開發(fā)的角度來剖析Web服務(wù)的開發(fā)及運行過程。5Web服務(wù).NET系列JAVA系列IBMSCA/SDORESTfulWeb服務(wù)6REST是什么?WhyRESTful
?RESTfulWebService!7在這個流量=金錢的時代8為什么要了解REST:API數(shù)據(jù)角度從數(shù)據(jù)上來看:互聯(lián)網(wǎng)程序員不了解RESTAPI可以嗎?9為什么要了解REST:同行數(shù)據(jù)角度/apis/directory/1?sort=mashups10為什么要了解REST:AmazoneCommerceVS
TaobaoTopREST +SOAP(85:15)REST11REST、RESTful???RoyThomasFielding博士2000年提出REST是英文RepresentationalStateTransfer的縮寫表象化狀態(tài)轉(zhuǎn)變或者表述性狀態(tài)轉(zhuǎn)移REST是Web服務(wù)的一種架構(gòu)風(fēng)格REST一種新型的分布式軟件設(shè)計架構(gòu)使用HTTP、URI等廣泛流行的標(biāo)準(zhǔn)和協(xié)議12到底是什么REST是一種設(shè)計風(fēng)格。它不是一種標(biāo)準(zhǔn),也不是一種軟件,而是一種思想。REST通?;谑褂肏TTP,URI,和XML以及HTML這些現(xiàn)有的廣泛流行的協(xié)議和標(biāo)準(zhǔn)。13一個簡單扼要的定義REST定義了應(yīng)該如何正確地使用(這和大多數(shù)人的實際使用方式有很大不同)Web標(biāo)準(zhǔn),例如HTTP和URI。如果你在設(shè)計應(yīng)用程序時能堅持REST原則,那就預(yù)示著你將會得到一個使用了優(yōu)質(zhì)Web架構(gòu)的系統(tǒng)。
----------StefanTilkov
14Http協(xié)議你知道多少?1:http的請求方法有多少?2:請求包頭你知道多少?3:返回碼呢?GET
請求獲取Request-URI所標(biāo)識的資源POST
在Request-URI所標(biāo)識的資源后附加新的數(shù)據(jù)HEAD
請求獲取由Request-URI所標(biāo)識的資源的響應(yīng)消息報頭PUT
請求服務(wù)器存儲一個資源,并用Request-URI作為其標(biāo)識PATCHTRACE
請求服務(wù)器回送收到的請求信息,主要用于測試或診斷CONNECT保留將來使用OPTIONS請求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項和需求15什么是RESTRepresentationalStateTransfer(表述性狀態(tài)轉(zhuǎn)移),簡稱REST,來自RoyFielding的博士論文:《ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures》(《架構(gòu)風(fēng)格與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計》)RoyFielding是DaySoftware公司的首席科學(xué)家,Apache軟件基金會的合作創(chuàng)始人,在美國加洲大學(xué)歐文分校獲得博士學(xué)位,HTTP、URI等Web標(biāo)準(zhǔn)的主要設(shè)計者16
REST架構(gòu)的主要原則網(wǎng)絡(luò)上的所有事物都可被抽象為資源(Resource)每個資源都有一個唯一的資源標(biāo)識符(ResourceIdentifier)同一資源具有多種表現(xiàn)形式(xml、json等)對資源的各種操作不會改變資源標(biāo)識符所有的操作都是無狀態(tài)的(Stateless)Ps:符合REST原則的架構(gòu)方式即可稱為RESTful17資源、資源、資源處處皆資源(Resource):2010公司的銷售數(shù)據(jù)小明09年一月份看過的書正在上映的電影公司銷售的產(chǎn)品清單……REST與資源REST面向的對象是資源RE——表現(xiàn),即mediatype的設(shè)計。ST——通過跟蹤超鏈接實現(xiàn)狀態(tài)遷移。18資源與URIDesignRESTful風(fēng)格的一大特色就是使用URI來標(biāo)示資源URI和URLhttp:///users/
http:///users/{user}(oneforeachuser)http:///findUserFormhttp:///locations/http:///locations/{location}(oneforeachlocation)http:///findLocationForm19REST從資源的角度來觀察整個網(wǎng)絡(luò),分布在各處的資源由URI確定,而客戶端的應(yīng)用通過URI來獲取資源的表征。獲得這些表征致使這些應(yīng)用程序轉(zhuǎn)變了其狀態(tài)。隨著不斷獲取資源的表征,客戶端應(yīng)用不斷地在轉(zhuǎn)變著其狀態(tài),所謂表征狀態(tài)轉(zhuǎn)移(RepresentationalStateTransfer)。REST是一種的分布式應(yīng)用架構(gòu)風(fēng)格,HTTP1.1是基于REST架構(gòu)風(fēng)格設(shè)計的。其他分布式引用架構(gòu)風(fēng)格1:分布式對象(RMI/EJB/HSF)2:遠(yuǎn)程過程調(diào)用(SOAP/XML-RPC/JSON-RPC/HESSION)20RESTfulHTTP方案中的所有資源都繼承自類似于這樣的一個類:classResource{
Resource(URIu);Responseget();Responsepost(Requestr);Responseput(Requestr);Responsedelete();}21指導(dǎo)思想:REST的架構(gòu)約束客戶端-服務(wù)器無狀態(tài)緩存統(tǒng)一接口分層系統(tǒng)按需代碼(可選約束,我沒搞懂)22資源操作http:///users/GET:獲取一個資源
POST:創(chuàng)建一個新的資源
PUT
:修改一個資源的狀態(tài)
DELETE:刪除一個資源
23資源展現(xiàn)XmlJsonXhtmlRSS/AtomOtherMediatypes24返回數(shù)據(jù)1:xml序列化耗時返回的數(shù)據(jù)把顯得有點大很想說的是twitterstreamapi拋棄了xml2:Json簡單清晰數(shù)據(jù)包小提示:不要json-lib,選擇jackson來序列化josnTaobao,amazon都返回json
,xml2種格式3:atomAtom供稿格式(AtomSyndicationFormat)是用于網(wǎng)站消息來源,基于XML的文檔格式。GoogleDataAPI和豆瓣都是基于Atom格式的返回4:RSS25資源多重表述什么是資源表述?它是一段對于資源在某一個特定時刻的狀態(tài)描述,資源表述有多種格式,最常見的是HTML/XML/JSON純文本。26無狀態(tài)性無狀態(tài)性使得客戶端和服務(wù)器端不必保存對方的詳細(xì)信息,服務(wù)器只需要處理當(dāng)前Request,而不必了解前面Request的歷史無狀態(tài)性減少了服務(wù)器從局部錯誤中恢復(fù)的任務(wù)量,可以非常方便地實現(xiàn)FailOver技術(shù),從而很容易地將服務(wù)器組件部署在集群內(nèi)無狀態(tài)性使得服務(wù)器端不必在多個Request中保存狀態(tài),從而可以更容易地釋放資源無狀態(tài)性無需服務(wù)組件保存Request狀態(tài),因此可讓服務(wù)器充分利用Pool技術(shù)來提高穩(wěn)定性和性能27指導(dǎo)思想(續(xù)):REST的五條關(guān)鍵原則為所有“事物”定義ID(URI)將所有事物鏈接在一起使用標(biāo)準(zhǔn)方法資源多重表述無狀態(tài)通信28為什么要基于API開發(fā)WEB是開放的時代,twitter的30W個客戶端構(gòu)造了操作壁壘,讓google,facebook無法追趕;API讓web,手機客戶端,桌面多種操作成為可能,程序員分工更加明確,切降低了開發(fā)成本;軟件開發(fā)依賴解耦讓編程語言發(fā)揮各自的優(yōu)勢。29REST導(dǎo)致的變化30RESTFULAPI一種基于http協(xié)議和rest架構(gòu)策略的一種簡單webservice,包含以下特征:Web服務(wù)的基本URI,如
http:///feed/review/latestWeb服務(wù)接受與返回的互聯(lián)網(wǎng)媒體類型,比如:JSON,XML,YAML等。Web服務(wù)在該資源上所支持的一系列請求方法(比如:POST,GET,PUT或DELETE)。API必須是超文本驅(qū)動31HTTP在RESTFULAPI中的典型應(yīng)用RESOURCEGETPOSTPUTDELETEPATCH
http:///feed/review/latestselectinsertupdatedeletePartialupdateGET/PUT/DELETE/PATCH方法:冪等的,POST是不冪等的POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的32簡單實例:Python框架Web.py的實現(xiàn)RESTFULAPI然后配置urls
=
('/item/(.*)',‘item')。好吧,我承認(rèn)這是我見過的最簡單實現(xiàn)restfulAPI的框架!詳細(xì)地址:/2008/09/20/getting-restful-with-webpy/33思考1:其實都可以GET實現(xiàn),都用GET方式的害處?2:POST也可以實現(xiàn)很多功能,POST方式的害處?3:Servlet規(guī)范JSR154,JSR315定義了哪些方法?34JavaAPIforRESTfulWebServices:JSR-311JSR-311(JAX-RS:JavaAPIforRESTfulWebServices)旨在定義一個統(tǒng)一的規(guī)范,使得Java程序員可以使用一套固定的接口來開發(fā)REST應(yīng)用。特征:使用POJO編程模型基于Annotation的配置集成了JAXB,35JAX-RS提供的標(biāo)注將資源類@Path,標(biāo)注資源類或方法的相對路徑@GET,@PUT,@POST,@DELETE,標(biāo)注方法是用的HTTP請求的類型@Produces,標(biāo)注返回的MIME媒體類型@Consumes,標(biāo)注可接受請求的MIME媒體類型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分別標(biāo)注方法的參數(shù)來自于HTTP請求的不同位置,例如@PathParam來自于URL的路徑,@QueryParam來自于URL的查詢參數(shù),@HeaderParam來自于HTTP請求的頭信息,@CookieParam來自于HTTP請求的Cookie。36代碼示例@GET@Produces({MediaType.APPLICATION_JSON})@Path("/book/{id}")publicBookgetBook(@PathParam("id")Stringid){returnnewBook("huhu","huhu");}@PUT@Path("/book/{name}")publicvoidupdateBook(@PathParam("name")PathSegmentbook){
Iterator<Book>it=books.iterator();Stringname=String.valueOf(book.getMatrixParameters().get("name"));Stringcontent=String.valueOf(book.getMatrixParameters().get("content"));
while(it.hasNext()){Bookbooktmp=it.next();
if(name.equals(booktmp.getName())){
booktmp.setContent(content);break;}}}37訪問示例GET/calendar/feeds/userID/private-magicCookie/fullPOSThttps:///calendar/feeds/default/private/fullPUT/calendar/feeds/default/owncalendars/full/calendarIDDELETE/calendar/feeds/default/owncalendars/full/calendarIDPATCH/calendar/feeds/default/private/full/eventID38JAX-RS的實現(xiàn)ApacheCXF,開源的Web服務(wù)框架。Jersey,由Sun提供的JAX-RS的參考實現(xiàn)。RESTEasy,JBoss的實現(xiàn)。Restlet,由JeromeLouvel和DavePawson開發(fā),是最早的REST框架,先于JAX-RS出現(xiàn)題外話:Spring3.0直接支持restful風(fēng)格的編碼了。39目前的restful框架目前宣稱支持REST風(fēng)格Webservice的Java框架包括以下這些:Restlet
JerseyRESTEasy(JBoss的),CXFSpring3.0也支持REST了,還有國人做的一個輕量框架JRest4GuicePhp和python40您選擇框架要考慮的產(chǎn)品成熟度,是否有成熟團(tuán)隊,社區(qū)文檔是否齊全和常見框架的集成(例如:Spirng)對流行協(xié)議的支持(Atom,Oauth)配置的簡易程度性能是否容易上手……41前置URI42流程鑒權(quán)業(yè)務(wù)處理返回數(shù)據(jù)43開始階段JAVA框架選擇JSR311的實現(xiàn)文檔齊全支持spring,oauth,atom支持jetty的集成配置有點郁悶44REST優(yōu)勢使用REST的最佳的場景是對外提供公開的服務(wù),也就是所謂的OpenAPI,也有的人認(rèn)為RESt更適合資源導(dǎo)向的網(wǎng)站,像youtube這樣的網(wǎng)站。REST的真正價值在于WebServices,而不是通過瀏覽器操作的應(yīng)用程序。45當(dāng)我們用瀏覽器訪問一個網(wǎng)址時,瀏覽器會構(gòu)造一個HTTP請求。這個請求有一個頭信息,其中包括了本次請求接受何種類型的數(shù)據(jù)。46將用戶界面和數(shù)據(jù)存儲分離,提高用戶界面跨多個服務(wù)平臺一個好的架構(gòu)應(yīng)該可以很輕松的為不同的請求返回不同格式的數(shù)據(jù)。47RESTful優(yōu)缺點SOAP、WSDL、WS*SOWHYREST?
RPC樣式的架構(gòu)中,關(guān)注點在于方法,而在REST樣式的架構(gòu)中,關(guān)注點在于資源REST輕量級、HTTP無狀態(tài)請求可以由任何可用服務(wù)器回答,分布式、緩存、云計算資源唯一URI、標(biāo)準(zhǔn)接口基于成熟HTTP的安全模型Simplicity、human-friendly……48REST不是什么?REST不是技術(shù)
REST不是CRUD49目前restful的web應(yīng)用Google的Gdata豆瓣的OpenAPIAmazon的S3等等都是REST的50RESTful.NETREST在.NET平臺下的最佳實踐WCFRESTfulProgrammingModelHostingWCFRESTfulServicesSecuringRESTEndpoints51前提準(zhǔn)備WCFRESTServiceStartKit
visualstudio2008sp1
.netframework3.5sp1Fiddler(客戶端調(diào)試)52URIhttp://localhost:8080/rest/Userhttp://localhost:8080/rest/User/{userName}http://localhost:8080/rest/User/xml ///<summary>
///用戶信息 ///</summary> [DataContract(Name="User")] publicclassUserInfo
{ [DataMember] publicstringUserName
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年餐飲業(yè)雇主責(zé)任保險協(xié)議
- 2025年度購房首付資金監(jiān)管及支付風(fēng)險控制協(xié)議4篇
- 2025年度西城商場商場內(nèi)景觀綠化工程合同2篇
- 二零二五年版智能交通設(shè)備購銷及系統(tǒng)優(yōu)化合同3篇
- 尾盤旅游地產(chǎn)銷售代理合同(2025版)5篇
- 二零二五年度食堂調(diào)味品采購協(xié)議2篇
- 2025年增值擔(dān)保協(xié)議
- 2025年倉儲場地轉(zhuǎn)讓合同
- 二零二五版企業(yè)間借款合同模板及債務(wù)轉(zhuǎn)讓協(xié)議標(biāo)準(zhǔn)范本3篇
- 2025年分期付款潛水課程購買協(xié)議
- 2025年湖北武漢工程大學(xué)招聘6人歷年高頻重點提升(共500題)附帶答案詳解
- 【數(shù) 學(xué)】2024-2025學(xué)年北師大版數(shù)學(xué)七年級上冊期末能力提升卷
- GB/T 26846-2024電動自行車用電動機和控制器的引出線及接插件
- 遼寧省沈陽市皇姑區(qū)2024-2025學(xué)年九年級上學(xué)期期末考試語文試題(含答案)
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 妊娠咳嗽的臨床特征
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2024年金融理財-擔(dān)保公司考試近5年真題附答案
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報書
- 高中語文古代文學(xué)課件:先秦文學(xué)
評論
0/150
提交評論