版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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通?;谑褂肏TTP,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)求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求15什么是RESTRepresentationalStateTransfer(表述性狀態(tài)轉(zhuǎn)移),簡(jiǎn)稱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)方式即可稱為RESTful17資源、資源、資源處處皆資源(Resource):2010公司的銷售數(shù)據(jù)小明09年一月份看過(guò)的書(shū)正在上映的電影公司銷售的產(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確定,而客戶端的應(yīng)用通過(guò)URI來(lái)獲取資源的表征。獲得這些表征致使這些應(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è)計(jì)的。其他分布式引用架構(gòu)風(fēng)格1:分布式對(duì)象(RMI/EJB/HSF)2:遠(yuǎn)程過(guò)程調(diào)用(SOAP/XML-RPC/JSON-RPC/HESSION)20RESTfulHTTP方案中的所有資源都繼承自類似于這樣的一個(gè)類:classResource{
Resource(URIu);Responseget();Responsepost(Requestr);Responseput(Requestr);Responsedelete();}21指導(dǎo)思想:REST的架構(gòu)約束客戶端-服務(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)性使得客戶端和服務(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è)客戶端構(gòu)造了操作壁壘,讓google,facebook無(wú)法追趕;API讓web,手機(jī)客戶端,桌面多種操作成為可能,程序員分工更加明確,切降低了開(kāi)發(fā)成本;軟件開(kāi)發(fā)依賴解耦讓編程語(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)媒體類型,比如: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)注將資源類@Path,標(biāo)注資源類或方法的相對(duì)路徑@GET,@PUT,@POST,@DELETE,標(biāo)注方法是用的HTTP請(qǐng)求的類型@Produces,標(biāo)注返回的MIME媒體類型@Consumes,標(biāo)注可接受請(qǐng)求的MIME媒體類型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分別標(biāo)注方法的參數(shù)來(lái)自于HTTP請(qǐng)求的不同位置,例如@PathParam來(lái)自于URL的路徑,@QueryParam來(lái)自于URL的查詢參數(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訪問(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)題外話:Spring3.0直接支持restful風(fēng)格的編碼了。39目前的restful框架目前宣稱支持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)我們用瀏覽器訪問(wèn)一個(gè)網(wǎng)址時(shí),瀏覽器會(huì)構(gòu)造一個(gè)HTTP請(qǐng)求。這個(gè)請(qǐng)求有一個(gè)頭信息,其中包括了本次請(qǐng)求接受何種類型的數(shù)據(jù)。46將用戶界面和數(shù)據(jù)存儲(chǔ)分離,提高用戶界面跨多個(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(客戶端調(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 26846-2024電動(dòng)自行車用電動(dòng)機(jī)和控制器的引出線及接插件
- GB/T 21099.4-2024企業(yè)系統(tǒng)中的設(shè)備和集成過(guò)程控制用功能塊(FB)和電子設(shè)備描述語(yǔ)言(EDDL)第4部分:EDD互操作
- 臍帶脫垂的健康宣教
- 【大學(xué)課件】計(jì)算機(jī)網(wǎng)絡(luò)的安全
- 【培訓(xùn)課件】貨物貿(mào)易收支管理
- 兒童地包天的健康宣教
- 色素性蕁麻疹的臨床護(hù)理
- 非免疫性胎兒水腫的健康宣教
- 泌尿系腫瘤的臨床護(hù)理
- 皮膚纖維瘤的臨床護(hù)理
- 崗位競(jìng)聘課件(完美版)
- 應(yīng)急管理部宣傳教育中心次招聘筆試真題2023
- (2024年)高一家長(zhǎng)會(huì)課件
- 初中語(yǔ)文名著閱讀項(xiàng)目化學(xué)習(xí)教學(xué)設(shè)計(jì)
- 視網(wǎng)膜病變護(hù)理
- 變壓器維護(hù)培訓(xùn)課件
- 腸梗阻保守治療
- 2023-2024學(xué)年人教部編版七年級(jí)語(yǔ)文上冊(cè)·01 字音字形
- 三年職業(yè)計(jì)劃書(shū)
- 撤訴和解協(xié)議書(shū)
- 無(wú)人書(shū)吧計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論