programmera.net -> webservice -> normal     för utskrift      info@programmera.net

Om webbtjänster

1. Vad är en webbtjänst?
2. Syftet med webbtjänster
3. Allmänna fördelar med webbtjänster?
4. Webbtjänster jämfört med Corba
5. Nackdelar med webbtjänster
6. Måste det vara så svårt?

1. Vad är en webbtjänst?

Webbtjänster har hamnat mitt i centrum av den nya SOA-vågen (Service Oriented Architecture). Den gamla SOA-vågen baserade sig på Corba, se nedan för en jämförelse mellan webbtjänster och Corba. Det finns många definitioner av webbtjänster, men egentligen bara en som är relevant, nämligen följande:

.
Definition Beskrivning
Webbtjänst  En appliaktion som överensstämmer med WS-I Basic Profile 1.0

WS-I Basic Profile (BP) är alltså en specifikation som försöker ringa in exakt vad en webbtjänst är. Fördelen med att använda BP som definition är att integration mellan heterogena plattformar underlättades avsevärt eftersom:

  • BP deklarerar exakt vilka specifikationer som måste implementeras av plattformen.
  • BP utfärdar begränsningar av de ingående specifikationerna. På detta sätt blir de mindre generella och därför lättare att implementera.
BP beskrivs på sidan  WS-I Basic Profile 1.0 .

2. Syftet med webbtjänster

Syftet med webbtjänster är att underlätta integration mellan heterogena (olika sorters) plattformar. Ett lite finare ord för detta är "interoperability" som IEEE definierar enligt följande:

.
Definition Beskrivning
Interoperability  The ability of two or more systems or components to exchange information and to use the information that has been exchanged.

3. Allmänna fördelar med webbtjänster?

I boken Designing Web Services with the J2EE 1.4 Platform (Sun) talar man om dessa fördelar med webbtjänster:

  1. Integration mellan olika plattformar (interoperability): Största fördelen med webbtjänster är troligtvis att olika plattformar (operativsystem och programmeringsspråk) kan skicka meddelanden och anropa till varandra. Att detta över huvud taget är möjligt beror på att webbtjänster har sådant enormt stöd hos plattformsleverantörerna, så leverantörerna bygger in stöd för webbtjänster i sina produkter.
  2. Fler klienttyper: (Detta är en utvidgning av punkten ovan) En webbtjänst kan ta emot anrop från vilken klienttyp som helst som kan anropa webbtjänsten. Detta innebär att en webbtjänst t.ex. kan ha en webbapplikation som klient, en mobiltelefon eller en tung klient skriven i t.ex. C# eller Java Swing.
  3. Integration med existerand system: Att införa webbtjänster betyder inte att man måste skriva om redan exirterande program, man kan bygga webbtjänsten som ett skal ovanpå det gamla programmet. För de flesta företag är det orimligt att börja använda en teknologi som kräver att all gammal kod måste skrivas om.
  4. Affärstjänster över webben: Man kan publicera affärstjänster så att organisationens partner kan utnyttja tjänsterna över webben. Något som kanske inte har varit så enkelt tidigare.
  5. Valfrihet: Att webbtjänster är standardiserade har öppnat en marknad för verktyg och teknologier som bygger på webbtjänster. Dessa generella verktyg ersätter de proprietära verktyg som byggts för de proprietära integrationerna.
  6. Produktiv programmering: Innan webbtjänster slog igenom förlitade sig företag på olika inte alltid kompatibla tekniker. Arbetet med att integrera dessa tekniker tvingar programmeraren att hantera en mängd programmeringsmodeller. Genom att erbjuda en gemensam standard för integration hjälper webbtjänster till att höjja produktiviteten för programmerare.
En av dessa punkter bör understrykas, och det är att webbtjänster har ett mycket stort stöd bland storföretagen, något som är en förutsättning för att en standard ska få genomslag.

4. Webbtjänster jämfört med Corba

Webbtjänster är inte den första teknologi som implementerar SOA. Corba är ett tidigare försök att uppnå samma sak. Varför är webbtjänser så mycket bättre än redan existerande integrationstekniker? Dessa två fördelar, tror jag, är de nyckelfaktorer som gjort att storföretagen har övergett Corba till förmån för webbtjänster:

  • Icke binär överföring: Webbtjänster underlättar integration mellan olika plattformar eftersom man skickar meddelanden som lättläst (hmm?) text, i from av XML. Just det faktum att meddelandena som sänds faktiskt går att läsa av människor (inte är binära) underlättar felsökning, en möjlighet som man inte har med Corba.
  • Utnyttjar existerande arkitektur: Man kan man driftsätta webbtjänster på vanliga applikationsservrar, en arkitektur som redan existerar på företagen. Det är inte helt självklart hur man implementerar en Corba-tjänst i t.ex. PHP.

5. Nackdelar med webbtjänster

Det finns två uppenbara nackdelar:

  • Dålig presanda: Att överföra all information i form av XML har ett pris och det är att prestandan på överföringen är mycket sämre om man jämför med binära protokoll. Här räknar inte bara med att XML är ganska luftig text, vilket stjäl mycket bandbredd, men även allt arbetet för processorn som krävs för att parsa XML-en.
  • Många valmöjligheter ger hög komplexitet: I och med att de som skrivit specifikationerna för webbtjänster valt att i så stor utsträckning som möjligt hålla alla dörrar öppna, är webbtjänster idag en ganska komplex teknik att lära sig. Att webbtjänster är "för akademiskt" kan vara ett hinder för att det ska bli affärsmässigt rätt att utnyttja.

6. Måste det vara så svårt?

När man börjar skrapa på ytan av tekniken för webbtjänster upptäcker man snabbt att det finns en djungel av förkortningar och specifikationer man förväntas förstå.

  • Måste det vara så svårt? Tyvärr är nog svaret "Ja".
Tänk på att vi försöker skicka meddelanden mellan olika plattformar på ett standardiserat sätt som ska stödja många protokoll. All denna flexibilitet i ramverket genererar en komplexitet i standardiseringarna. Webbtjänster hanterar en komplexitet som går långt utöver vad ett rent proprietärt protokoll behöver befatta sig med.