Web zerbitzu

**Web-zerbitzu bat** (ingelesez, web service edo web services) aplikazioen artean datuak trukatzeko balio duten protokolo eta estandar batzuk erabiltzen dituen teknologia bat da. Programazio-lengoaia desberdinetan garatutako software-aplikazioak, edozein plataformatan gauzatuak, web-zerbitzuak erabil ditzakete ordenagailu-sareetan datuak trukatzeko, hala nola Interneten. Elkarreragingarritasuna estandar irekiak hartuz lortzen da. OASIS eta W3C erakundeak dira web-zerbitzuen arkitekturaz eta araugintzaz arduratzen diren batzordeak.

W3C-k honela definitzen du web-zerbitzu bat:

Web-zerbitzu bat makina-makina interakzioa sare baten bidez modu elkarreragileanjasateko diseinatutako software-sistema bat da. Ordenagailu informatiko batek prozesa dezakeen formatu batean deskribatutako interfaze bat du (zehazki, WSDLn), eta interfaze horren bidez, SOAP mezuak trukatuz elkarreragin daiteke, HTTPren gaineko XML serializazioa erabiliz transmititu ohi direnak, beste web-estandar batzuekin batera.

Web zerbitzuen ezarpen desberdinen arteko elkarreragingarritasuna hobetzeko, WS-I erakundea sortu da, hainbat profil garatzeaz arduratzen dena, estandar horiek zehatzago definitzeko. Web-bezeroen eskaerei erantzuten dien eta eskatutako baliabideak bidaltzen dizkien makina bat da... W3C

## Arkitektura 
Web zerbitzuen arkitekturan hiru zati daude: web zerbitzuen hornitzailea, web zerbitzua eskatzen duena eta argitaratzailea. Zerbitzu-hornitzaileak WSDL fitxategi bat bidaltzen dio zerbitzuaren argitaratzaileari, web zerbitzuaren definizioarekin. Zerbitzua eskatzen duena harremanetan jartzen da argitaratzailearekin eta hornitzailea zein den jakiten du (WSDL protokoloa) eta hornitzailearekin harremanetan jartzen da (SOAP protokoloa). Hornitzaileak zerbitzu-eskaera baliozkotu eta datua XML formatuan bidaltzen du, SOAP protokoloa erabiliz. XML fitxategia berriro baliozkotzen da, eta, horren bidez, zerbitzua eskatzen da, XSD fitxategi bat erabilita.

## Erabilitako estandarrak 
* Web Services Protocol Stack: web-zerbitzuen protokoloen eta zerbitzuen multzoa.
* XML (Extensible Markup Language): formatu estandarra trukatuko diren datuetarako.
* SOAP (Simple Object Access اl) edo XML-RPC (XML Remote Procedure Call): trukea ezartzen duten protokoloak.
* Beste protokolo batzuk: XMLko datuak aplikazio batetik bestera ere bidal daitezke protokolo normalen bidez, hala nola Hypertext Transfer Protocol «HTTP», File Transfer Protocol «FTP» edo Simple Mail Transfer Protocol (SMTP).
* WSDL (Web Services Description Language): web-zerbitzuetarako interfaze publikoaren lengoaia da. Web-zerbitzuekin komunikazioa ezartzeko beharrezkoak diren baldintza funtzionalen XMLn oinarritutako deskribapena da.
* UDDI (Universal Description, Discovery and Integration): web-zerbitzuen informazioa argitaratzeko protokoloa. Zer web-zerbitzu dauden eskuragarri egiaztatzeko aukera ematen du.
* WS-Security (Web Service Security): OASISek estandartzat onartutako segurtasun-protokoloa (Organization for the Advancement of Structured Information Standards). Aktoreen autentifikazioa eta bidalitako mezuen konfidentzialtasuna bermatzen ditu.
* REST (Representational State Transfer): arkitektura-estiloa, HTTP protokoloa erabiliz, API bat ematen duena, bere metodo bakoitza (GET, POST, PUT, DELETE, etab.) erabiltzen duena web zerbitzuak eskaintzen duen aplikazioaren eta bezeroaren artean eragiketa desberdinak egin ahal izateko.
* GraphQL, RESTen ordezko arkitektura.

## Web zerbitzuen abantailak 
* Software-aplikazioen arteko elkarreragingarritasuna ematen dute, haien propietateak edo zein plataformatan instalatzen diren kontuan hartu gabe.
* Web-zerbitzuek testuetan oinarritutako estandarrak eta protokoloak sustatzen dituzte, haien edukira iristea eta funtzionamendua ulertzea errazagoa izan dadin.
* Leku geografiko desberdinetan kokatutako konpainien zerbitzuak eta softwarea erraz konbinatzeko aukera ematen dute, zerbitzu integratuak emateko.

## Web zerbitzuen eragozpenak 
* Transakzioak egiteko, ezin dira konparatu garapen-mailan CORBA (Common Object Request Broker Architecture) gisa banatutako konputazio-estandar irekiekin.
* Errendimendu txikia du banatutako beste konputazio-eredu batzuekin alderatuz gero, hala nola Java Remote Method Invocation (RMI), CORBA edo Distributed Component Object Model (DCOM). Testuan oinarritutako formatu bat hartzearen ondoriozko eragozpenetako bat da. Izan ere, XMLren helburuen artean ez dago laburtasuna eta prozesamenduaren eraginkortasuna.
* HTTPn oinarritzen direnez, suebakian oinarritutako segurtasun-neurriak saihets ditzakete. Horien arauak hesiaren bi aldeetako programen arteko komunikazioa blokeatzen edo ikuskatzen saiatzen dira.

## Web zerbitzuak sortzeko arrazoiak 
Web-zerbitzuak erabiltzeko arrazoi nagusia da HTTP Transmission Control Protocol (TCP) erabiliz erabil daitezkeela 80ko sareko portuan. Erakundeek beren sareak suebakien bidez babesten dituztenez (Interneteko trafikoaren zati handi bat iragazten eta blokeatzen dute), ia TCP portu guztiak ixten dituzte, 80a izan ezik, hori baita, hain zuzen ere, web nabigatzaileek erabiltzen dutena. Web-zerbitzuek ataka hau erabiltzen dute, blokeatuta ez daudelako. Garrantzitsua da adieraztea web-zerbitzuak edozein protokolotan erabil daitezkeela, baina TCP da ohikoena.

Beste arrazoi bat da, SOAP existitu aurretik, ez zegoela interfaze onik sareko beste konputagailu batzuen funtzionaltasunetara sartzeko. Zeudenak ad hoc ziren eta ez ziren oso ezagunak, hala nola Electronic Data Interchange (EDI), Remote Procedure Call (RPC), edo beste API batzuk.

Web-zerbitzuak oso praktikoak izateko hirugarren arrazoi bat da independentzia handia eman dezaketela web-zerbitzuak erabiltzen duen aplikazioaren eta zerbitzuaren beraren artean. Horrela, batean denboran zehar gertatzen diren aldaketek ez diote besteari eragin behar. Malgutasun hori gero eta garrantzitsuagoa izango da, gero eta gehiago erabiltzen baita banatutako osagai txikiagoetatik abiatuta aplikazio handiak eraikitzeko joera.

Datozen urteetarako estandar berrietan oinarritutako zerbitzuen kalitatea eta kantitatea hobetzea espero da.

## Plataforma 
Web-zerbitzuetarako aplikazio-zerbitzariak:

* Red Hat inc. enpresaren J2EE Open Source aplikazioen zerbitzaria JBoss.
* Oracle Fusion Middleware
* IBM Lotus Domino 7.0 bertsiotik aurrera
* Axis eta Apache Tomcat zerbitzaria (Apache)
* Macromediako MX Adobe ColdFusion
* Sun Microsystems-en Java Web Services Development Pack (JWSDP) (Apache Tomcat-en oinarrituta)
* JOnAS (ObjectWeb-en zati bat, kode irekiko ekimen bat)
* Microsoft .NET
* Novell exteNd (J2EE plataforman oinarrituta)
* Oracle WebLogic Server
* WebSphere
* JAX-WS GlassFishekin
* Zope objektuetara bideratutako web-aplikazioen zerbitzari bat da, Python programazio-lengoaian garatua.
* AttachmateWRQren VERASTREAM, host IBM eta VT aplikazioak modernizatzeko edo integratzeko

## Erreferentziak 
## Ikus, gainera 
* Aplikazioak programatzeko interfazea (API)
* World Wide Web
* Web semantikoa
* SOAP

## Kanpo estekak 
* ESA eta Web Services SAPen
* Artearen egoera: Web zerbitzuak
* Segurtasuna WEB zerbitzuetan
* Web Zerbitzuen Gida Laburra (W3C)