1 / 33

WS-Interop: COM  Java  .NET

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, ...

peyton
Download Presentation

WS-Interop: COM  Java  .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WS-Interop: COM  Java .NET Pierre Greborio PEWayMicrosoft MVP – Solutions Architect http://blogs.ugidotnet.org/pierregreborio

  2. Sponsor

  3. 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

  4. 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

  5. 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 !

  6. 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, ...

  7. 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

  8. Principi base • Più sono fortemente dipendenti i principi ... maggiori sono le difficoltà di interoperare Suggerimento: Tenere i sistemi il più possibile disaccoppiati !

  9. Gateway Remote Facade Disaccoppiamento endpoint .NET endpoint Java

  10. 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, …

  11. 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

  12. 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

  13. 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 !!

  14. 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 • ....

  15. 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

  16. 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)

  17. Approccio: contract first File XSD/ WSDL xjc.bat Java2WSDL xsd.exe/ Wsdl.exe Microsoft .NET SUN Java WSDP

  18. 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)

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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; } }

  26. 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)

  27. 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

  28. 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

  29. 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

  30. 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)

  31. Esempi di community • Newsgroup disponibili: La gerarchia dei newsgroup Microsoft pubblici italiani:

  32. 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.

More Related