版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
服務(wù)計(jì)算與SOA開(kāi)發(fā)
-Web服務(wù)開(kāi)發(fā)技術(shù)
ServicesComputing&SOADevelopment授課教師:文斌
2014SpringHainanNormalUniversity1授課內(nèi)容
01SOA及服務(wù)計(jì)算基本概念
02HTTP和XML03Web服務(wù)
04WSDL
05SOAP
06業(yè)務(wù)流程與服務(wù)組合
07主流的Web服務(wù)開(kāi)發(fā)工具
08SOA應(yīng)用開(kāi)發(fā)案例2授課內(nèi)容
01SOA及服務(wù)計(jì)算基本概念
02HTTP和XML03Web服務(wù)
04WSDL
05SOAP
06業(yè)務(wù)流程與服務(wù)組合
07主流的Web服務(wù)開(kāi)發(fā)工具
08SOA應(yīng)用開(kāi)發(fā)案例3Web服務(wù)4概述SOAP、WSDL、UDDI通常被認(rèn)為是Web服務(wù)的支撐協(xié)議,通過(guò)上面章節(jié)對(duì)HTTP和XML協(xié)議的講解,有助于我們了解Web服務(wù)的基本設(shè)計(jì)思路。規(guī)范與協(xié)議定義了關(guān)于Web服務(wù)最基本的特征,但涉及具體實(shí)現(xiàn)這些特征的細(xì)節(jié),卻沒(méi)有做出深入的決定。而各個(gè)軟件提供商,會(huì)根據(jù)自己現(xiàn)有產(chǎn)品的特征,遵循規(guī)范來(lái)提供自己的Web服務(wù)平臺(tái)。本章將從程序開(kāi)發(fā)的角度來(lái)剖析Web服務(wù)的開(kāi)發(fā)及運(yùn)行過(guò)程。5Web服務(wù).NET系列JAVA系列IBMSCA/SDORESTfulWeb服務(wù)6REST是什么?WhyRESTful
?RESTfulWebService!7在這個(gè)流量=金錢(qián)的時(shí)代8為什么要了解REST:API數(shù)據(jù)角度從數(shù)據(jù)上來(lái)看:互聯(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的縮寫(xiě)表象化狀態(tài)轉(zhuǎn)變或者表述性狀態(tài)轉(zhuǎn)移REST是Web服務(wù)的一種架構(gòu)風(fēng)格REST一種新型的分布式軟件設(shè)計(jì)架構(gòu)使用HTTP、URI等廣泛流行的標(biāo)準(zhǔn)和協(xié)議12到底是什么REST是一種設(shè)計(jì)風(fēng)格。它不是一種標(biāo)準(zhǔn),也不是一種軟件,而是一種思想。REST通常基于使用HTTP,URI,和XML以及HTML這些現(xiàn)有的廣泛流行的協(xié)議和標(biāo)準(zhǔn)。13一個(gè)簡(jiǎn)單扼要的定義REST定義了應(yīng)該如何正確地使用(這和大多數(shù)人的實(shí)際使用方式有很大不同)Web標(biāo)準(zhǔn),例如HTTP和URI。如果你在設(shè)計(jì)應(yīng)用程序時(shí)能堅(jiān)持REST原則,那就預(yù)示著你將會(huì)得到一個(gè)使用了優(yōu)質(zhì)Web架構(gòu)的系統(tǒng)。
----------StefanTilkov
14Http協(xié)議你知道多少?1:http的請(qǐng)求方法有多少?2:請(qǐng)求包頭你知道多少?3:返回碼呢?GET
請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源POST
在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù)HEAD
請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭PUT
請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用Request-URI作為其標(biāo)識(shí)PATCHTRACE
請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷CONNECT保留將來(lái)使用OPTIONS請(qǐng)求查詢(xún)服務(wù)器的性能,或者查詢(xún)與資源相關(guān)的選項(xiàng)和需求15什么是RESTRepresentationalStateTransfer(表述性狀態(tài)轉(zhuǎn)移),簡(jiǎn)稱(chēng)REST,來(lái)自RoyFielding的博士論文:《ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures》(《架構(gòu)風(fēng)格與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計(jì)》)RoyFielding是DaySoftware公司的首席科學(xué)家,Apache軟件基金會(huì)的合作創(chuàng)始人,在美國(guó)加洲大學(xué)歐文分校獲得博士學(xué)位,HTTP、URI等Web標(biāo)準(zhǔn)的主要設(shè)計(jì)者16
REST架構(gòu)的主要原則網(wǎng)絡(luò)上的所有事物都可被抽象為資源(Resource)每個(gè)資源都有一個(gè)唯一的資源標(biāo)識(shí)符(ResourceIdentifier)同一資源具有多種表現(xiàn)形式(xml、json等)對(duì)資源的各種操作不會(huì)改變資源標(biāo)識(shí)符所有的操作都是無(wú)狀態(tài)的(Stateless)Ps:符合REST原則的架構(gòu)方式即可稱(chēng)為RESTful17資源、資源、資源處處皆資源(Resource):2010公司的銷(xiāo)售數(shù)據(jù)小明09年一月份看過(guò)的書(shū)正在上映的電影公司銷(xiāo)售的產(chǎn)品清單……REST與資源REST面向的對(duì)象是資源RE——表現(xiàn),即mediatype的設(shè)計(jì)。ST——通過(guò)跟蹤超鏈接實(shí)現(xiàn)狀態(tài)遷移。18資源與URIDesignRESTful風(fēng)格的一大特色就是使用URI來(lái)標(biāo)示資源URI和URLhttp:///users/
http:///users/{user}(oneforeachuser)http:///findUserFormhttp:///locations/http:///locations/{location}(oneforeachlocation)http:///findLocationForm19REST從資源的角度來(lái)觀察整個(gè)網(wǎng)絡(luò),分布在各處的資源由URI確定,而客戶(hù)端的應(yīng)用通過(guò)URI來(lái)獲取資源的表征。獲得這些表征致使這些應(yīng)用程序轉(zhuǎn)變了其狀態(tài)。隨著不斷獲取資源的表征,客戶(hù)端應(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è)計(jì)的。其他分布式引用架構(gòu)風(fēng)格1:分布式對(duì)象(RMI/EJB/HSF)2:遠(yuǎn)程過(guò)程調(diào)用(SOAP/XML-RPC/JSON-RPC/HESSION)20RESTfulHTTP方案中的所有資源都繼承自類(lèi)似于這樣的一個(gè)類(lèi):classResource{
Resource(URIu);Responseget();Responsepost(Requestr);Responseput(Requestr);Responsedelete();}21指導(dǎo)思想:REST的架構(gòu)約束客戶(hù)端-服務(wù)器無(wú)狀態(tài)緩存統(tǒng)一接口分層系統(tǒng)按需代碼(可選約束,我沒(méi)搞懂)22資源操作http:///users/GET:獲取一個(gè)資源
POST:創(chuàng)建一個(gè)新的資源
PUT
:修改一個(gè)資源的狀態(tài)
DELETE:刪除一個(gè)資源
23資源展現(xiàn)XmlJsonXhtmlRSS/AtomOtherMediatypes24返回?cái)?shù)據(jù)1:xml序列化耗時(shí)返回的數(shù)據(jù)把顯得有點(diǎn)大很想說(shuō)的是twitterstreamapi拋棄了xml2:Json簡(jiǎn)單清晰數(shù)據(jù)包小提示:不要json-lib,選擇jackson來(lái)序列化josnTaobao,amazon都返回json
,xml2種格式3:atomAtom供稿格式(AtomSyndicationFormat)是用于網(wǎng)站消息來(lái)源,基于XML的文檔格式。GoogleDataAPI和豆瓣都是基于Atom格式的返回4:RSS25資源多重表述什么是資源表述?它是一段對(duì)于資源在某一個(gè)特定時(shí)刻的狀態(tài)描述,資源表述有多種格式,最常見(jiàn)的是HTML/XML/JSON純文本。26無(wú)狀態(tài)性無(wú)狀態(tài)性使得客戶(hù)端和服務(wù)器端不必保存對(duì)方的詳細(xì)信息,服務(wù)器只需要處理當(dāng)前Request,而不必了解前面Request的歷史無(wú)狀態(tài)性減少了服務(wù)器從局部錯(cuò)誤中恢復(fù)的任務(wù)量,可以非常方便地實(shí)現(xiàn)FailOver技術(shù),從而很容易地將服務(wù)器組件部署在集群內(nèi)無(wú)狀態(tài)性使得服務(wù)器端不必在多個(gè)Request中保存狀態(tài),從而可以更容易地釋放資源無(wú)狀態(tài)性無(wú)需服務(wù)組件保存Request狀態(tài),因此可讓服務(wù)器充分利用Pool技術(shù)來(lái)提高穩(wěn)定性和性能27指導(dǎo)思想(續(xù)):REST的五條關(guān)鍵原則為所有“事物”定義ID(URI)將所有事物鏈接在一起使用標(biāo)準(zhǔn)方法資源多重表述無(wú)狀態(tài)通信28為什么要基于API開(kāi)發(fā)WEB是開(kāi)放的時(shí)代,twitter的30W個(gè)客戶(hù)端構(gòu)造了操作壁壘,讓google,facebook無(wú)法追趕;API讓web,手機(jī)客戶(hù)端,桌面多種操作成為可能,程序員分工更加明確,切降低了開(kāi)發(fā)成本;軟件開(kāi)發(fā)依賴(lài)解耦讓編程語(yǔ)言發(fā)揮各自的優(yōu)勢(shì)。29REST導(dǎo)致的變化30RESTFULAPI一種基于http協(xié)議和rest架構(gòu)策略的一種簡(jiǎn)單webservice,包含以下特征:Web服務(wù)的基本URI,如
http:///feed/review/latestWeb服務(wù)接受與返回的互聯(lián)網(wǎng)媒體類(lèi)型,比如:JSON,XML,YAML等。Web服務(wù)在該資源上所支持的一系列請(qǐng)求方法(比如:POST,GET,PUT或DELETE)。API必須是超文本驅(qū)動(dòng)31HTTP在RESTFULAPI中的典型應(yīng)用RESOURCEGETPOSTPUTDELETEPATCH
http:///feed/review/latestselectinsertupdatedeletePartialupdateGET/PUT/DELETE/PATCH方法:冪等的,POST是不冪等的POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的32簡(jiǎn)單實(shí)例:Python框架Web.py的實(shí)現(xiàn)RESTFULAPI然后配置urls
=
('/item/(.*)',‘item')。好吧,我承認(rèn)這是我見(jiàn)過(guò)的最簡(jiǎn)單實(shí)現(xiàn)restfulAPI的框架!詳細(xì)地址:/2008/09/20/getting-restful-with-webpy/33思考1:其實(shí)都可以GET實(shí)現(xiàn),都用GET方式的害處?2:POST也可以實(shí)現(xiàn)很多功能,POST方式的害處?3:Servlet規(guī)范JSR154,JSR315定義了哪些方法?34JavaAPIforRESTfulWebServices:JSR-311JSR-311(JAX-RS:JavaAPIforRESTfulWebServices)旨在定義一個(gè)統(tǒng)一的規(guī)范,使得Java程序員可以使用一套固定的接口來(lái)開(kāi)發(fā)REST應(yīng)用。特征:使用POJO編程模型基于Annotation的配置集成了JAXB,35JAX-RS提供的標(biāo)注將資源類(lèi)@Path,標(biāo)注資源類(lèi)或方法的相對(duì)路徑@GET,@PUT,@POST,@DELETE,標(biāo)注方法是用的HTTP請(qǐng)求的類(lèi)型@Produces,標(biāo)注返回的MIME媒體類(lèi)型@Consumes,標(biāo)注可接受請(qǐng)求的MIME媒體類(lèi)型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分別標(biāo)注方法的參數(shù)來(lái)自于HTTP請(qǐng)求的不同位置,例如@PathParam來(lái)自于URL的路徑,@QueryParam來(lái)自于URL的查詢(xún)參數(shù),@HeaderParam來(lái)自于HTTP請(qǐng)求的頭信息,@CookieParam來(lái)自于HTTP請(qǐng)求的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訪(fǎng)問(wèn)示例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的實(shí)現(xiàn)ApacheCXF,開(kāi)源的Web服務(wù)框架。Jersey,由Sun提供的JAX-RS的參考實(shí)現(xiàn)。RESTEasy,JBoss的實(shí)現(xiàn)。Restlet,由JeromeLouvel和DavePawson開(kāi)發(fā),是最早的REST框架,先于JAX-RS出現(xiàn)題外話(huà):Spring3.0直接支持restful風(fēng)格的編碼了。39目前的restful框架目前宣稱(chēng)支持REST風(fēng)格Webservice的Java框架包括以下這些:Restlet
JerseyRESTEasy(JBoss的),CXFSpring3.0也支持REST了,還有國(guó)人做的一個(gè)輕量框架JRest4GuicePhp和python40您選擇框架要考慮的產(chǎn)品成熟度,是否有成熟團(tuán)隊(duì),社區(qū)文檔是否齊全和常見(jiàn)框架的集成(例如:Spirng)對(duì)流行協(xié)議的支持(Atom,Oauth)配置的簡(jiǎn)易程度性能是否容易上手……41前置URI42流程鑒權(quán)業(yè)務(wù)處理返回?cái)?shù)據(jù)43開(kāi)始階段JAVA框架選擇JSR311的實(shí)現(xiàn)文檔齊全支持spring,oauth,atom支持jetty的集成配置有點(diǎn)郁悶44REST優(yōu)勢(shì)使用REST的最佳的場(chǎng)景是對(duì)外提供公開(kāi)的服務(wù),也就是所謂的OpenAPI,也有的人認(rèn)為RESt更適合資源導(dǎo)向的網(wǎng)站,像youtube這樣的網(wǎng)站。REST的真正價(jià)值在于WebServices,而不是通過(guò)瀏覽器操作的應(yīng)用程序。45當(dāng)我們用瀏覽器訪(fǎng)問(wèn)一個(gè)網(wǎng)址時(shí),瀏覽器會(huì)構(gòu)造一個(gè)HTTP請(qǐng)求。這個(gè)請(qǐng)求有一個(gè)頭信息,其中包括了本次請(qǐng)求接受何種類(lèi)型的數(shù)據(jù)。46將用戶(hù)界面和數(shù)據(jù)存儲(chǔ)分離,提高用戶(hù)界面跨多個(gè)服務(wù)平臺(tái)一個(gè)好的架構(gòu)應(yīng)該可以很輕松的為不同的請(qǐng)求返回不同格式的數(shù)據(jù)。47RESTful優(yōu)缺點(diǎn)SOAP、WSDL、WS*SOWHYREST?
RPC樣式的架構(gòu)中,關(guān)注點(diǎn)在于方法,而在REST樣式的架構(gòu)中,關(guān)注點(diǎn)在于資源REST輕量級(jí)、HTTP無(wú)狀態(tài)請(qǐng)求可以由任何可用服務(wù)器回答,分布式、緩存、云計(jì)算資源唯一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平臺(tái)下的最佳實(shí)踐WCFRESTfulProgrammingModelHostingWCFRESTfulServicesSecuringRESTEndpoints51前提準(zhǔn)備WCFRESTServiceStartKit
visualstudio2008sp1
.netframework3.5sp1Fiddler(客戶(hù)端調(diào)試)52URIhttp://localhost:8080/rest/Userhttp://localhost:8080/rest/User/{userName}http://localhost:8080/rest/User/xml ///<summary>
///用戶(hù)信息 ///</summary> [DataContract(Name="User")] publicclassUserInfo
{ [DataMember] publicstringUserName
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025安慶宿松縣長(zhǎng)鋪專(zhuān)職消防站招聘9人參考筆試題庫(kù)及答案解析
- 2025山東鐵路檢察機(jī)關(guān)公開(kāi)招聘聘用制書(shū)記員(10名)模擬筆試試題及答案解析
- 2025浙江臺(tái)州溫嶺市交通旅游集團(tuán)有限公司下屬溫嶺市規(guī)劃設(shè)計(jì)院有限公司面向社會(huì)招聘工作人員12人備考筆試試題及答案解析
- 2026年南平建甌市衛(wèi)生健康局下屬事業(yè)單位赴福建中醫(yī)藥大學(xué)公開(kāi)招聘緊缺急需專(zhuān)業(yè)人員10人參考筆試題庫(kù)及答案解析
- 2025年合肥大學(xué)公開(kāi)招聘6名人才租賃人員參考筆試題庫(kù)及答案解析
- 2025中原再擔(dān)保集團(tuán)安陽(yáng)融資擔(dān)保有限公司社會(huì)招聘3人備考筆試題庫(kù)及答案解析
- 2025廣西柳州市柳城縣應(yīng)急管理局招聘5人備考筆試題庫(kù)及答案解析
- 2025年全國(guó)大學(xué)英語(yǔ)CET四級(jí)考試試卷及答案
- 2025年福州市公安局公開(kāi)招聘第52期警務(wù)輔助人員備考題庫(kù)及參考答案詳解一套
- 深圳市檢察機(jī)關(guān)2026年招聘警務(wù)輔助人員13人備考題庫(kù)及一套答案詳解
- (2026.01.01施行)《生態(tài)環(huán)境監(jiān)測(cè)條例》解讀與實(shí)施指南課件
- 2025年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)廢舊輪胎循環(huán)利用市場(chǎng)深度分析及投資戰(zhàn)略咨詢(xún)報(bào)告
- 《科研倫理與學(xué)術(shù)規(guī)范》期末考試試題及答案2025
- 2025天津大學(xué)管理崗位集中招聘15人考試筆試備考題庫(kù)及答案解析
- Unit 7 When Tomorrow Comes Section A (1a-1d) 課件 2025-2026學(xué)年人教版八年級(jí)英語(yǔ)上冊(cè)
- 2025年影像成像原理考試題庫(kù)
- 2025年智能制造工廠改造項(xiàng)目可行性研究報(bào)告及總結(jié)分析
- 國(guó)電投面試技巧與實(shí)戰(zhàn)經(jīng)驗(yàn)交流
- 律師事務(wù)所訴訟案件辦案進(jìn)度及當(dāng)事人滿(mǎn)意度績(jī)效評(píng)定表
- 2025年公務(wù)員多省聯(lián)考《申論》題(陜西A卷)及參考答案
- 務(wù)工人員管理規(guī)范與制度范本
評(píng)論
0/150
提交評(píng)論