Dovolim si okomentovat casti clanku, ktore nie su podla mna vhodne napisane a bolo by lepsie, keby sa v clanku nevyskytli aby sa dalej nesirili dezinformacie. Nepojdem do detailov, ktore som uz popisal v:
http://zdrojak.root.cz/clanky/java-na-webovem-serveru-piseme-rest-api/nazory/8426/
http://zdrojak.root.cz/clanky/java-na-webovem-serveru-piseme-rest-api/nazory/8425/
http://zdrojak.root.cz/clanky/java-na-webovem-serveru-piseme-rest-api/nazory/8430/
http://zdrojak.root.cz/clanky/java-na-webovem-serveru-piseme-rest-api/nazory/8437/
> V následujícím textu budu SOAP používat jako zkratku pro webové služby postavené nad tímto protokolem (ne jen pro protokol samotný) a podobně REST pro webové služby nad ním postavené.
Pouzivat jednu skratku SOAP pre 2 rozne veci v jednom cl, co zodpoveda specofikaciamanku je podla mna nevhodne.
Ak chceme hovorit o SOAP web sluzbach je lepsie pouzit napriklad „SOAP WS“, alebo WS-*. Obdobne pre REST a REST web sluzby.
Prave takymto obskurovanim pojmov totiz dochadza k najvacsim nedorozumeniam.
> Kdy zvolit REST a kdy SOAP. Existují dvě základní kritéria, podle kterých se můžeme rozhodovat: Logický pohled …, Pragmatičtější pohled …
Obe kriteria vyzeraju logicky, ale nevychadzaju z podstaty a rozdielov WS-* a RESTu (vid. http://www.practicingsafetechs.com/TechsV1/REST/, http://dmpc.dbp.fmph.uniba.sk/~rybar/it-software/docs/Integracia-SOA-REST.pdf)
- RESTovske WS volime vtedy ak sa jedna o Webovu aplikaciu a Webovu kommunikaciu.
- WS-* volime vtedy, ked nam ide o protokol agnostic interakciu medzi proprietarnymi alebo legacy systemami a zaroven si to zakaznik vyslovne zela (vendor lock :).
> Oproti tomu REST používá HTTP operace, které mají pevně definovaný význam (GET, PUT, POST, DELETE). Ovšem obsah sdělovaných zpráv (např. formát XML nebo JSON dat) často nebývá formálně (strojově čitelně – jako v případě WSDL) specifikován a je třeba použít dokumentaci nebo se jednoduše podívat na data, která služba vrací.
Ako suvisi strojova citatelnost reprezentacii v REST SW so strojovou citatelnostou WSDL?
Ak hovorime o SOAP v tomto kontexte, je potrebne povedat o ktorom s typov SOAP (RPC/literal, Document/literal, …) hovorime (http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/, http://www.eherenow.com/soapfight.htm). Je to totiz aj otazkou vykonu (http://www.ibm.com/developerworks/webservices/library/ws-soapenc/), co je dovodom, preco sa dnes preferuje SOAP Document/literal, v ktorom sa prenasa dokument a ked si odmyslime SOAP balenie pri tomto type, dostaneme RPC over HTTP (co je dalsia optimalizacia na vykon a prenesene data).
> Oproti tomu REST používá HTTP operace, které mají pevně definovaný význam (GET, PUT, POST, DELETE). Ovšem obsah sdělovaných zpráv (např. formát XML nebo JSON dat) často nebývá formálně (strojově čitelně – jako v případě WSDL) specifikován a je třeba použít dokumentaci nebo se jednoduše podívat na data, která služba vrací.
Ako je spomenute vyssie, pri preferovanom SOAP Document/literal tiez nie je format dokumentu/spravy formalne specifikovany, co nie je nedostatok, ale pozadovana vlastnost.
> Existuje popisný formát WADL, který by měl být tím, čím je WSDL pro SOAP služby, ale jedná se o poměrně mladou záležitost (oproti WSDL) a někteří vývojáři ho odmítají s tím, že není potřeba nebo že jde proti filosofii RESTu.
Nielen ze existenciu WADL odmietaju vyvojari, ale REST definuje sposob ako samopopisnosti sluzienb a teda WADL nema v ponimani RESTu zmysel. Ak sa hovori o existencii WADL v suvislosti s REST, je to dokaz nepochopenia RESTu a znacnej dezinterpretacie prace Roya Fieldinga.
> Pokud chceme implementoval libovolnou (i procedurální – RPC) službu pomocí REST služeb, lze to – jen jsme trochu omezeni jednoduchostí RESTu a tím, že je určen k provádění CRUD operací a ne libovolných procedur. Tato omezení je možné obejít dvěma způsoby …
Z tejto vety je zrejme, ze autor clanku si dezinterpretuje REST. Nemozno RPC implementovat pomocou REST sluzby! Autor oznacuje pojmom REST nieco co je v skutocnosti HTTP-based RPC interface! Presne o tejto dost zavaznej dezinterpretacii pise sam Fielding na svojom blogu:
„I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today’s example is the SocialSite REST API. That is RPC. It screams RPC. There is so much coupling on display that it should be given an X rating.“ Roy Fielding (http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven)
> Např. Google od veřejného SOAP API upustil a používá REST – a to i pro typicky procedurální úlohy typu převeďAdresuNaSouřadnice() – viz jeho Geocoding Service. Zatímco jinde, kde se nepoužívají jen javascriptoví klienti, zase oceníte možnost silného typování SOAPu a možnost využití technologií jako je UDDI pro katalogizaci služeb a zvládání rozsáhlejších systémů.
Google SOAP API mozno zatial este ocenime, ale nie nadlho – http://googlesystem.blogspot.com/2006/12/googles-soap-search-api-no-longer.html.
Google skratka upustil od SOAP a od roku 2006 preferuje jedine REST API. A Google je spicka v IT a teda predpokladame, ze dobre vedia, preco to robia. My to vieme tiez. :)
Na zaver by som chcel napriek mojim vyhradam autora povzbudit k dalsej praci, lebo ako sa hovori „ucime sa cely zivot“.
Ako dokaz toho, ze aj ini architekti tapaju v rozdieloch WS-* a REST by som uviedol jeden prakticky priklad: http://dmpc.dbp.fmph.uniba.sk/~rybar/it-software/is-it-time-to-change-even-the-architect-not-just-architecture/
Ja sam som do tajomstiev RESTu prenikal dlhe roky a myslim, ze stale sa mam co ucit.