ws-interop: com java .net

33
www.ugidotnet.org workshop WS-Interop: COM Java .NET Pierre Greborio PEWay Microsoft MVP – Solutions Architect http://blogs.ugidotnet.org/pierregreborio

Upload: peyton

Post on 21-Jan-2016

64 views

Category:

Documents


0 download

DESCRIPTION

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, ... - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

WS-Interop: COM Java .NET

Pierre GreborioPEWayMicrosoft MVP – Solutions Architect

http://blogs.ugidotnet.org/pierregreborio

Page 2: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

Sponsor

Page 3: WS-Interop: COM    Java   .NET

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

Page 4: WS-Interop: COM    Java   .NET

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

Page 5: WS-Interop: COM    Java   .NET

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 !

Page 6: WS-Interop: COM    Java   .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, ...

Page 7: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

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

Page 8: WS-Interop: COM    Java   .NET

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 !

Page 9: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

Disaccoppiamento

endpoint.NET

endpointJava

Gate

way

Rem

ote

Faca

de

Page 10: WS-Interop: COM    Java   .NET

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

Page 11: WS-Interop: COM    Java   .NET

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

Page 12: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

SOAP StackTecnologie Java

ApacheSOAP

ApacheAxis 1.x

OracleJAX-RPC

SUNJAX-RPC

IBMJAX-RPC

BEAJAX-RPC

Tecnologie Microsoft

SOAPToolkit x

.NET Framework 1.x

WCF.NET

Framework 2.0W

SE 2

WSE 3

Page 13: WS-Interop: COM    Java   .NET

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

Page 14: WS-Interop: COM    Java   .NET

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

Page 15: WS-Interop: COM    Java   .NET

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

Page 16: WS-Interop: COM    Java   .NET

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)

Page 17: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

Approccio: contract first

Microsoft .NET SUN Java WSDP

File XSD/

WSDLxsd.exe/

Wsdl.exe

xjc.bat

Java2WSDL

Page 18: WS-Interop: COM    Java   .NET

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)

Page 19: WS-Interop: COM    Java   .NET

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

Page 20: WS-Interop: COM    Java   .NET

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

Page 21: WS-Interop: COM    Java   .NET

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

Page 22: WS-Interop: COM    Java   .NET

www.ugidotnet.org workshop

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

Page 23: WS-Interop: COM    Java   .NET

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

Page 24: WS-Interop: COM    Java   .NET

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

Page 25: WS-Interop: COM    Java   .NET

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 );

}

Implementazionepublic 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;

}

}

Page 26: WS-Interop: COM    Java   .NET

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)

Page 27: WS-Interop: COM    Java   .NET

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

Page 28: WS-Interop: COM    Java   .NET

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

Page 29: WS-Interop: COM    Java   .NET
Page 30: WS-Interop: COM    Java   .NET

Chi sono gli MVP?Chi sono gli MVP? Gli MVP sono persone che condividono Gli MVP sono persone che condividono

PASSIONE PER LA TECNOLOGIAPASSIONE PER LA TECNOLOGIA SPIRITO DI COMMUNITYSPIRITO DI COMMUNITY

Il MVP (Most Valuable Professional) Award è stato Il MVP (Most Valuable Professional) Award è stato creato per creato per premiarepremiare e e riconoscerericonoscere il valido il valido contributo di alcuni fra i migliori membri delle contributo di alcuni fra i migliori membri delle Community MicrosoftCommunity Microsoft

per la loro per la loro partecipazionepartecipazione attiva (online ed attiva (online ed offline)offline)

per la per la buona volontàbuona volontà dimostrata nel dimostrata nel condividere le loro esperienze e conoscenzecondividere le loro esperienze e conoscenze

per le loro per le loro ottimeottime conoscenzeconoscenze tecniche tecniche

per le loro per le loro risposte accurate risposte accurate e precisee precise

Page 31: WS-Interop: COM    Java   .NET

CommunityCommunity

I newsgroup sono raggiungibili via:I newsgroup sono raggiungibili via:- WEB (- WEB (http://http://support.microsoft.comsupport.microsoft.com/newsgroups/newsgroups))- Newsreader (- Newsreader (news.microsoft.comnews.microsoft.com o o msnews.microsoft.commsnews.microsoft.com))

Piccole regole e Netiquette:Piccole regole e Netiquette:http://www.microsoft.com/communities/conduct/default.mspxhttp://www.microsoft.com/communities/conduct/default.mspxhttp://groups.google.com/advanced_group_searchhttp://groups.google.com/advanced_group_searchhttp://www.krisopea.it/mvp/http://www.krisopea.it/mvp/Quoting.htmQuoting.htm

Siti MVP:Siti MVP:http://mvp.support.microsoft.comhttp://mvp.support.microsoft.com (sito MVP Internazionale)  (sito MVP Internazionale) http://http://italy.mvps.orgitaly.mvps.org (sito MVP Unofficial) (sito MVP Unofficial)

Page 32: WS-Interop: COM    Java   .NET

Esempi di communityEsempi di community

Newsgroup disponibili:Newsgroup disponibili:

La gerarchia dei newsgroup Microsoft pubblici italiani:La gerarchia dei newsgroup Microsoft pubblici italiani:

microsoft.public.it.bosbs (SBS)microsoft.public.it.bosbs (SBS)

Microsoft.publiv.it.crmMicrosoft.publiv.it.crm

microsoft.public.it.dotnet.aspmicrosoft.public.it.dotnet.asp

microsoft.public.it.dotnet.csharpmicrosoft.public.it.dotnet.csharp

microsoft.public.it.dotnet.frameworkmicrosoft.public.it.dotnet.framework

microsoft.public.it.dotnet.vbmicrosoft.public.it.dotnet.vb

microsoft.public.it.dotnet.framework.webservicesmicrosoft.public.it.dotnet.framework.webservices

microsoft.public.it.dotnet.vc++microsoft.public.it.dotnet.vc++

microsoft.public.it.dotnet.vstudiomicrosoft.public.it.dotnet.vstudio

microsoft.public.it.dotnet.xmlmicrosoft.public.it.dotnet.xml

microsoft.public.it.exchangemicrosoft.public.it.exchange

microsoft.public.it.internet_explorermicrosoft.public.it.internet_explorer

microsoft.public.it.isaservermicrosoft.public.it.isaserver

microsoft.public.it.officemicrosoft.public.it.office

microsoft.public.it.office.accessmicrosoft.public.it.office.access

microsoft.public.it.office.excelmicrosoft.public.it.office.excel

microsoft.public.it.office.frontpagemicrosoft.public.it.office.frontpage

microsoft.public.it.office.outlookmicrosoft.public.it.office.outlook

microsoft.public.it.office.powerpointmicrosoft.public.it.office.powerpoint

microsoft.public.it.office.projectmicrosoft.public.it.office.project

microsoft.public.it.office.publishermicrosoft.public.it.office.publisher

microsoft.public.it.office.visiomicrosoft.public.it.office.visio

microsoft.public.it.office.wordmicrosoft.public.it.office.word

microsoft.public.it.pocketpcmicrosoft.public.it.pocketpc

microsoft.public.it.scriptingmicrosoft.public.it.scripting

microsoft.public.it.sharepoint microsoft.public.it.sharepoint 

microsoft.public.it.sicurezzamicrosoft.public.it.sicurezza

microsoft.public.it.smartphonemicrosoft.public.it.smartphone

microsoft.public.it.sqlmicrosoft.public.it.sql

microsoft.public.it.vbmicrosoft.public.it.vb

microsoft.public.it.win98microsoft.public.it.win98

microsoft.public.it.windowsupdatemicrosoft.public.it.windowsupdate

microsoft.public.it.windowsxpmicrosoft.public.it.windowsxp

microsoft.public.it.winservermicrosoft.public.it.winserver

Page 33: WS-Interop: COM    Java   .NET

Gli MVP…Gli MVP…

Nel mondo:Nel mondo: 2800+ MVP (20 lingue e 80 tecnologie)2800+ MVP (20 lingue e 80 tecnologie) 1500+ MVP da 75 paesi differenti presenti1500+ MVP da 75 paesi differenti presenti

all’MVP Global Summit ’05.all’MVP Global Summit ’05.

In Italia:In Italia: 46 MVP ma il programma è in continua 46 MVP ma il programma è in continua

espansione.espansione.