欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
什么是REST?以及RESTful的實(shí)現 - 51CTO.COM
    本文介紹了什么是REST,以及RESTful的實(shí)現。簡(jiǎn)單的說(shuō),REST 指的是一組架構約束條件和原則。滿(mǎn)足這些約束條件和原則的應用程序或設計就是 RESTful。

     

    什么是REST?

    REST (REpresentation State Transfer) 描述了一個(gè)架構樣式的網(wǎng)絡(luò )系統,比如 web 應用程序。它首次出現在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規范的主要編寫(xiě)者之一。REST 指的是一組架構約束條件和原則。滿(mǎn)足這些約束條件和原則的應用程序或設計就是 RESTful。

    Web 應用程序最重要的 REST 原則是,客戶(hù)端和服務(wù)器之間的交互在請求之間是無(wú)狀態(tài)的。從客戶(hù)端到服務(wù)器的每個(gè)請求都必須包含理解請求所必需的信息。如果服務(wù)器在請求之間的任何時(shí)間點(diǎn) 重啟,客戶(hù)端不會(huì )得到通知。此外,無(wú)狀態(tài)請求可以由任何可用服務(wù)器回答,這十分適合云計算之類(lèi)的環(huán)境??蛻?hù)端可以緩存數據以改進(jìn)性能。

    在服務(wù)器端,應用程序狀態(tài)和功能可以分為各種資源。資源是一個(gè)有趣的概念實(shí)體,它向客戶(hù)端公開(kāi)。資源的例子有:應用程序對象、數據庫記錄、算法等 等。每個(gè)資源都使用 URI (Universal Resource Identifier) 得到一個(gè)惟一的地址。所有資源都共享統一的界面,以便在客戶(hù)端和服務(wù)器之間傳輸狀態(tài)。使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是應用程序狀態(tài)的引擎,資源表示通過(guò)超鏈接互聯(lián)。

    另一個(gè)重要的 REST 原則是分層系統,這表示組件無(wú)法了解它與之交互的中間層以外的組件。通過(guò)將系統知識限制在單個(gè)層,可以限制整個(gè)系統的復雜性,促進(jìn)了底層的獨立性。

    當 REST 架構的約束條件作為一個(gè)整體應用時(shí),將生成一個(gè)可以擴展到大量客戶(hù)端的應用程序。它還降低了客戶(hù)端和服務(wù)器之間的交互延遲。統一界面簡(jiǎn)化了整個(gè)系統架構,改進(jìn)了子系統之間交互的可見(jiàn)性。REST 簡(jiǎn)化了客戶(hù)端和服務(wù)器的實(shí)現。

    RESTful的實(shí)現:RESTful Web 服務(wù)與 RPC 樣式的 Web 服務(wù)

    了解了什么是什么是REST,我們再看看RESTful的實(shí)現。最近,使用 RPC 樣式架構構建的基于 SOAP 的 Web 服務(wù)成為實(shí)現 SOA 最常用的方法。RPC 樣式的 Web 服務(wù)客戶(hù)端將一個(gè)裝滿(mǎn)數據的信封(包括方法和參數信息)通過(guò) HTTP 發(fā)送到服務(wù)器。服務(wù)器打開(kāi)信封并使用傳入參數執行指定的方法。方法的結果打包到一個(gè)信封并作為響應發(fā)回客戶(hù)端??蛻?hù)端收到響應并打開(kāi)信封。每個(gè)對象都有自 己獨特的方法以及僅公開(kāi)一個(gè) URI 的 RPC 樣式 Web 服務(wù),URI 表示單個(gè)端點(diǎn)。它忽略 HTTP 的大部分特性且僅支持 POST 方法。

    由于輕量級以及通過(guò) HTTP 直接傳輸數據的特性,Web 服務(wù)的 RESTful 方法已經(jīng)成為最常見(jiàn)的替代方法??梢允褂酶鞣N語(yǔ)言(比如 Java 程序、Perl、Ruby、Python、PHP 和 Javascript[包括 Ajax])實(shí)現客戶(hù)端。RESTful Web 服務(wù)通??梢酝ㄟ^(guò)自動(dòng)客戶(hù)端或代表用戶(hù)的應用程序訪(fǎng)問(wèn)。但是,這種服務(wù)的簡(jiǎn)便性讓用戶(hù)能夠與之直接交互,使用它們的 Web 瀏覽器構建一個(gè) GET URL 并讀取返回的內容。

    在 REST 樣式的 Web 服務(wù)中,每個(gè)資源都有一個(gè)地址。資源本身都是方法調用的目標,方法列表對所有資源都是一樣的。這些方法都是標準方法,包括 HTTP GET、POST、PUT、DELETE,還可能包括 HEADER 和 OPTIONS。

    在 RPC 樣式的架構中,關(guān)注點(diǎn)在于方法,而在 REST 樣式的架構中,關(guān)注點(diǎn)在于資源 —— 將使用標準方法檢索并操作信息片段(使用表示的形式)。資源表示形式在表示形式中使用超鏈接互聯(lián)。

    Leonard Richardson 和 Sam Ruby 在他們的著(zhù)作 RESTful Web Services 中引入了術(shù)語(yǔ) REST-RPC 混合架構。REST-RPC 混合 Web 服務(wù)不使用信封包裝方法、參數和數據,而是直接通過(guò) HTTP 傳輸數據,這與 REST 樣式的 Web 服務(wù)是類(lèi)似的。但是它不使用標準的 HTTP 方法操作資源。它在 HTTP 請求的 URI 部分存儲方法信息。好幾個(gè)知名的 Web 服務(wù),比如 Yahoo 的 Flickr API 和 del.icio.us API 都使用這種混合架構。

    RESTful的實(shí)現:RESTful Web 服務(wù)的 Java 框架

    有兩個(gè) Java 框架可以幫助構建 RESTful Web 服務(wù)。erome Louvel 和 Dave Pawson 開(kāi)發(fā)的 Restlet(見(jiàn) 參考資料)是輕量級的。它實(shí)現針對各種 RESTful 系統的資源、表示、連接器和媒體類(lèi)型之類(lèi)的概念,包括 Web 服務(wù)。在 Restlet 框架中,客戶(hù)端和服務(wù)器都是組件。組件通過(guò)連接器互相通信。該框架最重要的類(lèi)是抽象類(lèi) Uniform 及其具體的子類(lèi) Restlet,該類(lèi)的子類(lèi)是專(zhuān)用類(lèi),比如 Application、Filter、Finder、Router 和 Route。這些子類(lèi)能夠一起處理驗證、過(guò)濾、安全、數據轉換以及將傳入請求路由到相應資源等操作。Resource 類(lèi)生成客戶(hù)端的表示形式。

    JSR-311是 Sun Microsystems 的規范,可以為開(kāi)發(fā) RESTful Web 服務(wù)定義一組 Java API。Jersey是對 JSR-311 的參考實(shí)現。

    JSR-311 提供一組注釋?zhuān)嚓P(guān)類(lèi)和接口都可以用來(lái)將 Java 對象作為 Web 資源展示。該規范假定 HTTP 是底層網(wǎng)絡(luò )協(xié)議。它使用注釋提供 URI 和相應資源類(lèi)之間的清晰映射,以及 HTTP 方法與 Java 對象方法之間的映射。API 支持廣泛的 HTTP 實(shí)體內容類(lèi)型,包括 HTML、XML、JSON、GIF、JPG 等。它還將提供所需的插件功能,以允許使用標準方法通過(guò)應用程序添加其他類(lèi)型。

    RESTful的實(shí)現:構建 RESTful Web 服務(wù)的多層架構

    RESTful Web 服務(wù)和動(dòng)態(tài) Web 應用程序在許多方面都是類(lèi)似的。有時(shí)它們提供相同或非常類(lèi)似的數據和函數,盡管客戶(hù)端的種類(lèi)不同。例如,在線(xiàn)電子商務(wù)分類(lèi)網(wǎng)站為用戶(hù)提供一個(gè)瀏覽器界面, 用于搜索、查看和訂購產(chǎn)品。如果還提供 Web 服務(wù)供公司、零售商甚至個(gè)人能夠自動(dòng)訂購產(chǎn)品,它將非常有用。與大部分動(dòng)態(tài) Web 應用程序一樣,Web 服務(wù)可以從多層架構的關(guān)注點(diǎn)分離中受益。業(yè)務(wù)邏輯和數據可以由自動(dòng)客戶(hù)端和 GUI 客戶(hù)端共享。惟一的不同點(diǎn)在于客戶(hù)端的本質(zhì)和中間層的表示層。此外,從數據訪(fǎng)問(wèn)中分離業(yè)務(wù)邏輯可實(shí)現數據庫獨立性,并為各種類(lèi)型的數據存儲提供插件能力。

    圖 1 展示了自動(dòng)化客戶(hù)端,包括 Java 和各種語(yǔ)言編寫(xiě)的腳本,這些語(yǔ)言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。在瀏覽器中運行且作為 RESTful Web 服務(wù)消費者運行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都屬于此列,因為它們都代表用戶(hù)以自動(dòng)化樣式運行。自動(dòng)化 Web 服務(wù)客戶(hù)端在 Web 層向 Resource Request Handler 發(fā)送 HTTP 響應??蛻?hù)端的無(wú)狀態(tài)請求在頭部包含方法信息,即 POST、GET、PUT 和 DELETE,這又將映射到 Resource Request Handler 中資源的相應操作。每個(gè)請求都包含所有必需的信息,包括 Resource Request Handler 用來(lái)處理請求的憑據。

    從 Web 服務(wù)客戶(hù)端收到請求之后,Resource Request Handler 從業(yè)務(wù)邏輯層請求服務(wù)。Resource Request Handler 確定所有概念性的實(shí)體,系統將這些實(shí)體作為資源公開(kāi),并為每個(gè)資源分配一個(gè)惟一的 URI。但是,概念性的實(shí)體在該層是不存在的。它們存在于業(yè)務(wù)邏輯層??梢允褂?Jersey 或其他框架(比如 Restlet)實(shí)現 Resource Request Handler,它應該是輕量級的,將大量職責工作委托給業(yè)務(wù)層。

    Ajax 和 RESTful Web 服務(wù)本質(zhì)上是互為補充的。它們都可以利用大量 Web 技術(shù)和標準,比如 HTML、JavaScript、瀏覽器對象、XML/JSON 和 HTTP。當然也不需要購買(mǎi)、安裝或配置任何主要組件來(lái)支持 Ajax 前端和 RESTful Web 服務(wù)之間的交互。RESTful Web 服務(wù)為 Ajax 提供了非常簡(jiǎn)單的 API 來(lái)處理服務(wù)器上資源之間的交互。

    圖 1 中的 Web 瀏覽器客戶(hù)端作為 GUI 的前端,使用表示層中的 Browser Request Handler 生成的 HTML 提供顯示功能。Browser Requester Handler 可以使用 MVC 模型(JSF、Struts 或 Spring 都是 Java 的例子)。它從瀏覽器接受請求,從業(yè)務(wù)邏輯層請求服務(wù),生成表示并對瀏覽器做出響應。表示供用戶(hù)在瀏覽器中顯示使用。表示不僅包含內容,還包含顯示的屬 性,比如 HTML 和 CSS。

     

    業(yè)務(wù)規則可以集中到業(yè)務(wù)邏輯層,該層充當表示層和數據訪(fǎng)問(wèn)層之間的數據交換的中間層。數據以域對象或值對象的形式提供給表示層。從業(yè)務(wù)邏輯層中解耦 Browser Request Handler 和 Resource Request Handler 有助于促進(jìn)代碼重用,并能實(shí)現靈活和可擴展的架構。此外,由于將來(lái)可以使用新的 REST 和 MVC 框架,實(shí)現它們變得更加容易,無(wú)需重寫(xiě)業(yè)務(wù)邏輯層。

    數據訪(fǎng)問(wèn)層提供與數據存儲層的交互,可以使用 DAO 設計模式或者對象-關(guān)系映射解決方案(如 Hibernate、OJB 或 iBATIS)實(shí)現。作為替代方案,業(yè)務(wù)層和數據訪(fǎng)問(wèn)層中的組件可以實(shí)現為 EJB 組件,并取得 EJB 容器的支持,該容器可以為組件生命周期提供便利,管理持久性、事務(wù)和資源配置。但是,這需要一個(gè)遵從 Java EE 的應用服務(wù)器(比如 JBoss),并且可能無(wú)法處理 Tomcat。該層的作用在于針對不同的數據存儲技術(shù),從業(yè)務(wù)邏輯中分離數據訪(fǎng)問(wèn)代碼。數據訪(fǎng)問(wèn)層還可以作為連接其他系統的集成點(diǎn),可以成為其他 Web 服務(wù)的客戶(hù)端。

    數據存儲層包括數據庫系統、LDAP 服務(wù)器、文件系統和企業(yè)信息系統(包括遺留系統、事務(wù)處理系統和企業(yè)資源規劃系統)。使用該架構,您可以開(kāi)始看到 RESTful Web 服務(wù)的力量,它可以靈活地成為任何企業(yè)數據存儲的統一 API,從而向以用戶(hù)為中心的 Web 應用程序公開(kāi)垂直數據,并自動(dòng)化批量報告腳本。

    什么是REST:結束語(yǔ)

    REST 描述了一個(gè)架構樣式的互聯(lián)系統(如 Web 應用程序)。REST 約束條件作為一個(gè)整體應用時(shí),將生成一個(gè)簡(jiǎn)單、可擴展、有效、安全、可靠的架構。由于它簡(jiǎn)便、輕量級以及通過(guò) HTTP 直接傳輸數據的特性,RESTful Web 服務(wù)成為基于 SOAP 服務(wù)的一個(gè)最有前途的替代方案。用于 web 服務(wù)和動(dòng)態(tài) Web 應用程序的多層架構可以實(shí)現可重用性、簡(jiǎn)單性、可擴展性和組件可響應性的清晰分離。Ajax 和 RESTful Web 服務(wù)本質(zhì)上是互為補充的。開(kāi)發(fā)人員可以輕松使用 Ajax 和 RESTful Web 服務(wù)一起創(chuàng )建豐富的界面。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
OpenAPI和REST
restful與rpc
REST Service 的最佳實(shí)踐,第 1 部分: 重新解析 REST Service
什么是Web Service
理解本真的REST架構風(fēng)格
微服務(wù)架構(Microservice Architecture)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久