06. december 2004 - 12:41Der er
9 kommentarer og 1 løsning
SOAP i stedet for RMI
Hej Eksperter...Der er noget jeg ikke forstår!
Jeg sider og kikker på nogle forskellige teknologier til et P2P-program som jeg godt nok allerede har lavet ved at bruge JavaSockets. Men nu sidder jeg og reflektere lidt over hvordan man ellers kunne have gjort det. SOAP er god fordi at teknologien benytter http til transport og denne transportform kan firewalls jo som bekendt godt lide. Okay..hvorfor har jeg så ikke lavet mit program med SOAP i stedet for Sockets??? Det er det jeg tænker over lige nu.
Jeg kan forstå et SOAP fungerer ved at opbjekter kommunikere ved at sende XML-"beskeder" via netværket. Men hvis jeg nu laver en server og en klient-klasse i Java.
Hvordan oversættes relevant javakode til XML-beskeder?
I CORBA har man jo en ORB som snakker sammen med programmet på hver enkelt maskine, men hvad heder SOAPS's ORB???
Der må også være en eller anden "lytter" der er sat til at lytte på om en SOAP-besked ankommer på de to maskiner der snakker sammen vha. SOAP. Hvordan lyttes der på SOAP beskedder?
Jeg har ledt efter en simpel model der viser SOAP. Kender i en fin tegning på nettet?
web services (SOAP over HTTP) har nogle store fordele: - sprog og platform uafhængig - HTTP er nem at få gennem firewalls etc. men der er selvfølgelig også nogle ulemper: - det koster en del performance at konvertere til og fra XML - HTTP protokollen har nogle restriktioner som f.eks. at al interaktion initieres fra client
Du kan principeilt godt skrive koden der konverterer til og fra XML selv, men det vil være spild af tid. Der er biblioteker som kan gøre det. Bruger du f.eks. Axis web service toolkit så skriver du bare en klasse med metoder og deployer den, så genererer Axis selv den nødvendige skeleton kode og WSDL filen. Og på client siden kan du også generere stub kode udfra URL til WSDL. D.v.s. at du ser ikke noget som helst til XML.
Server siden af en web services skal hostes. For en java web service betyder det i en servlet container som f.eks. Tomcat. Og det er den som lytter for requests.
WSDL er XML som beskrover web servicen (metode navne og argumenter).
Ja - Axis kommer med et tool wsdl2java som man starter med URL'en for WSDL'en som argument og så genererer den en stub, så man kan kalde web servicen med normale kald.
I modsætning til CORBA hvor "ligeværdige" komponenter bruger hinanden, så er der i web services en client og en server. Eller flere client og en server.
Client(erne) skal kende serveren.
Web services har noget der hedder UDDI som er et directory over web services, men jeg tvivler på at det er relevant for dig.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.