Programavimas

Žiniatinklio paslaugos sistemoje „Java SE“, 1 dalis: Įrankių apžvalga

„Java Standard Edition“ (SE) 6 apėmė žiniatinklio paslaugų palaikymą. Šiame įraše pradedama keturių dalių „Java SE“ žiniatinklio paslaugų serija, paaiškinant, kas yra žiniatinklio paslaugos, ir apžvelgiant „Java SE“ joms teikiamą palaikymą. Būsimuose pranešimuose ši parama bus naudojama kuriant SOAP ir RESTful pagrįstas žiniatinklio paslaugas, taip pat bus aptariamos pažangios žiniatinklio paslaugų temos.

„Java XML“ ir „JSON“

Manau, kad šioje serijoje suprantate XML ir JSON. Jei ne, galbūt norėsite patikrinti mano „Java XML“ ir „JSON“ knyga, kuri reklamuojama šio įrašo pabaigoje.

Kas yra interneto paslaugos?

Vikipedija apibrėžia Interneto paslauga kaip „programinės įrangos sistema, sukurta palaikyti sąveikaujančią mašinų tarpusavio sąveiką tinkle“. Išsamesnį apibrėžimą galima gauti pirmiausia apibrėžus šio termino dalis:

  • Žiniatinklis: Didžiulis tarpusavyje sujungtas išteklių tinklas, kur a išteklių yra „Uniform Resource Identifier“ (URI) pavadintas duomenų šaltinis, pvz., PDF pagrindu sukurtas dokumentas, vaizdo įrašų srautas, tinklalapis ar net programa. Šiuos išteklius galima pasiekti naudojant standartinius interneto protokolus, tokius kaip „HyperText Transfer Protocol“ (HTTP) arba „Simple Mail Transfer Protocol“ (SMTP).
  • Paslauga: Serverio programa arba programinės įrangos komponentas, atskleidžiantis klientams išteklius keičiantis pranešimais pagal keitimosi pranešimais modelį (MEP). Prašymas-atsakymas EP narys yra tipiškas.

Atsižvelgiant į šiuos apibrėžimus, a Interneto paslauga yra serverio programa / programinės įrangos komponentas, kuris keičia internetinius išteklius klientams keičiantis žinutėmis. Šie pranešimai gali būti suformatuoti pagal išplėstinę žymėjimo kalbą (XML) arba „JavaScript Object Notation“ (JSON). Be to, šiuos pranešimus galima laikyti žiniatinklio paslaugų funkcijų iškvietimu ir iškvietimo rezultatų priėmimu. 1 paveiksle pavaizduotas šis pasikeitimas pranešimais.

1 paveikslas. Klientas prieigą prie ištekliaus keičiasi pranešimais su žiniatinklio paslauga

Verslas ir interneto paslaugos

Verslas naudojasi interneto paslaugomis, nes jos įveikia tradicines tarpinės programinės įrangos problemas (pvz., Brangu jas gauti ir prižiūrėti, nesugeba bendrauti su vidine programine įranga ir kliento programomis internete ir yra nelankstus) remdamosi laisvais ir atvirais standartais, palaikydamos jas, įtraukdamos ir būdami lankstūs. Be to, jie padeda didesnėms įmonėms išsaugoti dažnai reikšmingas investicijas į seną programinę įrangą.

Žiniatinklio paslaugos gali būti klasifikuojamos kaip paprastos arba sudėtingos. Paprastos žiniatinklio paslaugos nesąveikauja su kitomis žiniatinklio paslaugomis (pvz., Atskira serverio programa, turinti vieną funkciją, kuri grąžina dabartinį laiką nurodytai laiko juostai). Priešingai, sudėtingos žiniatinklio paslaugos dažnai sąveikauja su kitomis žiniatinklio paslaugomis. Pavyzdžiui, apibendrinta socialinio tinklo žiniatinklio paslauga gali sąveikauti su „Twitter“ ir „Facebook“ žiniatinklio paslaugomis, kad gautų ir grąžintų savo klientui visą „Twitter“ ir visą konkretaus asmens „Facebook“ informaciją. Kompleksinės interneto paslaugos taip pat žinomos kaip košės nes jie košė (sujungti) duomenis iš kelių žiniatinklio paslaugų.

Į paslaugas orientuota architektūra

Žiniatinklio paslaugos yra Į paslaugas orientuota architektūra (SOA), kuris yra programinės įrangos projektavimo stilius, kai paslaugos teikiamos įvairiems programinės įrangos komponentams per ryšio protokolą tinkle. Pagalvokite apie SOA kaip apie dizaino principų rinkinį arba verslo logikos įgyvendinimo sistemą kaip apie daugkartinio naudojimo paslaugas, kurias galima įvairiai derinti, kad atitiktų besikeičiančius verslo reikalavimus.

SOAP pagrįstos žiniatinklio paslaugos

A SOAP pagrindu sukurta interneto paslauga yra plačiai naudojama interneto paslaugų kategorija, kuria remiamasi MUILAS, XML kalba apibrėžti žinutes (abstrakčios funkcijos iškvietimai ar jų atsakymai), kuriuos galima suprasti abiem tinklo ryšio galais. Keitimasis SOAP pranešimais vadinamas operacija, kuris atitinka funkcijos iškvietimą ir jo atsakymą ir kuris pavaizduotas 2 paveiksle.

2 pav. Žiniatinklio paslaugos operacija apima įvesties ir išvesties pranešimus

Susijusios operacijos dažnai grupuojamos į sąsaja, kuris konceptualiai panašus į „Java“ sąsają. A įrišimas pateikia konkrečią informaciją apie tai, kaip sąsaja yra susieta su pranešimų siuntimo protokolu (ypač SOAP), kad per laidą būtų perduodamos komandos, klaidų kodai ir kiti elementai. Įrišimas ir a tinklo adresas (IP adresas ir prievadas) URI yra žinomas kaip galutinis taškas, o galinių taškų rinkinys yra a Interneto paslauga. 3 paveiksle pateikta ši architektūra.

3 pav. Operacijų sąsajos yra prieinamos per jų galinius taškus

SOAP dažnai naudojamas su Žiniatinklio paslaugų aprašo kalba (WSDL, tariama šnipščia), XML kalba, skirta apibrėžti žiniatinklio paslaugos operacijas. A WSDL dokumentas yra oficiali sutartis tarp SOAP pagrįstos žiniatinklio paslaugos ir jos klientų, kurioje pateikiama visa informacija apie sąveiką su žiniatinklio paslauga. Šis dokumentas leidžia grupuoti pranešimus į operacijas ir operacijas į sąsajas. Tai taip pat leidžia nustatyti kiekvienos sąsajos įrišimą ir galinio taško adresą.

SOAP pagrįstos žiniatinklio paslaugos ne tik palaiko WSDL dokumentus, bet ir turi šias savybes:

  • Gebėjimas patenkinti sudėtingus nefunkcinius reikalavimus, tokius kaip saugumas ir operacijos: Šie reikalavimai pateikiami naudojant įvairias specifikacijas. Siekdama skatinti šių specifikacijų sąveiką, Žiniatinklio paslaugų sąveikos organizacija (WS-I) (pramonės konsorciumas) buvo suformuotas. WS-I sukūrė profilių rinkinį, kur a profilis yra įvardytų žiniatinklio paslaugų specifikacijų rinkinys konkrečiais versijų lygiais, kartu su įgyvendinimo ir sąveikos gairių rinkiniu, rekomenduojančiu, kaip specifikacijos gali būti naudojamos plėtojant sąveikias žiniatinklio paslaugas. Pavyzdžiui, pats pirmasis profilis, WS-I pagrindinis profilis 1.0, sudaro šie nepatentuotų žiniatinklio paslaugų specifikacijų rinkiniai:
  • Muilas 1.1
  • WSDL 1.1
  • Universalus aprašymo atradimas ir integravimas (UDDI) 2.0
  • XML 1.0 (antrasis leidimas)
  • XML schema 1 dalis: struktūros
  • XML schema 2 dalis: duomenų tipai
  • RFC2246: Transporto sluoksnio saugos protokolo 1.0 versija
  • RFC2459: „Internet X.509“ viešojo rakto infrastruktūros sertifikatas ir CRL profilis
  • RFC2616: „HyperText“ perdavimo protokolas 1.1
  • RFC2818: HTTP per TLS
  • RFC2965: HTTP būsenos valdymo mechanizmas
  • „Secure Sockets Layer“ protokolo versija 3.0

Papildomi profilio pavyzdžiai yra „WS-I Basic Security Profile“ ir „Simple SOAP Binding Profile“. Norėdami gauti daugiau informacijos apie šiuos ir kitus profilius, apsilankykite WS-I svetainėje. „Java SE“ palaiko pagrindinį profilį WS-I.

  • Gebėjimas asinchroniškai sąveikauti su žiniatinklio paslauga: Žiniatinklio paslaugų klientai turėtų galėti sąveikauti su žiniatinklio paslauga neužblokuotai, asinchroniškai. Asinchroninis kliento žiniatinklio paslaugų operacijų palaikymas teikiamas „Java SE“.

SOAP pagrįstos žiniatinklio paslaugos vykdomos aplinkoje, kurioje yra paslaugų prašytojas (klientas), paslaugų teikėjas ir paslaugų brokeris. Ši aplinka parodyta 4 paveiksle.

4 pav. SOAP pagrindu veikiančioje žiniatinklio tarnyboje dalyvauja paslaugų prašytojas, paslaugų teikėjas ir paslaugų tarpininkas (pvz., UDDI).

Paslaugos prašytojas, paprastai kliento programa (pvz., Žiniatinklio naršyklė), ar galbūt kita žiniatinklio paslauga, pirmiausia tam tikru būdu suranda paslaugų teikėją. Pavyzdžiui, paslaugų prašytojas gali išsiųsti WSDL dokumentą paslaugų brokeriui, kuris atsako su kitu WSDL dokumentu, nurodančiu paslaugų teikėjo vietą. Tada paslaugų prašytojas bendrauja su paslaugų teikėju SOAP pranešimais.

Paslaugų teikėjai turi būti paskelbti, kad kiti galėtų juos rasti ir naudoti. 2000 m. Rugpjūčio mėn. Atvira pramonės iniciatyva, žinoma kaip Universalus aprašymas, atradimas ir integravimas (UDDI) buvo pradėta leisti įmonėms skelbti paslaugų sąrašus, atrasti vienas kitą ir apibrėžti, kaip paslaugos ar programinės įrangos sąveika internete. Tačiau šis nuo platformos nepriklausomas, XML pagrįstas registras nebuvo plačiai pritaikytas ir šiuo metu nenaudojamas. Daugelis kūrėjų nustatė, kad UDDI yra pernelyg sudėtinga ir trūksta funkcionalumo, ir pasirinko tokias alternatyvas kaip informacijos paskelbimas svetainėje. Pavyzdžiui, „Google“ kartą padarė savo viešąsias žiniatinklio paslaugas (pvz., „Google Maps“) prieinamas šiuo adresu: //code.google.com/more/.

SOAP pranešimai, tekantys tarp paslaugų prašytojų ir paslaugų teikėjų, dažnai nematomi, jie perduodami kaip užklausos ir atsakymai tarp jų žiniatinklio paslaugų protokolo SOAP bibliotekų. Tačiau įmanoma tiesiogiai pasiekti šiuos pranešimus, kaip sužinosite vėliau šioje serijoje.

Didelės žiniatinklio paslaugos

SOAP pagrįstos žiniatinklio paslaugos taip pat žinomos kaip didelės interneto paslaugos nes jie yra pagrįsti daugeliu specifikacijų, pavyzdžiui, anksčiau minėtais WS-I profiliais.

RESTful interneto paslaugos

SOAP pagrindu veikiančios žiniatinklio paslaugos gali būti teikiamos per tokius protokolus kaip HTTP, SMTP, FTP ir „Blocks Extensible Exchange Protocol“ (BEEP). SOAP pranešimų pristatymas per HTTP gali būti laikomas specialia RESTful žiniatinklio paslaugos rūšimi.

A RESTful interneto paslauga yra plačiai naudojama interneto paslaugų kategorija, kuria remiamasi Reprezentacinis valstybės perdavimas (REST), platinamos programinės įrangos architektūros stilius hipermedijos sistemos (sistemos, kuriose vaizdai, tekstas ir kiti ištekliai yra aplink tinklus ir prieinami per hipersaitus). Hipermedijos sistema, dominti žiniatinklio paslaugų kontekste, yra pasaulinis internetas.

REST istorija

Roy Fieldingas (pagrindinis HTTP specifikacijų 1.0 ir 1.1 versijų autorius ir „Apache Software Foundation“ įkūrėjas) savo daktaro disertacijoje pristatė ir apibrėžė REST dar 2000 m. tai netrukus po to, kai žiniatinklis buvo nuolatinis. REST yra plačiai vertinamas kaip sprendimas, kuris laikomas vis labiau SOAP pagrįstų žiniatinklio paslaugų kompleksiškumu.

Centrinė REST dalis yra URI identifikuojamas išteklius. REST išteklius identifikuoja pagal jų daugiafunkcinius interneto pašto plėtinių (MIME) tipus (pvz., Text / xml). Be to, ištekliai turi būsenas, kurias užfiksuoja jų reprezentacijos. Kai klientas prašo ištekliaus iš „RESTful“ žiniatinklio tarnybos, tarnyba klientui siunčia MIME tipą.

Klientai naudoja HTTP veiksmažodžius POST, GET, PUT ir DELETE, kad gautų išteklių reprezentacijas ir manipuliuotų ištekliais. REST šiuos veiksmažodžius susieja su duomenų bazės kūrimo, skaitymo, atnaujinimo ir ištrynimo (CRUD) operacijomis taip:

  • POST: sukurkite naują šaltinį pagal užklausos duomenis.
  • GAUTI: Perskaitykite esamą šaltinį nesukeldami šalutinių poveikių (nekeiskite šaltinio).
  • PUT: atnaujinkite esamą išteklių pateikdami užklausos duomenis.
  • Ištrinti: ištrinti esamą išteklių.

Po kiekvieno veiksmažodžio yra URI, nurodantis šaltinį. (Šis nepaprastai paprastas požiūris iš esmės nesuderinamas su SOAP požiūriu į koduotų pranešimų siuntimą į vieną šaltinį.) URI gali reikšti rinkinį, pvz., //javajeff.ca/library, arba į kolekcijos elementą, pvz //javajeff.ca/library/9781484219157 - šie URI yra tik iliustracijos.

POST ir PUT užklausoms XML pagrįsti išteklių duomenys perduodami kaip užklausos turinys. Pavyzdžiui, galite interpretuoti POST //javajeff.ca/biblioteka HTTP / 1.1 (kur HTTP / 1.1 aprašo prašytojo HTTP versiją) kaip prašymą įterpti POSTXML duomenis į //javajeff.ca/library kolekcijos išteklius.

GET ir DELETE užklausų duomenys paprastai perduodami kaip užklausos eilutės, kur a užklausos eilutė yra ta URI dalis, prasidedanti a ? charakteris. Pavyzdžiui, kur GAUTI //javajeff.ca/library gali grąžinti visų „A“ knygų identifikatorių sąrašą biblioteka išteklius, GAUTI //javajeff.ca/library?isbn=9781484219157 tikriausiai grąžins knygos šaltinio, kurio užklausos eilutė identifikuoja tarptautinį standartinį knygos numerį (ISBN), vaizdą 9781484219157.

Sužinokite daugiau apie HTTP-CRUD susiejimus

Norėdami išsamiai aprašyti susiejimus tarp HTTP veiksmažodžių ir jų CRUD atitikmenų, peržiūrėkite Vikipedijos įrašo „Reprezentacinės būsenos perkėlimas“ lentelę „RESTful Web Service HTTP metodai“.

REST taip pat remiasi HTTP standartiniais atsakymo kodais, tokiais kaip 404 (prašomas išteklius nerastas) ir 200 (išteklių operacija sėkmingai atlikta), kartu su MIME tipais (kai gaunami išteklių vaizdai).

RESTful vs didelės interneto paslaugos

Jei kyla klausimų, ar kurti žiniatinklio paslaugą naudojant SOAP ar REST, peržiūrėkite „RESTful Web Services“ ir „Big“ Web Services: tinkamo architektūrinio sprendimo priėmimas.

Žiniatinklio paslaugų palaikymas „Java SE“

Prieš „Java SE 6“ „Java“ pagrindu sukurtos žiniatinklio paslaugos buvo kuriamos tik naudojant „Java Enterprise Edition“ (EE) SDK. Nors kuriant žiniatinklio paslaugas iš gamybos perspektyvos pirmenybė teikiama „Java EE“, nes „Java EE“ pagrindu veikiantys serveriai teikia labai aukštą mastelio mastą, saugumo infrastruktūrą, stebėjimo priemones ir pan., Pakartotinis žiniatinklio paslaugos diegimas „Java EE“ konteineris dažnai užima daug laiko, sulėtindamas plėtrą. „Java SE 6“ supaprastino ir paspartino žiniatinklio paslaugų kūrimą, į savo pagrindą įtraukdama API, anotacijas, įrankius ir lengvą HTTP serverį (skirtas interneto paslaugoms diegti paprastame interneto serveryje ir išbandyti jas šioje aplinkoje).

API

„Java SE“ teikia keletą API, palaikančių žiniatinklio paslaugas. Kartu su įvairiomis JAXP API (SAX, DOM, StAX ir pan.), Kurias aptariu „Java XML“ ir „JSON“, „Java SE“ teikia JAX-WS, JAXB ir SAAJ API: