Programovanie

Webové služby v prostredí Java SE, časť 1: Prehľad nástrojov

Java Standard Edition (SE) 6 obsahovala podporu webových služieb. Tento príspevok začína štvordielnu sériu webových služieb v prostredí Java SE vysvetlením, čo sú webové služby, a zhrnutím ich podpory v prostredí Java SE. Budúce príspevky budú túto podporu využívať na vytváranie webových služieb založených na SOAP a RESTful a budú tiež pokrývať pokročilé témy webových služieb.

Java XML a JSON

V tejto sérii predpokladám, že rozumiete XML a JSON. Ak nie, môžete sa pozrieť na moje Java XML a JSON kniha, ktorá je inzerovaná na konci tohto príspevku.

Čo sú webové služby?

Wikipedia definuje webová služba ako „softvérový systém navrhnutý na podporu interoperabilnej interakcie medzi strojmi v sieti“. Podrobnejšiu definíciu je možné získať najskôr definovaním častí tohto výrazu:

  • Web: Obrovská vzájomne prepojená sieť zdrojov, kde a zdroj je zdroj údajov s názvom Uniform Resource Identifier (URI), ako je dokument založený na PDF, videostream, webová stránka alebo dokonca aplikácia. K týmto prostriedkom je možné získať prístup pomocou štandardných internetových protokolov, ako je HyperText Transfer Protocol (HTTP) alebo Simple Mail Transfer Protocol (SMTP).
  • Služba: Serverová aplikácia alebo softvérový komponent, ktorý vystavuje zdroj klientom prostredníctvom výmeny správ podľa vzoru výmeny správ (MEP). Typický je poslanec odpovedajúci na žiadosť.

Vzhľadom na tieto definície, a webová služba je serverová aplikačná / softvérová súčasť, ktorá prostredníctvom výmeny správ vystavuje klientom webový zdroj. Tieto správy môžu byť formátované podľa jazyka XML (Extensible Markup Language) alebo JSON (JavaScript Object Notation). Tieto správy možno tiež považovať za vyvolanie funkcií webových služieb a prijímanie výsledkov vyvolaných. Obrázok 1 ilustruje túto výmenu správ.

Obrázok 1. Klient pristupuje k prostriedku prostredníctvom výmeny správ s webovou službou

Podniky a webové služby

Firmy používajú webové služby, pretože prekonávajú tradičné problémy so softvérom (napr. Nákladné pri získavaní a údržbe, neschopnosť komunikovať s back-endovým softvérom a klientskými aplikáciami cez internet a nepružné) tým, že sú založené na slobodných a otvorených štandardoch, svojou udržiavateľnosťou a zapojením na webe a tým, že sú flexibilní. Ďalej pomáhajú väčším podnikom uchovať si svoje často významné investície do staršieho softvéru.

Webové služby možno klasifikovať ako jednoduché alebo zložité. Jednoduché webové služby neinteragujú s inými webovými službami (napr. Samostatná serverová aplikácia s jedinou funkciou, ktorá vracia aktuálny čas pre zadané časové pásmo). Naproti tomu komplexné webové služby často interagujú s inými webovými službami. Napríklad všeobecná webová služba sociálnej siete môže interagovať s webovými službami Twitter a Facebook, aby získala a vrátila svojmu klientovi všetky informácie o Twitteri a Facebooku pre konkrétnu osobu. Komplexné webové služby sú tiež známe ako maškrty pretože oni maškrta (kombinovať) údaje z viacerých webových služieb.

Architektúra zameraná na služby

Webové služby sú implementáciou Servisne orientovaná architektúra (SOA), čo je štýl softvérového dizajnu, v ktorom sú služby poskytované rôznym softvérovým komponentom prostredníctvom komunikačného protokolu v sieti. Predstavte si SOA ako sadu princípov návrhu alebo rámec pre implementáciu obchodnej logiky ako opakovane použiteľné služby, ktoré je možné kombinovať rôznymi spôsobmi tak, aby vyhovovali vyvíjajúcim sa obchodným požiadavkám.

Webové služby založené na SOAP

A Webová služba založená na SOAP je široko používaná kategória webových služieb, na ktorej je založená MYDLO, jazyk XML na definovanie správ (abstraktné vyvolania funkcií alebo ich odpovede), ktorým možno porozumieť na oboch koncoch sieťového pripojenia. Výmena správ SOAP sa nazýva prevádzka, ktorý zodpovedá volaniu funkcie a jeho odpovedi a ktorý je zobrazený na obrázku 2.

Obrázok 2. Prevádzka webovej služby zahŕňa vstupné a výstupné správy

Súvisiace operácie sú často zoskupené do rozhranie, ktorá je koncepčne podobná rozhraniu Java. A viazanie poskytuje konkrétne podrobnosti o tom, ako je rozhranie viazané na protokol správ (najmä SOAP) na komunikáciu príkazov, chybových kódov a ďalších položiek po drôte. Väzba a a sieťová adresa (adresa IP a port) URI je známy ako koncový boda súbor koncových bodov je a webová služba. Obrázok 3 predstavuje túto architektúru.

Obrázok 3. Rozhrania operácií sú prístupné prostredníctvom ich koncových bodov

SOAP sa často používa s Jazyk popisu webových služieb (WSDL, výrazný whiz-matný), jazyk XML na definovanie operácií webovej služby. A Dokument WSDL je formálna zmluva medzi webovou službou založenou na SOAP a jej klientmi, ktorá poskytuje všetky podrobnosti týkajúce sa interakcie s webovou službou. Tento dokument umožňuje zoskupiť správy do operácií a operácií do rozhraní. Umožňuje vám tiež definovať väzbu pre každé rozhranie, ako aj adresu koncového bodu.

Webové služby založené na SOAP majú okrem podpory dokumentov WSDL aj tieto vlastnosti:

  • Schopnosť riešiť zložité nefunkčné požiadavky, ako sú bezpečnosť a transakcie: Tieto požiadavky sú dostupné prostredníctvom rôznych špecifikácií. Na podporu interoperability medzi týmito špecifikáciami, Organizácia interoperability webových služieb (WS-I) (priemyselné konzorcium). WS-I zriadila skupinu profilov, kde a profilu je sada pomenovaných špecifikácií webových služieb na konkrétnych úrovniach revízií spolu so súborom pokynov na implementáciu a interoperabilitu odporúčajúcich, ako je možné tieto špecifikácie použiť na vývoj interoperabilných webových služieb. Napríklad úplne prvý profil, Základný profil WS-I 1.0, pozostáva z nasledujúcej sady nechránených špecifikácií webových služieb:
  • MYDLO 1.1
  • WSDL 1.1
  • Vyhľadanie a integrácia univerzálneho popisu (UDDI) 2.0
  • XML 1.0 (druhé vydanie)
  • Schéma XML, časť 1: Štruktúry
  • Schéma XML, časť 2: Datové typy
  • RFC2246: Transport Layer Security Protocol verzia 1.0
  • RFC2459: Internet X.509 certifikát infraštruktúry verejného kľúča a profil CRL
  • RFC2616: HyperText Transfer Protocol 1.1
  • RFC2818: HTTP cez TLS
  • RFC2965: Mechanizmus riadenia stavu HTTP
  • Protokol Secure Sockets Layer Protocol verzie 3.0

Medzi ďalšie príklady profilov patrí profil základnej bezpečnosti WS-I a profil jednoduchej väzby SOAP. Viac informácií o týchto a ďalších profiloch nájdete na webových stránkach WS-I. Java SE podporuje základný profil WS-I.

  • Schopnosť asynchrónne interagovať s webovou službou: Klienti webových služieb by mali byť schopní interagovať s webovou službou neblokujúcim, asynchrónnym spôsobom. Podpora asynchrónneho vyvolania operácií webových služieb na strane klienta je poskytovaná v prostredí Java SE.

Webové služby založené na protokole SOAP sa vykonávajú v prostredí, ktoré zahŕňa žiadateľa o službu (klienta), poskytovateľa služieb a sprostredkovateľa služieb. Toto prostredie je znázornené na obrázku 4.

Obrázok 4. Webová služba založená na SOAP zahŕňa žiadateľa o službu, poskytovateľa služby a sprostredkovateľa služby (napr. UDDI)

Žiadateľ o službu, zvyčajne klientská aplikácia (napr. Webový prehľadávač), alebo iná webová služba, najskôr nejakým spôsobom vyhľadá poskytovateľa služby. Napríklad žiadateľ o službu môže poslať dokument WSDL sprostredkovateľovi služieb, ktorý odpovie iným dokumentom WSDL identifikujúcim polohu poskytovateľa služby. Žiadateľ o službu potom komunikuje s poskytovateľom služby prostredníctvom správ SOAP.

Je potrebné zverejniť poskytovateľov služieb, aby ich ostatní mohli vyhľadať a použiť. V auguste 2000 bola otvorená iniciatíva odvetvia známa ako Univerzálny popis, vyhľadávanie a integrácia (UDDI) bola uvedená na trh, aby umožnila podnikom zverejňovať výpisy služieb, navzájom sa objavovať a definovať, ako služby alebo softvérové ​​aplikácie interagujú cez internet. Tento platformovo nezávislý register založený na XML však nebol široko prijatý a v súčasnosti sa nepoužíva. Mnoho vývojárov považovalo UDDI za príliš komplikované a nedostatočné funkčnosti a rozhodli sa pre alternatívy, ako je zverejnenie informácií na webových stránkach. Spoločnosť Google napríklad kedysi sprístupnila svoje verejné webové služby (napr. Mapy Google) na adrese //code.google.com/more/.

Správy SOAP, ktoré prúdia medzi žiadateľmi o službu a poskytovateľmi služieb, sú často nevídané a odovzdávajú sa ako požiadavky a odpovede medzi knižnicami SOAP ich zásobníkov protokolov webových služieb. K týmto správam je však možné pristupovať priamo, ako zistíte ďalej v tejto sérii.

Veľké webové služby

Webové služby založené na SOAP sú tiež známe ako veľké webové služby pretože sú založené na mnohých špecifikáciách, napríklad na vyššie spomenutých profiloch WS-I.

RESTful webové služby

Webové služby založené na protokole SOAP je možné doručovať prostredníctvom protokolov, ako sú HTTP, SMTP, FTP a Blocks Extensible Exchange Protocol (BEEP). Na doručovanie správ SOAP cez HTTP sa dá pozerať ako na zvláštny druh webovej služby RESTful.

A RESTful webová služba je široko používaná kategória webových služieb, na ktorej je založená Transfer reprezentačného štátu (REST), štýl softvérovej architektúry na distribúciu hypermediálne systémy (systémy, v ktorých sú obrázky, text a ďalšie zdroje umiestnené v sieťach a sú prístupné prostredníctvom hypertextových odkazov). Hypermediálnym záujmovým systémom v kontexte webových služieb je World Wide Web.

História REST

Roy Fielding (hlavný autor špecifikácií protokolu HTTP verzie 1.0 a 1.1 a spoluzakladateľ Apache Software Foundation) predstavil a definoval REST vo svojej dizertačnej práci už v roku 2000. Fielding si predstavoval REST ako architektonický štýl webu, aj keď sám písal vzbudilo sa to dlho potom, čo bol Web nepretržitým podnikaním. REST sa všeobecne považuje za riešenie zvyšujúcej sa zložitosti webových služieb založených na SOAP.

Centrálnou časťou REST je prostriedok identifikovateľný podľa URI. REST identifikuje zdroje podľa ich typov MIME (Multipurpose Internet Mail Extensions) (napríklad text / xml). Zdroje tiež obsahujú štáty, ktoré sú zachytené ich reprezentáciami. Keď klient požaduje zdroj z webovej služby RESTful, odošle klientovi reprezentáciu prostriedku v MIME.

Klienti používajú slovesá POST, GET, PUT a DELETE protokolu HTTP na načítanie reprezentácií zdrojov a na manipuláciu so zdrojmi. REST tieto slovesá mapuje na operácie Vytvorenie, Čítanie, Aktualizácia a Odstránenie (CRUD) databázy nasledujúcim spôsobom:

  • POST: Vytvorte nový zdroj na základe údajov žiadosti.
  • ZÍSKAJTE: Prečítajte si existujúci zdroj bez vytvárania vedľajších účinkov (zdroj nemeňte).
  • PUT: Aktualizujte existujúci zdroj údajmi žiadosti.
  • ODSTRÁNIŤ: Odstrániť existujúci prostriedok.

Za každým slovesom nasleduje URI, ktorý identifikuje zdroj. (Tento nesmierne jednoduchý prístup je v zásade nekompatibilný s prístupom SOAP k odosielaniu kódovaných správ na jeden zdroj.) URI môže odkazovať na kolekciu, ako napr. //javajeff.ca/library, alebo na prvok zbierky, ako napr //javajeff.ca/library/9781484219157 - tieto identifikátory URI sú iba ilustračné.

Pri požiadavkách POST a PUT sa údaje tela prostriedkov založené na XML odovzdávajú ako telo žiadosti. Môžete napríklad tlmočiť POST //javajeff.ca/library HTTP / 1.1 (kde HTTP / 1.1 popisuje verziu HTTP žiadateľa) ako požiadavku na vloženie POSTXML dáta do //javajeff.ca/library zdroj zberu.

V prípade požiadaviek GET a DELETE sa údaje zvyčajne odovzdávajú ako reťazce dotazu, kde a reťazec dotazu je časť URI začínajúca sa a ? znak. Napríklad kde ZÍSKAJTE //javajeff.ca/library môže vrátiť zoznam identifikátorov pre všetky knihy v a knižnica zdroj, ZÍSKAJTE //javajeff.ca/library?isbn=9781484219157 pravdepodobne vráti reprezentáciu zdroja knihy, ktorej reťazec dopytu identifikuje medzinárodné štandardné číslo knihy (ISBN) 9781484219157.

Viac informácií o mapovaní HTTP-CRUD

Kompletný popis mapovaní medzi slovesami HTTP a ich náprotivkami CRUD nájdete v tabuľke „Metódy HTTP RESTful Web Service HTTP“ v položke Reprezentačný stav prenosu na Wikipédii.

REST sa tiež spolieha na štandardné kódy odpovede HTTP, ako napríklad 404 (požadovaný zdroj sa nenašiel) a 200 (operácia zdroja bola úspešná) spolu s typmi MIME (keď sa načítajú reprezentácie zdrojov).

RESTful vs veľké webové služby

Ak vás zaujíma, či vyvinúť webovú službu pomocou protokolu SOAP alebo REST, pozrite sa na webové služby RESTful vs. „veľké“ webové služby: Správne architektonické rozhodnutie.

Podpora webových služieb v prostredí Java SE

Pred programom Java SE 6 boli webové služby založené na prostredí Java vyvíjané výlučne pomocou súpravy Java Enterprise Edition (EE) SDK. Aj keď je Java EE preferovaná pri vývoji webových služieb z produkčného hľadiska, pretože servery založené na Java EE poskytujú veľmi vysoký stupeň škálovateľnosti, bezpečnostnú infraštruktúru, monitorovacie zariadenia atď., Opakované nasadenie webovej služby do Java EE kontajner bol často časovo náročný a spomaľoval vývoj. Java SE 6 zjednodušila a urýchlila vývoj webových služieb pridaním API, anotácií, nástrojov a ľahkého servera HTTP (na nasadenie webových služieb na jednoduchý webový server a ich testovanie v tomto prostredí) do svojho jadra.

API

Java SE poskytuje niekoľko rozhraní API, ktoré podporujú webové služby. Spolu s rôznymi rozhraniami JAXP API (SAX, DOM, StAX atď.), O ktorých diskutujem Java XML a JSON, Java SE poskytuje API JAX-WS, JAXB a SAAJ:

$config[zx-auto] not found$config[zx-overlay] not found