Ram för webbtjänsters inbjudan Web Services Invocation Framework

Apache WSIF
Framkallare (s) Apache Software Foundation
Stabil frisättning
2.0 / 27 januari 2003
Operativ system Plattformsoberoende
Typ webbservice
Licens Apache License 2.0
Hemsida ws .apache .org / wsif

Den Web Services Åkallan Framework (WSIF) stödjer ett enkelt Java- API för att anropa webbtjänster , oavsett hur eller var de tjänster som tillhandahålls. Ramverket möjliggör maximal flexibilitet för åkallandet av alla WSDL-tjänster som beskrivs med Web Services Description Language .

Med WSIF kan WSDL bli centrum i en integrationsram för åtkomst till mjukvara som körs på olika plattformar och med mycket varierande protokoll. Den enda förutsättningen är att mjukvaran måste beskrivas med hjälp av WSDL och att i sin beskrivning har inkluderat en bindning som klientens WSIF-ramverk har en leverantör för. WSIF definierar och levereras paketerat med leverantörer för lokala Java, Enterprise JavaBeans (EJB), Java Message Service (JMS) och Java EE Connector Architecture (JCA) -protokoll, vilket innebär att en klient kan definiera en EJB eller en Java Message Service- tillgängligt tjäna direkt som en WSDL-bindning och få åtkomst till den på ett transparent sätt med hjälp av WSIF, med samma API som man skulle använda för en SOAP-tjänst eller en lokal Java-klass.

Strukturera

I WSDL definierar en bindning hur man ska kartlägga mellan den abstrakta PortType och ett verkligt serviceformat och protokoll. Till exempel definierar SOAP-bindningen kodningsstilen, SOAPAction- huvudet, namnområdet för kroppen (targetURI) och så vidare.

WSDL tillåter att det kan finnas flera implementationer för en webbtjänst och flera portar som delar samma PortType. Med andra ord tillåter WSDL att samma gränssnitt har bindningar till exempelvis SOAP och IIOP.

WSIF tillhandahåller ett API för att tillåta samma klientkod att komma åt alla tillgängliga bindningar. Eftersom klientkoden sedan kan skrivas till PortType, kan det vara en distributions- eller konfigurationsinställning (eller ett kodval) vilken port och bindning den använder.

WSIF använder leverantörer för att stödja dessa flera WSDL-bindningar. En leverantör är en kodkod som stöder en WSDL-förlängning och tillåter anrop av tjänsten genom den specifika implementeringen. WSIF-leverantörer använder specifikationen J2SE JAR-tjänsteleverantören, vilket gör dem upptäckbara vid körning .

Kunderna kan sedan använda alla nya implementeringar och kan delegera valet av hamn till infrastrukturen och körtiden, vilket gör att implementeringen kan väljas utifrån kvaliteten på tjänstegenskaperna eller affärspolitiken.

Bindningar för EJB: er, JMS och JCA

WSIF definierar ytterligare bindande tillägg så att Enterprise JavaBean (EJB: er), lokala Java-klasser, programvara som är tillgänglig över meddelandeköer med Java Message Service (JMS) API och programvara som kan åberopas med Java Connector-arkitekturen också kan beskrivas i WSDL. WSIF är paketerat med leverantörer som tillåter transparent anrop av sådan programvara med motsvarande WSDL-beskrivning.

Beskrivning

WSIF gör det möjligt för utvecklare att interagera med abstrakta representationer av webbtjänster genom deras WSDL-beskrivningar istället för att arbeta direkt med SOAP-API: er (Simple Object Access Protocol), som är den vanliga programmeringsmodellen. Med WSIF kan utvecklare arbeta med samma programmeringsmodell oavsett hur webbtjänsten implementeras och nås.

WSIF tillåter odelad eller helt dynamisk åkallande av en webbtjänst, baserad på undersökning av metadata om tjänsten vid körning. Det tillåter också uppdaterade implementeringar av en bindning att anslutas till WSIF vid körning, och det gör att samtalstjänsten kan skjuta upp valet av bindning fram till körning.

Slutligen är WSIF nära baserat på WSDL, så det kan åberopa alla tjänster som kan beskrivas i WSDL.

Om ett komplicerat företagsprogram består av olika programvaror, utvecklade under en tioårsperiod - EJB: er, äldre appar som har åtkomst med Java: s anslutningsarkitektur, SOAP-tjänster som är värd på externa servrar, gammal kod åtkomlig via meddelandemedieprogram - är det nödvändigt att skriva mjukvaruapplikationer som använder alla dessa bitar för att göra användbara saker, men ändå kommer skillnaderna i protokoll, programvarans rörlighet etc. i vägen.

Om programvaran man använder flyttar till en annan server bryts koden. SOAP-bibliotek som man använder förändring - till exempel när man går från att använda Apache SOAP till Apache Axis - så koden bryts eftersom den använder ett nu avskrivet SOAP API. Något som tidigare var tillgängligt som EJB är nu tillgängligt via meddelanden mellanprogram via JMS - igen måste du fixa koden som använder programvaran, eller om en har en EJB som erbjuds som en SOAP-tjänst till externa klienter. Att använda SOAP resulterar i en prestationsstraff jämfört med åtkomst till EJB direkt. SOAP är ett baslinjeprotokoll för plattforms- och språkoberoende, men borde inte java-klienter kunna dra fördel av det faktum att programvaran de har tillgång till verkligen är en EJB? Så dina java-kunder betalar en prestationsavgift eftersom du måste använda SOAP för att rymma dina icke-java-klienter.

WSIF fixar dessa problem genom att tillåta att WSDL används som en normaliserad beskrivning av olika programvara och gör att man kan komma åt denna programvara på ett sätt som är oberoende av protokoll eller plats. Så oavsett om det är SOAP, en EJB, JMS (eller potentiellt. NET och andra programvaror), det finns ett API centrerat kring WSDL som används för att få åtkomst till funktionaliteten, vilket låter en skriva kod som anpassar sig till förändringar enkelt. Separationen av API: n från det faktiska protokollet innebär också att det finns flexibilitet - du kan byta protokoll, plats etc. utan att ens behöva kompilera om din klientkod. Så om din externt tillgängliga SOAP-tjänst blir tillgänglig som en EJB, kan man växla till att använda RMI / IIOP genom att bara ändra tjänstebeskrivningen (WSDL), utan att behöva göra några ändringar i applikationer som använder tjänsten. Du kan utnyttja WSDLs utdragbarhet, dess förmåga att erbjuda flera bindningar för samma tjänst, besluta om en bindning vid körning osv.

Skillnader mellan WSIF och Axis

Axis är en implementering av SOAP. Det inkluderar på serversidan infrastruktur för att distribuera implementering av webbtjänster och sedan dirigera SOAP-meddelanden mellan klienter och dessa implementationer. Den implementerar också JAX-RPC-specifikationen för att åberopa SOAP-tjänster.

WSIF liknar klienten på Axis, genom att den används för att åberopa tjänster. WSIFs API är dock WSDL-driven och protokolloberoende; det tillåter att anslutas protokollspecifik kod ("leverantörer"). För att anropa SOAP-tjänster är WSIF paketerat med en Axis-leverantör, som använder Axis API: er (dvs. JAX-RPC) för att göra anropet. Så WSIF arbetar på en mer abstrakt nivå än Axis.

Skillnader mellan WSIF och JAX-RPC

JAX-RPC är ett API för att åberopa XML-baserade RPC-tjänster - i princip är dess nuvarande räckvidd begränsad till anrop av SOAP-tjänster. WSIF är ett API för att åberopa WSDL-beskrivna tjänster, oavsett om de råkar vara SOAP-tjänster eller inte (till exempel definierar WSIF WSDL-bindningar så att EJB: er, företagsprogramvara som är tillgänglig med JMS eller Java Connector-arkitekturen samt lokala Java-klasser kan alla beskrivs som förstklassiga WSDL-tjänster och åberopas sedan med samma, protokolloberoende WSIF API).

Se även

referenser

externa länkar