Web Services gjennom eksempler Johannes Brodwall
Copyright 2004 – Brodwall IT Services (BITS) Slide 2 Innhold •Hvorfor – integrasjon, det tjenesteorienterte nettet •Hva – XML, SOAP, WSDL og HTTP •Hvordan – Visual Studio.NET, Axis, J2EE 1.4, Ruby
Copyright 2004 – Brodwall IT Services (BITS) Slide 3 Viktige organisasjoner •OASIS (Organisation for the Advancement of Structured Information Standards) –Viktigste bidrag: ebXML •W3C (World Wide Web Consortium) •WS-I (Web-Services Interoperability) •IBM, Microsoft: –Utvikler de fleste delstandardene
Copyright 2004 – Brodwall IT Services (BITS) Slide 4 Fra tcp til the semantic web Sockets FTP/telnet/ gopher Sockets FTP/telnet/ gopher Web Browser http/html Web Browser http/html The Semantic Web Integrasjon av bedriftens siloer 1980-tallet Fremtiden Kommunikasjon Web Service http/soap Web Service http/soap Discovery Samarbeid med partnere Dynamisk transformasjon
Copyright 2004 – Brodwall IT Services (BITS) Slide 5 Hva er Web Services ”A Web Service is application logic that is accessible using standard Internet protocols.” [ Keith Ballinger ] Like components, Web Services represent black-box functionality that can be used and reused without regard to how the service is implemented.
Copyright 2004 – Brodwall IT Services (BITS) Slide 6 Fordeler •INTEGRASJON •Hetrogene parter •Debugbar protokol •Nettverksvennlig teknologi
Copyright 2004 – Brodwall IT Services (BITS) Slide 7 To ting •Arkitektur •Komponentbasert •Distribuert •Åpen •Innkapslet •Tjenesteorientert •Teknologier •SOAP •WSDL •HTTP
Copyright 2004 – Brodwall IT Services (BITS) Slide 8 Tjenesteorientert • Grovkornet • Verdi til ”kunder” • Standardisert grensesnitt In an SOA, resources are made available to other participants in the network as independent services that are accessed in a standardized way. This provides for more flexible loose coupling of resources than in traditional systems architectures. [ ]
Copyright 2004 – Brodwall IT Services (BITS) Slide 9 Bokstavsuppe •XML – eXtensible Markup Language –Standard for å strukturere tekst-dokumenter –Presenterer en hierarkisk struktur •SOAP – Simple Object Access Protocol –XML standards for metodekall –Data som utveksles mellom tjenestene •WSDL – Web Services Definition Language –XML standard for tjenestebeskrivelse –Brukes for å finne ut hvordan en tjeneste skal kalles
Copyright 2004 – Brodwall IT Services (BITS) Slide 10 Eksempel.NET klient.NET server J2EE Server Ruby Server J2EE klient Ruby klient
Copyright 2004 – Brodwall IT Services (BITS) Slide 11 Web Service Servere •Støtte i utviklingsmiljø tar hånd om det meste – nesten som å skrive vanlige klasser •Utvikles som stateless klasser eller metoder i språket •Publiseres automatisk, via en descriptor, eller programmatisk •Normalt vil servermiljøet generere WSDL automatisk
Copyright 2004 – Brodwall IT Services (BITS) Slide 12 Arkitektur (Axis) HTTP applikasjonsserver (Tomcat) Web Service Container (Axis) Our Service Marshall/ unmarshal Management WSDL generation Transport Custom handlers
Copyright 2004 – Brodwall IT Services (BITS) Slide 13 Java Server // HelloWebService.jws // is placed in axis webapp directory // Axis autocompiles JWS-files public class HelloWebService { public String sayHelloTo(String name) { System.out.println("Hello web services says hello to " + name); return "Hello from Axis, " + name; }
Copyright 2004 – Brodwall IT Services (BITS) Slide 14.NET Server using System; using System.Diagnostics; using System.Web.Services; namespace KompisDotNetService { [WebService(Namespace=" ")] public class HelloService : WebService { [WebMethod] public string sayHelloTo(string name) { Debug.WriteLine ("Hello web services says hello to " + name); return "Hello from.NET, " + name; }
Copyright 2004 – Brodwall IT Services (BITS) Slide 15 Ruby Server require 'soap/rpc/standaloneServer' class HelloWorldServer < SOAP::RPC::StandaloneServer def on_init add_method(self, 'hello_world', 'from') end def hello_world(from) puts "Hello web services says hello to " + from "Hello from Ruby, #{ from }" end
Copyright 2004 – Brodwall IT Services (BITS) Slide 16 Web Service klienter •Automatisk genererte ”stubs” for enklere bruk –Nesten som vanlig bruk av klasser •Dynamisk kall •Dynamisk ”discovery” – ikke vist
Copyright 2004 – Brodwall IT Services (BITS) Slide 17.NET Client... private void buttonExec_Click(object sender, System.EventArgs e) { HelloAxis.HelloWebServiceService service = new HelloAxis.HelloWebServiceService(); textBoxResponse.Text = service.sayHelloTo(textBoxName.Text); }...
Copyright 2004 – Brodwall IT Services (BITS) Slide 18 Java Client (JAX-RPC style) // Generated with the Axis WSDL2Java tool import no.brodwall.demo.kompis2004_01_20.HelloServiceLocator; import no.brodwall.demo.kompis2004_01_20.HelloServiceSoap; public class JavaClientOfDotNet { public static void main(String[] args) throws Exception { HelloServiceLocator locator = new HelloServiceLocator(); HelloServiceSoap service = locator.getHelloServiceSoap(); System.out.println(service.sayHelloTo("JAX-RPC client")); }
Copyright 2004 – Brodwall IT Services (BITS) Slide 19 Java Client import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class LowLevelClient { public static void main(String[] args) throws Exception { Service service = new Service(); Call call = (Call)service.createCall(); call.setTargetEndpointAddress( " call.setOperationName("sayHelloTo"); String result = (String)call.invoke(new Object[] { "Simple Axis client" }); System.out.println("Result: " + result); }
Copyright 2004 – Brodwall IT Services (BITS) Slide 20 Ruby Clients # HelloWebService stub is created by wsdl2ruby require 'defaultDriver.rb' service = HelloWebService.new() puts service.sayHelloTo("Ruby") # Manual calling require 'soap/rpc/driver' endpoint = " service = SOAP::RPC::Driver.new(endpoint, nil) service.add_method("sayHelloTo", "name") service.sayHelloTo("Ruby")
Copyright 2004 – Brodwall IT Services (BITS) Slide 21 Invocation Framework •I praksis er den manuelle metoden vanskelig å bruke –Forskjellige servere trenger forskjellig informasjon –Det kan være tidkrevende å sette opp •WSIF ( løser dette ved å dynamisk generere kall- objekter fra WSDLhttp://ws.apache.org/wsif
Copyright 2004 – Brodwall IT Services (BITS) Slide 22 Første inntrykk •Enkel integrasjon av homogene miljøer •Blir mer problematisk med: –Utveksling av komplekse datastrukturer –Bruk av standard typer i forskjellige språk –Exceptions fra serveren
Copyright 2004 – Brodwall IT Services (BITS) Slide 23 SOAP
Copyright 2004 – Brodwall IT Services (BITS) Slide 24 SOAP - request <env:Envelope xmlns:xsd=" " xmlns:env=" " xmlns:xsi=" "> Ruby
Copyright 2004 – Brodwall IT Services (BITS) Slide 25 SOAP - response Hello from Axis, Ruby
Copyright 2004 – Brodwall IT Services (BITS) Slide 26 SOAP meldinger •Består av Envelope, Header og Body •Header kan inneholde protokollutvidelser –Transaksjoner –Sikkerhet –Logging –Kryptering •Body inneholder selve meldingen –Kan også inneholde Faults •Multipart – kan inneholde flere deler
Copyright 2004 – Brodwall IT Services (BITS) Slide 27 Web Services Definition Language •Beskriver tjenester, dataformater og endepunkt •Skal definere ”alt som trengs” for å kunne kommuniserer med tjenesten
Copyright 2004 – Brodwall IT Services (BITS) Slide 28 WSDL - outline
Copyright 2004 – Brodwall IT Services (BITS) Slide 29 WSDL - interface
Copyright 2004 – Brodwall IT Services (BITS) Slide 30 WSDL - implementation
Copyright 2004 – Brodwall IT Services (BITS) Slide 31 WSDL
Copyright 2004 – Brodwall IT Services (BITS) Slide 32 UDDI •Universal Discovery, Directory Integration •Tenkt som ”gule sider” for web services •Forutsetter standardisering på WSDL-nivå • ebservices/library/ws-eight/ ebservices/library/ws-eight/
Copyright 2004 – Brodwall IT Services (BITS) Slide 33 Begrensninger •Datainnhold –Struktur –Spesifikke typer –Standardiserte grensesnitt •Request-response-basert –Ingen callbacks (WS-Callback) –(Normalt) Synkront (S070-S071) •Standarder sent og ikke generelt implementert –Sikkerhet (WS-Security) –Transaksjoner (WS-Transactions, WS-Coordination) –Se
Copyright 2004 – Brodwall IT Services (BITS) Slide 34 Fremtiden slik jeg ser den •WS-Security, WS-Transactions får bredere implementasjoner •UDDI forblir en kuriositet –Bransjestandarder lar vente på seg •Semantic web forblir en drøm
Copyright 2004 – Brodwall IT Services (BITS) Slide 35 Diskusjon •Når er SOAP verd overheaden? •Vil det fungere i våre situasjoner? •Hvordan komme i gang? •Kommer det til å bli standardisering av tjenester? •I hvilken grad ønsker vi dynamisk discovery? –Stoler vi på at programmet velger riktig leverandør? –Vil automatiske ”meglere” krasje ”det frie marked”?
Copyright 2004 – Brodwall IT Services (BITS) Slide 36 Konklusjon •Web services integrerer hetrogene tjenester •Fungere bra for enkle tjenester •Krever mer jobb med komplekse tjenester •Web Services er ment til å være en del av dynamisk discovery
Copyright 2004 – Brodwall IT Services (BITS) Slide 37 •Axis – Apache Web Service rammeverk •JAX-RPC – Java API for XML Remote Procedure Calls •J2EE 1.4 – viktige forbedringer i JAX-RPC •WS-I, WS-Security •The Semantic Web Stikkord