330 likes | 558 Views
WS-Interop: COM Java .NET. Pierre Greborio PEWay Microsoft MVP – Solutions Architect http://blogs.ugidotnet.org/pierregreborio. Sponsor. Perchè si parla di interoperabilità ?. Perchè nessuna applicazione è un’isola Perchè chi fa la contabilità non fa anche il CRM, ...
E N D
WS-Interop: COM Java .NET Pierre Greborio PEWayMicrosoft MVP – Solutions Architect http://blogs.ugidotnet.org/pierregreborio
Perchè si parla di interoperabilità ? • Perchè nessuna applicazione è un’isola • Perchè chi fa la contabilità non fa anche il CRM, ... • Perchè dobbiamo migrare la piattaforma/soluzione e non possiamo farlo in poco tempo • Perchè lo chiede il cliente e quindi il capo
Java vs .NET vs COM • Microsoft afferma che .NET è meglio di Java • SUN e IBM affermano che Java è meglio di .NET • Le applicazioni small business usano molto COM e .NET • Le applicazioni enterprise usano molto COBOL e Java
Java vs .NET vs COM • Gartner afferma che fra 10 anni l’enterprise userà sia Java che .NET (50%-50%) • COM e COBOL sono due specie in via di estinzione...anche per chi usa MS Office Risultato: Impariamo a far dialogare Java con .NET !
Vari livelli di interoperabilità • Presentation interoperability: condivisione dello stato della sessione • Business interoperability: EJB chiama COM+ e viceversa, COM+ chiama .NET,... • Resource interoperability: Database, message brokers, ...
Principi base • Problemi base di ogni tecnologia usata per l’interoperabilità: • Intesa sui tipi (dimensione, big-endian, little-endian, ...) • Intesa sulla semantica di invocazione (per valore, per referenza) • Protocolli di sicurezza • Gestione dello stato • Modelli di transazione, sincronizzazione e threading
Principi base • Più sono fortemente dipendenti i principi ... maggiori sono le difficoltà di interoperare Suggerimento: Tenere i sistemi il più possibile disaccoppiati !
Gateway Remote Facade Disaccoppiamento endpoint .NET endpoint Java
Tre modi per interoperare • Resource based: • Database : tutti conoscono SQL • File system : XML, serializzazione Java/J# • Message brokers : Biztalk, MQSeries, ... • Out-of-process • Protocolli base: HTTP, SMTP/POP3, socket • RPC binario: CORBA, COM Interop, ... • Web Services • In-process • JVM-CLR: http://www.ikvm.net/, http://weblogs.asp.net/dgonzalez/archive/2003/09/23/28869.aspx, …
Out-of-process • Web Services • Un modo per far comunicare due endpoint a prescindere dalla tecnologia usata per l’implementazione • Basata su standard approvati universalmente quali XML, SOAP, WSDL, UDDI, WSsec, ... • Non privo di problemi di interoperabilità • Spesso richiede scelte tecnologiche importanti
SOAP Stack Tecnologie Java Apache SOAP Apache Axis 1.x Oracle JAX-RPC SUN JAX-RPC BEA JAX-RPC IBM JAX-RPC Tecnologie Microsoft SOAP Toolkit x .NET Framework 1.x .NET Framework 2.0 WCF WSE 2 WSE 3
Scenario tipo • Sviluppatore java implementa una soluzione • Crea un web service Java • Referenzia il progetto .NET al WSDL • Crea il client .NET • ERRORE !! • Sviluppatore .NET implementa una soluzione • Crea un web service .NET • Referenzia il progetto Java al WSDL • Crea il client Java • ERRORE !!
Problemi riscontrati • Il message format è incompatibile • I numeri in virgola mobile hanno una precisione defferente • .NET non supporta le date nulle • Manca il supporto al DataSet in Java • Manca il supporto dei WebRowSets in .NET • Gli algoritmi di sicurezza sono incompatibili • ....
WS-Interoperability • WS-I è un’organizzazione con circa 130 membri (Microsoft, SUN, Oracle, SAP, IBM, BEA, webMethods, HP, ...) • WS-I cerca di definire uno standard per garantire l’interoperabilità • Definisce delle raccomandazioni anche sullo sviluppo e l’ambiente di sviluppo
Raccomandazioni principali • Tenere sempre aggiornate le librerie “compatibili” • Pensare alle eccezzioni : SOAP fault • Usare strumenti di debugging, tracing e monitoring • Usare il framework per controllare le policy ed il metadata • Modellare partendo dallo schema (XSD)
Approccio: contract first File XSD/ WSDL xjc.bat Java2WSDL xsd.exe/ Wsdl.exe Microsoft .NET SUN Java WSDP
E COM ? • SOAP Toolkit è di fatto dismesso ! • Non bisogna dimenticare “Office Web Services Toolkit” • I toolkit non supportano bene: • Strutture dati complesse • Sicurezza a livello applicativo (WS-Security)
Demo • Web Service Java • Tomcat 5.0 • Axis 1.2.1 • Client .NET • Visual Studio .NET 2003 • Client VBScript • SOAP Toolkit 3.0 • Office Web Services Toolkit
Sicurezza - SSL • Pro • Indipendente dalle librerie • Contro • Gestisce solo la sicurezza punto-punto • Non è possibile applicare la sicurezza ad una sola parte del messaggio • La sicurezza è rimossa dopo il layer di trasporto • Utilizzabile solo per il protocollo TCP
Sicurezza – WS-Security • Pro • Gestisce la sicurezza a livello applicativo • Funziona su qualsiasi protocollo • E’ molto flessibile • Contro • E’ più complessa l’implmementazione/configurazione • Nel mondo Java dipende fortemente dal container
Tools • WSE Tracing tool • http://www.gotdotnet.com/workspaces/workspace.aspx?id=ab938e2f-cabf-4145-b0e9-dbeeaf51dbe5 • WSCF (Web Service Contract First) • http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html • WS-I Testing tools • http://www.ws-i.org/deliverables/workinggroup.aspx?wg=testingtools • SOAP Toolkit 3.0 • http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en
Software utilizzato per le demo • Visual Studio .NET 2003 • http://www.microsoft.com/italy/msdn/prodotti/vstudio/default.mspx • Axis 1.2.1 • http://ws.apache.org/axis/ • Tomcat 5.5.12 • http://jakarta.apache.org/tomcat/index.html • SOAP Toolkit 3.0 • http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en • Office Web Services Toolkit • http://www.microsoft.com/downloads/details.aspx?FamilyID=fa36018a-e1cf-48a3-9b35-169d819ecf18&DisplayLang=en
Riferimenti • MSDN Web Services Interoperability • http://msdn.microsoft.com/webservices/webservices/building/interop/default.aspx • Java Web Services • http://java.sun.com/webservices/index.jsp • Apache projects • http://www.apache.org • WS-I • http://www.ws-i.org
How-to: WS Java con Axis • Immaginiamo una applicazione Java che calcola il numero di Fibonacci • Definizione dell’interfaccia public interface Fibonacci { public int calculateFibonacci( int num ); } • Implementazione public class FibonacciImpl { public int calculateFibonacci( int num ) { if (num <= 0) return 0; if (num == 1) return 1; int previous1 = 1, previous2 = 0, fib = 0; for (int i=2; i <= num; i++) { fib = previous1 + previous2; previous2 = previous1; previous1 = fib; } return fib; } }
How-to: generazione WSDL • Creaiamo il service contract (WSDL) • java org.apache.axis.wsdl.Java2WSDL -o fib.wsdl -l"http://localhost:8080/axis/services/fibonacci" -n urn:fibonacci -p"fibonacci" urn:fibonacci fibonacci.Fibonacci • Java2WSDL crea il WSDL partendo dalla definizione dell’interfaccia (fibonacci.Fibonacci)
How-to: generazione WS • Creaiamo una facade (WS) • java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -p fibonacci.ws fib.wsdl • WSDL2Java crea: • L’interfaccia remota del contratto (Fibonacci) • L’implementazione dell’interfaccia remota (FibonacciBindingImpl) • L’interfaccia del servizio (FibonacciService) • L’implementazione dell’interfaccia del servizio (FibonacciServiceLocator) • Bisogna compilare: • javac fibonacci\ws\*.java
How-to: deployment • Creaiamo il package jar • jar cvf fib.jar fibonacci/*.class fibonacci/ws/*.class • Lo installiamo nella virtual directory: • %TOMCAT_HOME%/webapps/axis/WEB-INF/lib • Deployment: • java org.apache.axis.client.AdminClient deploy.wsdd • Riavviate il servizio • Il servizio è pronto all’uso
Chi sono gli MVP? • Gli MVP sono persone che condividono • PASSIONE PER LA TECNOLOGIA • SPIRITO DI COMMUNITY • Il MVP (Most Valuable Professional) Award è stato creato per premiare e riconoscere il valido contributo di alcuni fra i migliori membri delle Community Microsoft • per la loro partecipazioneattiva (online ed offline) • per la buona volontà dimostrata nel condividere le loro esperienze e conoscenze • per le loro ottimeconoscenze tecniche • per le loro risposte accurate e precise
Community • I newsgroup sono raggiungibili via: - WEB (http://support.microsoft.com/newsgroups) - Newsreader (news.microsoft.com o msnews.microsoft.com) • Piccole regole e Netiquette: http://www.microsoft.com/communities/conduct/default.mspx http://groups.google.com/advanced_group_search http://www.krisopea.it/mvp/Quoting.htm • Siti MVP: http://mvp.support.microsoft.com (sito MVP Internazionale) http://italy.mvps.org (sito MVP Unofficial)
Esempi di community • Newsgroup disponibili: La gerarchia dei newsgroup Microsoft pubblici italiani:
Gli MVP… • Nel mondo: • 2800+ MVP (20 lingue e 80 tecnologie) • 1500+ MVP da 75 paesi differenti presenti all’MVP Global Summit ’05. • In Italia: • 46 MVP ma il programma è in continua espansione.