SĂPUN vs RESTUL (diferențe)

Am citit articolele despre diferențele dintre SOAP și REST ca un serviciu web protocol de comunicare, dar cred că cele mai mari avantaje pentru RESTUL de SĂPUN sunt:

  1. RESTUL este mult mai dinamic, nu este nevoie pentru a crea și actualiza UDDI(Universal Description, Discovery, și de Integrare).

  2. RESTUL nu este limitată numai format XML. Servicii web odihnitor pot trimite text simplu/JSON/XML.

Dar SĂPUNUL este mai standardizate (de ex.: de securitate).

Deci, am dreptate în aceste puncte?

Comentarii la întrebare (7)
Soluția

Din păcate, există o mulțime de dezinformare și concepții greșite în jurul valorii de RESTUL. Nu numai problema ta si răspunde de @cmd reflectă pe cele, dar cele mai multe dintre întrebări și răspunsuri legate de subiectul pe Stack Overflow. SĂPUN și RESTUL poate't fi comparate direct, deoarece primul este un protocol (sau cel puțin încearcă să fie) și cel de-al doilea este un stil arhitectural. Aceasta este, probabil, una dintre sursele de confuzie în jurul valorii de ea, din moment ce oamenii au tendința de a apela RESTUL orice HTTP API care este't de SĂPUN. Împingând lucrurile un pic și încearcă să stabilească o comparație, principala diferență între SOAP și REST este gradul de cuplare între client și server implementări. Un SĂPUN client funcționează ca un desktop personalizat aplicație, strâns legate de server. Nu's un contract rigid între client și server, și totul este de așteptat să rupă dacă fiecare parte va schimba ceva. Ai nevoie de actualizări constante următoarele orice schimbare, dar's ușor pentru a verifica în cazul în care contractul este în curs de urmat. Un REST client este mai mult ca un browser-ul. L's un generic client care știe cum să folosească un protocol și metode standardizate, și o cerere pentru a se potrivi în interiorul. Nu't încalcă protocolul standarde prin crearea suplimentar metode, pârghii pe metode standard și de a crea acțiuni cu ei pe tip mass-media. Dacă dreptul de făcut, nu's mai puțin de cuplare, iar modificările pot fi tratate cu mai grațios. Un client ar trebui să introduceți un serviciu REST cu zero cunoștințe de API, cu excepția de la punctul de intrare și cel de tip mass-media. În SĂPUN, clientul are nevoie de cunoștințe anterioare pe tot ce se va utiliza, sau nu o't începe chiar de interacțiune. În plus, un client ODIHNA poate fi extins prin cod-la cerere, furnizate de către server în sine, exemplul clasic fiind codul JavaScript folosit pentru a conduce interacțiunea cu un alt serviciu pe partea de client. Cred că acestea sunt puncte cruciale pentru a înțelege ce RESTUL este de aproximativ, și modul în care aceasta diferă de SĂPUN:

  • RESTUL este independentă protocol. L'nu e cuplat la HTTP. Destul de mult ca tine poate urma un ftp link-ul de pe un site, RESTUL o aplicație poate folosi orice protocol pentru care există o standardizate schemă URI.
  • RESTUL nu este o mapare de CRUD să-metode HTTP. Citi acest răspunsul pentru o explicație detaliată despre asta.
  • RESTUL este la fel de standardizate ca piesele pe care le're folosind. De securitate și de autentificare în HTTP sunt standardizate, astfel încât's ceea ce folosești atunci când faci RESTUL de peste HTTP.
  • RESTUL nu este ODIHNĂ, fără hypermedia și HATEOAS. Acest lucru înseamnă că un client știe doar punctul de intrare URI și resurse ar trebui să se întoarcă link-uri client ar trebui să urmeze. Cei fantezie documentația generatoare de care dau URI modele pentru tot ce se poate face într-un REST API dor de punct complet. Ele nu sunt doar documentarea ceva care's ar trebui să fie următorul standard, dar când faci asta, te're de cuplare clientului la un anumit moment în evoluția API, precum și orice modificări pe API trebuie să fie documentate și aplicate, sau se va rupe.
  • RESTUL este stilul arhitectural al web-ul în sine. Atunci când introduceți Stack Overflow, știi ce un Utilizator, o Întrebare și un Răspuns, știi de tipuri de mass-media, și pe site-ul vă oferă link-uri pentru a le. Un REST API trebuie să facă același lucru. Dacă am proiectat web modul în care oamenii cred că RESTUL ar trebui să fie făcut, în loc de a avea o pagina cu link-uri la Întrebări și Răspunsuri, am'd au un statice documentația explicând că, în scopul de a vizualiza o întrebare, trebuie să luați URI stackoverflow.com/questions/<id>, înlocuiți id-ul cu Întrebarea.id-ul și lipiți în browser-ul dumneavoastră. Ca's prostii, dar asta's ceea ce mulți oameni cred că RESTUL este. Acest ultim punct poate't fi destul de accentuat. Dacă clienții tăi sunt construirea Uri de template-uri în documentație și nu primesc link-uri în reprezentări de resurse, care's nu RESTUL. Roy Fielding, autoarea de ODIHNĂ, a făcut-o clar pe acest blog post: RESTUL APIs trebuie să fie hypertext-driven. Cu cele de mai sus în minte,'ll seama că, în timp ce RESTUL ar putea să nu fie limitate la XML, pentru a face corect cu orice alt format'll trebuie să proiecteze și să standardizeze un format pentru link-uri. Link-uri sunt standard în format XML, dar nu în JSON. Există proiecte de standarde pentru JSON, ca HAL. În cele din urmă, RESTUL e't pentru toată lumea, și o dovadă că este cât de mulți oameni rezolva problemele lor foarte bine cu HTTP Api-uri, în mod greșit numit ODIHNEASCĂ și să nu se aventureze dincolo de asta. RESTUL este greu de a face, uneori, mai ales la început, dar se plătește de-a lungul timpului cu mai ușor evoluția pe partea de server și client's rezistenței la schimbări. Dacă ai nevoie de ceva rapid și ușor, don't deranjat despre obtinerea RESTUL corect. L's, probabil, nu ceea ce ai're în căutarea pentru. Dacă ai nevoie de ceva care va trebui să rămână on-line pentru ani sau chiar zeci de ani, atunci RESTUL este pentru tine.
Comentarii (19)

RESTUL vs SĂPUN e nu dreptul de întrebare.

"REPAUS", spre deosebire de SĂPUN e nu - un protocol.

"RESTUL" este o stil arhitectural și o proiectare pentru rețele bazate pe arhitecturi software.

"REPAUS" concepte sunt denumite resurse. O reprezentare a unei resurse trebuie să fie apatrid. Acesta este reprezentat printr-un tip de suport. Câteva exemple de tipuri de mass-media includ XML, JSON, și RDF. Resursele sunt manipulate de componente. Componente cerere și manipula resurse prin intermediul unui standard uniform de interfață. În caz de HTTP, această interfață este format din standard HTTP operațiuni de exemplu, "a LUA", "PUNE", "POST", "ȘTERGE".

@Abdulaziz's cauză nu se aprinde faptul că "REPAUS" și "HTTP" sunt adesea folosite în tandem. Acest lucru se datorează în primul rând simplitatea HTTP și foarte natural cartografiere a Odihnitor principii.

Fundamentale RESTUL Principii

Comunicare Client-Server

Client-server arhitecturi foarte distincte de separare de preocupări. Toate aplicațiile construite în Odihnitor stilul trebuie să fie, de asemenea, client-server, în principiu.

Apatrid

Fiecare cerere a clientului la server presupune ca starea sa fie complet reprezentată. Serverul trebuie să fie în măsură să înțeleagă în totalitate cererea clientului, fără a utiliza orice server context sau server de stat sesiune. Rezultă că toate statele trebuie să fie păstrate pe client.

Cacheable

Cache constrângeri pot fi utilizate, permițând astfel datele de răspuns să fie marcate ca cacheable sau nu-cacheable. Orice date marcate ca cacheable pot fi reutilizate ca răspuns la aceeași cerere ulterioară.

Interfață Uniformă

Toate componentele trebuie să interacționeze printr-o singură interfață uniformă. Pentru că toate componentă de interacțiune are loc prin intermediul acestei interfețe, interacțiunea cu diferite servicii este foarte simplu. Interfața este la fel! Acest lucru înseamnă, de asemenea, că punerea în aplicare modificări pot fi făcute în mod izolat. Astfel de modificări, nu va afecta componentă fundamentală de interacțiune pentru uniforma de interfață este mereu neschimbat. Un dezavantaj este faptul că v-ați blocat cu interfața. Dacă o optimizare ar putea fi oferite pentru un anumit serviciu prin schimbarea interfeței, ai noroc ca RESTUL interzice acest lucru. Pe partea luminoasă, cu toate acestea, RESTUL este optimizat pentru web, prin urmare, popularitatea incredibilă de ODIHNĂ peste HTTP!

Conceptele de mai sus reprezintă caracteristicile definitorii ale ODIHNEASCĂ și să se diferențieze de RESTUL arhitecturii din alte arhitecturi de servicii web. Este util să rețineți că un serviciu REST este un serviciu web, dar un serviciu web nu este neapărat un serviciu REST.

Vezi acest blog post pe RESTUL Principii de Proiectare pentru mai multe detalii pe ODIHNA și mai sus menționat gloanțe.

EDIT: actualizare conținut bazat pe comentarii

Comentarii (3)

SĂPUN (Simple Object Access Protocol) și RESTUL (Reprezentarea Statului de Transfer) ambele sunt frumoase în felul lor. Deci, eu nu le compar. În schimb, am încercat să descriu imaginea, când am preferat să folosesc RESTUL și când SĂPUN.

Ce este utilă?

atunci Când datele sunt trimise pe Internet, fiecare unitate transmise include atât informații de antet și date reale de a fi trimis. Antet identifică sursa și destinația pachetului, în timp real de date este denumită sarcină utilă. În general, sarcina utilă este de datele care se efectuează în numele de o aplicație și datele primite de destinația sistemului.

Acum, de exemplu, trebuie să trimiteți un Telegramă și știm cu toții că costul de telegrama va depinde de unele cuvinte.

Spune-mi printre menționate mai jos aceste două mesaje, care este mai ieftin pentru a trimite?

Arin

sau

"name": "Arin"

Știu că răspunsul tău va fi cel de-al doilea, deși ambele reprezintă același mesaj de-al doilea este mai ieftin ceea ce privește costul.

Așa că am încercat să spun că, trimiterea de date prin rețea în format JSON este mai ieftin decât trimiterea în format XML cu privire la sarcină utilă.

Aici este primul beneficii sau avantaje de RESTUL SĂPUN. SĂPUN numai suport XML, dar RESTUL suporta format diferit, cum ar fi text, JSON, XML, etc. Și știm deja că, dacă vom folosi Json, atunci cu siguranta ne va fi mai bine în ceea ce privește sarcina utilă.

Acum, SĂPUN sprijină numai XML, dar, de asemenea, are avantajele sale.

Într-adevăr! Cum?

SĂPUN se bazează pe XML în trei moduri Plic – care definește ceea ce este în mesaj și cum să-l proceseze.

Un set de reguli de codare pentru tipuri de date, și în cele din urmă aspectul procedurii de apeluri și răspunsuri s-au adunat.

Acest plic este trimis printr-un mijloc de transport (HTTP/HTTPS), și un RPC (Remote Procedure Call) este executat, iar plicul este întors cu informații într-un format XML document.

Punctul important este faptul că unul dintre avantajele de SĂPUN de "generic" de transport dar RESTUL utilizează HTTP/HTTPS. SĂPUN poate folosi aproape orice transport pentru a trimite cererea, dar RESTUL nu. Deci, aici avem un avantaj al folosind SĂPUN.

După cum am menționat deja în paragraful de mai sus "RESTUL utilizează HTTP/HTTPS", deci merge un pic mai adânc asupra acestor cuvinte.

Atunci când vorbim despre RESTUL de peste HTTP, toate măsurile de securitate aplicate HTTP sunt moștenite, iar acest lucru este cunoscut sub numele de transport nivelul de securitate și se fixează numai mesaje în timp ce este în interiorul firului dar, odată ce i-ai livrat pe de altă parte nu știu câte etape va trebui să treacă prin înainte de a ajunge la real punct în cazul în care datele vor fi prelucrate. Și, desigur, toate aceste etape ar putea folosi ceva diferit decât HTTP.Deci Restul nu este complet sigur, nu?

Dar de SĂPUN suportă SSL la fel ca RESTUL suplimentar sprijină, de asemenea de Securitate-WS care se adaugă unele intreprinderi caracteristici de securitate. WS-Security oferă protecție de la crearea unui mesaj e consum. Deci, pentru transportul de securitate la nivel de orice portiță de scăpare, am constatat că pot fi prevenite folosind WS-Security.

În afară de asta, ca RESTUL este limitată de l's protocolul HTTP deci e suport de tranzacție este nici ACID, conforme și nici nu poate oferi comitere în două faze peste distribuite transnaționale resurse.

Dar de SĂPUN are suport complet pentru ambele pe baza de ACID de management de tranzacții de scurtă durată tranzacții și de compensare pe bază de management de tranzacții de lungă durată tranzacții. Acesta susține, de asemenea, comitere în două faze peste distribuite resurse.

Eu nu sunt de a trage orice concluzie, dar voi prefera SAPUN pe baza de servicii web în timp ce de securitate, tranzacții, etc. sunt principalele preocupări.

Aici este "Java EE 6 Tutorial" în cazul în care le-au spus A Odihnitor design poate fi adecvată atunci când sunt îndeplinite următoarele condiții. Avea o privire.

Sper că va plăcut citit răspunsul meu.

Comentarii (5)

ODIHNA(de REprezentare State Transfer) De REprezentare State a unui Obiect este Transferred este RESTUL, adică nu ne't trimite Obiect, vom trimite starea de Obiect. RESTUL este un stil arhitectural. Nu se definește atât de multe standarde, cum ar fi SĂPUN. RESTUL este pentru a expune Api-uri Publice(de exemplu, Facebook API, Google Maps API) pe internet să se ocupe de operațiunile CRUD pe date. RESTUL este axat pe accesarea nume de resurse, printr-o singură interfață consistentă.

*SĂPUN *(Simple Oeema Occesul Protocol) SĂPUN aduce propriul protocol și se concentrează pe expunerea piese de logica aplicatiei (nu o data) ca servicii. SĂPUN expune operațiuni. SĂPUN este axat pe accesarea numit operațiuni, fiecare operațiune pună în aplicare unele logica de afaceri. Deși SĂPUN este frecvent menționată ca servicii web aceasta este impropriu. SĂPUN are o foarte puțin, dacă nimic de-a face cu Web-ul. RESTUL oferă adevărat servicii Web** bazat pe uri-Uri și HTTP.

De ce RESTUL?

  • De când RESTUL utilizează HTTP standard este mult mai simplu în doar despre vreodata drum.
  • RESTUL este mai ușor să pună în aplicare, necesită mai puțin de lățime de bandă și de resurse.
  • RESTUL permisele de multe diferite formate de date în cazul în care ca SĂPUN permite numai XML.
  • RESTUL permite o mai bună suport pentru browser-ul clienților, datorită sprijinului său pentru JSON.
  • RESTUL are o performanță mai bună și scalabilitate. Citește RESTUL pot fi memorate în cache pe bază de SĂPUN citește nu poate fi memorat în cache.
  • În cazul în care securitatea nu este o preocupare majoră și avem resurse limitate. Sau vrem să creăm un API care vor fi folosite cu ușurință de către alți dezvoltatori public, atunci ar trebui să mergem cu RESTUL.
  • Dacă avem nevoie de Apatrid CRUD de operațiunile du-te apoi cu RESTUL.
  • RESTUL este frecvent utilizat în mass-media sociale, chat web, servicii de telefonie mobilă și Api-uri Publice cum ar fi Google Maps.
  • Odihnitor serviciu de returnare diverse MediaTypes pentru aceeași resursă, în funcție de cerere antet parametru "Accept" ca application/xml " sau " application/json pentru POST și/utilizator/1234.jsonsau de a LUA/user/1234.xml pentru a OBȚINE.
  • RESTUL serviciilor sunt menite să fie numit de către aplicație client-side și nu utilizatorul final direct.
  • ST în RESTUL vine de la State Transfer. Transferul de la stat, în loc de a avea serverul magazin, acest lucru face RESTUL de servicii scalabile.

De ce SĂPUN?

  • SĂPUN nu este foarte ușor să pună în aplicare și necesită mai multă lățime de bandă și de resurse.
  • SĂPUN mesaj de cerere este procesată mai lent comparativ cu RESTUL si nu folosesc web mecanism de caching.
  • Numai pentru WS-Security: în Timp ce SĂPUN suportă SSL (la fel ca RESTUL) se suportă, de asemenea, WS-Security, care adaugă unele întreprinderi caracteristici de securitate.
  • Numai pentru WS-AtomicTransaction: Necesitatea de ACID Tranzacții de peste un serviciu, ai de gând să nevoie de SĂPUN.
  • Numai pentru WS-ReliableMessaging: Dacă cererea dumneavoastră are nevoie de procesare Asincronă și un nivel garantat de fiabilitate și securitate. Restul nu au un standard de sistem de mesagerie și așteaptă clienții de-a face cu eșecuri de comunicare de a încerca din nou.
  • În cazul în care securitatea este o preocupare majoră și resursele nu sunt limitate atunci ar trebui să utilizați SĂPUN servicii web. Dacă vom crea un serviciu web pentru gateway-uri de plată, financiare și de telecomunicații legate de locul de muncă, atunci ar trebui să mergem cu SĂPUN, ca aici de înaltă securitate este necesară.

source1 sursa2

Comentarii (2)

Diferența între Odihnă și Săpun

*SĂPUN ***

  1. SOAP este un protocol.
  2. SĂPUN standuri pentru Simple Object Access Protocol.
  3. SĂPUN poate't folosi RESTUL pentru că este un protocol.
  4. SĂPUN utilizează servicii de interfețe pentru a expune logica de afaceri.
  5. SĂPUN definește standarde să fie respectate cu strictețe.
  6. SĂPUN necesită lățime de bandă mai mare și resurse decât RESTUL.
  7. SĂPUN definește propria securitate.
  8. SĂPUN permiselor de date XML format numai.
  9. SĂPUN este mai puțin preferat decât RESTUL.

ODIHNA

  1. RESTUL este un stil arhitectural.
  2. RESTUL vine de Representational state Transfer.
  3. RESTUL poate folosi SAPUN servicii web, deoarece acesta este un concept și poate folosi orice protocol cum ar fi HTTP, SOAP.
  4. RESTUL utilizează URI pentru a expune logica de afaceri.
  5. RESTUL nu definește prea multe standarde, cum ar fi SĂPUN.
  6. RESTUL necesită mai puțin de lățime de bandă și de resurse decât SĂPUN.
  7. Servicii web odihnitor moștenește măsurile de securitate de fond al sistemului de transport.
  8. RESTUL permise diferite format de date, cum ar fi text Simplu, HTML, XML, JSON, etc.
  9. RESTUL mai de preferat decât SĂPUN.

Pentru mai multe Detalii vă rugăm să consultați aici

Comentarii (2)

IMHO puteți't compara SĂPUN și ODIHNĂ în cazul în care acestea sunt două lucruri diferite.

*SĂPUN * este un protocol și ODIHNA este un software de model arhitectural. Există o mulțime de neînțelegere în internet pentru SĂPUN vs RESTUL**.

*SĂPUN *** definește bazat pe XML format de mesaj care serviciul web-enabled aplicații folosesc pentru a comunica cu fiecare alte pe internet. În scopul de a face ca aplicatiile au nevoie de cunoștințe anterioare de mesajul contract, tipuri de date, etc..

ODIHNA reprezintă statul(ca resurse) de un server de la un URL.Este apatrid și clienții nu ar trebui să aibă o cunoaștere prealabilă a interacționa cu serverul dincolo de înțelegerea de hypermedia.

Comentarii (0)

mai Întâi de toate: oficial, întrebarea corectă ar fi servicii web + WSDL + SĂPUN` vs "RESTUL".

Pentru că, deși servicii web, este folosit în sens pierde, atunci când se utilizează protocolul HTTP pentru transferul de date ** în loc de pagini web, oficial este o formă specifică de ideea asta. Conform definiției, RESTUL nu este "web service".

În practică, cu toate acestea, toată lumea ignoră că, deci, să's ignora-l prea

Există deja răspunsuri tehnice, așa că am'll încerca să ofere o intuiție.

Las's spun doriți pentru a apela o funcție într-un computer la distanță, puse în aplicare într-un alt limbaj de programare (acest lucru este adesea numit remote procedure call/RPC). Presupunem că funcția poate fi găsit la un anumit URL, furnizate de către persoana care a scris-o. Trebuie să (cumva) trimite un mesaj, și a obține un răspuns. Deci, există două întrebări principale de luat în considerare.

  • ce este formatul de mesaj ar trebui să trimită
  • cum ar trebui mesajul să fie efectuate înainte și înapoi

Pentru prima întrebare, definiția oficială este WSDL. Acesta este un fișier XML care descrie, în detaliu și stricte format, care sunt parametrii, care sunt tipurile lor, nume, valori implicite, numele de funcție pentru a fi numit, etc. Un exemplu WSDL arată că fișierul este lizibil (dar nu ușor).

Pentru cea de-a doua întrebare, există diverse răspunsuri. Cu toate acestea, singurul folosit în practică este SĂPUNUL. Ideea sa principală este: folie anterior XML (mesajul propriu-zis) într-o altă XML (care conține codificarea informatii si alte chestii utile), și trimite-l peste HTTP. Metoda POST de HTTP este folosit pentru a trimite un mesaj, deoarece există întotdeauna un organism.

Ideea principală din toată această abordare este că harta o adresă URL pentru o funcție, care este, de a o acțiune. Deci, dacă aveți o listă de clienți, în unele server, și doriți să vizualizați/update/delete unul, trebuie să aveți 3 URL-uri:

  • `myapp/citit-client și în corpul mesajului, trece id-ul de client pentru a fi citit.
  • `myapp/actualizare- "client" și în organism, trece id-ul de client, precum și date noi
  • `myapp/șterge-client si id-ul din organism

RESTUL abordare vede lucrurile diferit. Un URL nu ar trebui să reprezinte o acțiune, dar nimic (numit resurse în RESTUL jargon). Deoarece protocolul HTTP (pe care le folosesc deja) sprijină verbe, utilizați aceste verbe să precizeze ce acțiuni pentru a efectua pe lucru.

Deci, cu RESTUL de abordare, clientul numărul 12 s-ar fi găsit pe URL myapp/clienti/12. Pentru a vizualiza datele clientului, te-a lovit URL-ul cu o cerere. Să-l ștergeți, la fel URL-ul, cu o ȘTERGE verb. Pentru actualizare, din nou, la fel URL-ul cu un POST de verb, și conținut nou în corpul cererii.

Pentru mai multe detalii despre cerințele pe care un serviciu trebuie să le îndeplinească pentru a fi considerat cu adevărat Odihnitor, a se vedea Richardson maturitate modelul. Articolul oferă exemple, și, mai important, explică de ce un (așa-numitele) SĂPUN de serviciu, este un nivel-0 RESTUL de servicii (deși, la nivel-0 înseamnă scăzut de conformitate cu acest model, l's nu ofensator, și este încă util în multe cazuri).

Comentarii (3)

Printre multe altele, deja acoperite în multe răspunsuri, aș dori să subliniez faptul că SOAP permite să definiți un contract, WSDL, care definesc operațiunile sprijinite, tipuri de complexe, etc. SĂPUN este orientată spre operațiuni, dar RESTUL sunt orientate spre resurse. Personal, aș selectați SĂPUN pentru interfețe complexe între internă aplicații de întreprindere, iar RESTUL pentru public, mai simplu, apatrid interfețe cu lumea exterioară.

Comentarii (0)

Plus pentru:

++ O greșeală, care este de multe ori făcut atunci când se apropie de ODIHNĂ este să se gândească la ea ca la "servicii web cu Url-uri"—pentru că de RESTUL ca un alt apel de procedură la distanță (RPC), mecanism, cum ar fi SĂPUN, dar a invocat prin HTTP simplu Url-uri și fără SĂPUN e voinic spații de nume XML.

++ Dimpotrivă, RESTUL are prea puțin de-a face cu RPC. Întrucât RPC este orientată spre servicii și s-a axat pe acțiuni și verbe, RESTUL resurselor orientate, subliniind lucrurile și substantive care cuprind o aplicație.

Comentarii (0)

O mulțime de aceste răspunsuri în întregime uitat sa mentionez hypermedia control (HATEOAS), care este complet fundamental la ODIHNĂ. Alte câteva atins pe el, dar nu't explica atât de bine.

Acest articol ar trebui să explice diferența între concepte, fără a intra în buruieni specifice SĂPUN caracteristici.

Comentarii (0)