www.ugidotnet.org
workshop
WS-Interop: COM Java .NET
Pierre Greborio
PEWay
Microsoft MVP – Solutions Architect
http://blogs.ugidotnet.org/pierregreborio
www.ugidotnet.org
workshop
Sponsor
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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 !
www.ugidotnet.org
workshop
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, ...
www.ugidotnet.org
workshop
Principi base
Problemi base di ogni tecnologia usata per
l’interoperabilità:
Intesa sui tipi (dimensione, big-endian, littleendian, ...)
Intesa sulla semantica di invocazione (per
valore, per referenza)
Protocolli di sicurezza
Gestione dello stato
Modelli di transazione, sincronizzazione e
threading
www.ugidotnet.org
workshop
Principi base
Più sono fortemente dipendenti i principi ...
maggiori sono le difficoltà di interoperare
Suggerimento:
Tenere i sistemi il più possibile
disaccoppiati !
www.ugidotnet.org
workshop
Disaccoppiamento
Remote Facade
Gateway
endpoint
.NET
endpoint
Java
www.ugidotnet.org
workshop
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, …
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
SOAP Stack
Tecnologie Java
Apache
SOAP
Apache
Axis 1.x
Oracle
JAX-RPC
SUN
JAX-RPC
BEA
JAX-RPC
IBM
JAX-RPC
Tecnologie Microsoft
.NET
Framework 2.0
WSE 3
.NET
Framework 1.x
WSE 2
SOAP
Toolkit x
WCF
www.ugidotnet.org
workshop
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 !!
www.ugidotnet.org
workshop
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
....
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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)
www.ugidotnet.org
workshop
Approccio: contract first
xsd.exe/
Wsdl.exe
Microsoft .NET
File XSD/
WSDL
xjc.bat
Java2WSDL
SUN Java WSDP
www.ugidotnet.org
workshop
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)
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
Tools
WSE Tracing tool
http://www.gotdotnet.com/workspaces/workspace.aspx?id=ab938e2f-cabf-4145b0e9-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-CEEC4088-9753-86F052EC8450&displaylang=en
www.ugidotnet.org
workshop
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-CEEC4088-9753-86F052EC8450&displaylang=en
Office Web Services Toolkit
http://www.microsoft.com/downloads/details.aspx?FamilyID=fa36018a-e1cf48a3-9b35-169d819ecf18&DisplayLang=en
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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;
}
}
www.ugidotnet.org
workshop
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)
www.ugidotnet.org
workshop
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
www.ugidotnet.org
workshop
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 partecipazione attiva (online ed
offline)
per la buona volontà dimostrata nel
condividere le loro esperienze e conoscenze
per le loro ottime conoscenze tecniche
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:
microsoft.public.it.bosbs (SBS)
Microsoft.publiv.it.crm
microsoft.public.it.dotnet.asp
microsoft.public.it.dotnet.csharp
microsoft.public.it.dotnet.framework
microsoft.public.it.dotnet.vb
microsoft.public.it.dotnet.framework.webservices
microsoft.public.it.dotnet.vc++
microsoft.public.it.dotnet.vstudio
microsoft.public.it.dotnet.xml
microsoft.public.it.exchange
microsoft.public.it.internet_explorer
microsoft.public.it.isaserver
microsoft.public.it.office
microsoft.public.it.office.access
microsoft.public.it.office.excel
microsoft.public.it.office.frontpage
microsoft.public.it.office.outlook
microsoft.public.it.office.powerpoint
microsoft.public.it.office.project
microsoft.public.it.office.publisher
microsoft.public.it.office.visio
microsoft.public.it.office.word
microsoft.public.it.pocketpc
microsoft.public.it.scripting
microsoft.public.it.sharepoint
microsoft.public.it.sicurezza
microsoft.public.it.smartphone
microsoft.public.it.sql
microsoft.public.it.vb
microsoft.public.it.win98
microsoft.public.it.windowsupdate
microsoft.public.it.windowsxp
microsoft.public.it.winserver
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.