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

WS-Interop: COM Java .NET