architetture architetture n-tier com (component object model) e dcom (distributed com) soa (service...
TRANSCRIPT
ARCHITETTURE
• Architetture N-Tier
• COM (Component Object Model) e DCOM (Distributed COM)• SOA (Service Oriented Architecture)• Enterprise Java Beans• Microsoft .NET• Web Services
Applicazioni Web-based e non
Elementi di base di un’applicazione• I dati da trattare (dati sugli utenti, sul servizio offerto,
etc.)• Logica applicativa (business logic), ovvero le
funzionalità che l’applicazione deve offrire, il tipo di trattamento dei dati previsto (quali operazioni si possono fare), etc.
• Interfaccia utente – interfaccia web (e.g., per browser, o testuale)
– stand-alone (applicazione locale alla macchina su cui gira)
Architetture delle applicazioni
• Monoliti• Client/server (two-tier)• Three-tier• N-tier
Monoliti (IT stovepipe) - I
• Popolari ai tempi dei mainframe• Monoliti:
– pezzi di codice indivisibili
– controllavano l’intera logica dell’applicazione, dalla gestione (e memorizzazione) dei dati, fino all’interfaccia utente
– gestivano applicazioni stand-alone
• Popolarità dovuta a:– mainframe adatti ad eseguire pochi processi stand-alone,
anzichè diversi processi comunicanti
– non c’erano ancora i database
Monoliti (IT stovepipe) - II
Enterprise
User interface
Logic
Data Management
Architetture client/server - I• Dalla fine degli anni ‘70 alla metà degli anni ‘80
– Diffusione di server più piccoli ed economici dei mainframe, e di workstations e PC
– Diffusione di RDBMS
• Suddivisione delle applicazioni in due parti:– backend (server): gestione di database (+ o – complessi) e
dei compiti di manipolazione dei dati– frontend (client): gestione interfaccia utente maggiore scalabilità, rispetto a monoliti (carico
computazionale distrbuito sui client) sviluppo più veloce di applicazioni che accedono agli
(stessi) dati
Architetture client/server - III
Enterprise
User interface
Logic
Data Management
Client Client Client
Server
Architetture client/server - IISvantaggi:• Traffico di messaggi intenso (frontend comunica
continuamente con server dati)• Logica di business non gestita in componente separata
dell’architettura: suddivisa tra frontend e backend client e server di applicazione dipendono l’uno
dall’altro– difficile riutilizzare interfaccia in servizio che accede a dati
diversi– difficile utilizzare DB da frontend diversi– tendenza a cablare la business logic nell’interfaccia utente
cambio di logica significa cambiare anche interfaccia
Architetture client/server - IV
• Problema: mancato riconoscimento dell’importanza della business logic– Es: servizio accessibile da più device (telefonino, desktop)
stessa logica, interfaccia diversa
Enterprise
User interface
Logic
Data Management
ClientNuovo Client Nuovo Client
Server
AdapterAdapter
Architetture three-tier - I
• Introdotte all’inizio degli anni ‘90
• Business logic trattata in modo esplicito:– livello 1: gestione dei dati (DBMS, file XML, …..)
– livello 2: business logic (processamento dati, …)
– livello 3: interfaccia utente (presentazione dati, servizi)
• Ogni livello ha obiettivi e vincoli di design propri
• Nessun livello fa assunzioni sulla struttura o implementazione degli altri:– livello 2 non fa assunzioni su rappresentazione dei dati, né
sull’implementazione dell’interfaccia utente
– livello 3 non fa assunzioni su come opera la business logic ..
Architetture three-tier - II
• Non c’è comunicazione diretta tra livello 1 e livello 3– Interfaccia utente non riceve, né inserisce direttamente dati
nel livello di data management
– Tutti i passaggi di informazione nei due sensi vengono filtrati dalla business logic
• I livelli operano senza assumere di essere parte di una specifica applicazione applicazioni viste come collezioni di componenti
cooperanti ogni componente può essere contemporaneamente parte
di applicazioni diverse (e.g., database, o componente logica di configurazione di oggetti complessi)
Architetture three-tier - III
BusinessRules
Enterprise
User interfacePresentation layer
LogicBusiness layer
Data ManagementData layer Data
ServiceData
ServiceData
Service
BusinessRules
BusinessRules
MotifClient
WindowsClient
TelephonyClient
MacClient
Architetture three-tier - IV
User Interface
Application Logic
DBXML
Documents
Dataproviders
Serviceprovider
Serviceconsumer
Directoryservice
Vantaggi di architetture three-tier - I
• Flessibilità e modificabilità di sistemi formati da componenti separate– componenti utilizzabili in sistemi diversi
– modifica di una componente non impatta sul resto del sistema (a meno di cambiamenti negli API)
– ricerca di bug più focalizzata (separazione ed isolamento delle funzionalità del sistema)
– aggiunta di funzionalità all’applicazione implica estensione delle sole componenti coinvolte (o aggiunta di nuove componenti)
Vantaggi di architetture three-tier - II
• Interconnettività– API delle componenti superano il problema degli adattatori
del modello client server N interfacce diverse possono essere connesse allo stesso servizio etc.
– Facilitato l’accesso a dati comuni da parte di applicazioni diverse (uso dello stesso gestore dei dati da parte di business logics diverse)
• Gestione di sistemi distribuiti– Business logic di applicazioni distribuite (e.g., sistemi
informativi con alcuni server replicati e client remoti) aggiornabile senza richiedere aggiornamento dei client
– Aggiornamento dei client comunque costoso
Vantaggi di architetture three-tier - III
• Applicazioni distribuite geograficamente– Data server centrale
– Business logic gestita da server logici regionali
– Client remoti (ev. con business logic per maggior scalabilità)
• Per ridurre traffico di rete e latency del servizio, anche il data server centrale può essere replicato (ma, gestione consistenza dati)
Svantaggi di architetture three-tier - I
• Dimensioni delle applicazioni ed efficienza– Pesante uso della comunicazione in rete latenza del
servizio
– Comunicazione tra componenti richiede uso di librerie SW per scambio di informazioni codice voluminoso
• Legacy software– Molte imprese usano software vecchio (basato su modello
monolitico) per gestire i propri dati
• difficile applicare il modello three-tier per nuove applicazioni
• introduzione di adapters per interfacciare il legacy SW
Three-tier è concettuale, non fisico
Si possono implementare architetture three-tier su due livelli di macchine, o anche su uno solo...
Data and Logic Server Clients
User Interface
User Interface
DataComponents
LogicRules
Architetture n-Tier - I
Permettono configurazioni diverse. Elementi fondamentali:
• Interfaccia utente (UI)– gestisce interazione con utente
– può essere un web browser, WAP minibrowser, interfaccia grafica, …
• Presentation logic– definisce cosa UI presenta e come gestire le richieste utente
• Business logic– gestisce regole di business dell’applicazione
Architetture n-Tier - II
• Infrastructure services– forniscono funzionalità supplementari alle componenti
dell’applicazione (messaging, supporto alle transazioni, …)
• Data layer: – livello dei dati dell’applicazione
Architetture n-Tier - III
Browser
DBXML
Documents
Presentation Logic
Business LogicServices
Application client
Firewall
Applicazione Web-based tipica - I
• Interfaccia utente: gestita sul browser utente• Logica applicativa: gestita sul server, che si
interfaccia al web attraverso Web Server• Livello dei dati: su database, eventualmente
localizzato su macchina diversa da quella del Web Server, per questioni di sicurezza
WebServer Business logic
Browserutente
HTTP
Applicazione Web-based tipica - II
• Richiesta di pagina HTML statica (pagina HTML memorizzata nel file system dell’applicazione – il codice della pagina non viene generato eseguendo programmi applicativi sul server)
WebServer
Local File System
/htdocs/hello.html
Request: http://patzer/hello.html
Response: HTML code
Browserutente
Applicazione Web-based tipica - III
• Richiesta di pagina dinamica (pagina HTML generata dinamicamente, sulla base della richiesta del client – codice della pagina generato eseguendo programmi applicativi sul server)
WebServer Business logic
Request: http://www.di.unito.it/service1.html
Response: pagina HTML di risposta, con eventuali linke bottoni per continuare interazione
Browserutente
Browser Web• Può essere visto come interfaccia utente universale
– Invoca Web Server per richiedere pagine statiche o dinamiche
– Riceve contenuti web da Web Server invocato e li presenta sulla macchina dell’utente• Browser moderni (MS Explorer, Netscape Navigator, …)
interpretano codice HTML• Alcuni browser interpretano codice XML
– Può eseguire script (e.g., javascript) localmente, per effettuare semplici computazioni (e.g., controllo correttezza input utente)
– Può scaricare plug-in da Web Server per eseguire programmi localmente (e.g., animazioni Flash o altro)
Web Server
• Programma che – gira su una macchina server accessibile da internet – resta in ascolto di richieste (da parte di client web)
su porta HTTP. E.g., http://www.di.unito.it:8080– gestisce le richieste che arrivano (recupera pagina
html richiesta, esegue programmi, invoca programmi associati a servizi richiesti, etc.)
– restituisce a client una risposta (risultato della richiesta, messaggio di errore)
La Piattaforma J2EE
• J2SE: Java 2 Platform, Standard Edition. – Ambiente runtime per esecuzione di applicazioni Java e
insieme di API (Application Programming Interface) per sviluppare applicazioni di vario tipo (applets, applicazioni stand-alone, …)
• J2EE: Java 2 Platform, Enterprise Edition:– framework per lo sviluppo di applicazioni server-side
complesse
• J2ME: Java 2 Platform, Micro Edition:– framework per lo sviluppo di applicazioni su micro
device (PDA, telefonini Java-enabled, etc.)
Proprietà
• J2EE: adatta allo sviluppo di applicazioni Web-based a livello di impresa, e.g., per commercio elettronico
• Il suo competitor è Microsoft .net• Impresa (enterprise): organizzazione di business• Enterprise software applications: applicazioni SW
che facilitano la gestione delle attività di impresa– interagire con clienti e partners via Internet
– facilitare l’interazione tra le varie parti di un’impresa, eventualmente distribuite geograficamente
– gestione del business: resource planning, gestione inventari, ...
Caratteristiche di applicazioni “enterprise”
• Necessità informative: spesso le stesse informazioni sono utilizzate sotto forma diversa dai consumatori attività di business diverse processano le stesse informazioni, ma utilizzando formati diversi
• Complessità dei processi di business: necessità di raccogliere, gestire e condividere informazioni, basandosi su una logica complessa
• Eterogeneità delle applicazioni: un’impresa utilizza molte applicazioni basate su architetture e tecnologie diverse (legacy software)
Requisiti di gestione del software d’impresa
• Velocizzazione del processo di sviluppo delle applicazioni: cambiano gli standard, le tecnologie, le applicazioni devono entrare in uso velocemente
• Affidabilità e disponibilità: il SW deve essere sempre accessibile (Web) ed essere affidabile (e.g., transazioni)
• Sicurezza: protezione delle informazioni dell’azienda • Scalabilità: accesso efficiente a risorse, tolleranza al
carico di milioni di utenti (Web)• Integrazione: le applicazioni vanno integrate nei
sistemi informativi già esistenti
J2EE• Si sono sviluppate soluzioni diverse per affrontare i
vari problemi• J2EE: permette di integrare tali soluzioni e facilita lo
sviluppo del SW– Modello di programmazione con approccio alla costruzione
di applicazioni basato su API– Infrastruttura che permette di eseguire le applicazioni in
modo efficiente e scalabile• basato su Java portabile• basato sul concetto di Contenitore servizi di gestione di base
(messaggi, transazioni, ciclo di vita delle componenti, …) forniti dall’infrastruttura
• Modulare, componenti riusabili
L’evoluzione del Client/Server
CLIENTSERVERPC
stand alonePC
networking
End User
HOSTsolution
MINIsolution
Enterprise
Allocazione Delle Componenti
DataManagement
Logic/Control
Presentation
SERVER
CLIENT
NETWORK
Classificazione delle soluzioni Client/Server
Data
Logic
Presentation
Data
Logic
Presentation
Data
Logic
Presentation
Logic
Data
Logic
Presentation
Data
Logic
Presentation
Data
Char. Terminal X-Terminal PC PC PC
TimesharingClient
PresentationDistributedApplication
CentralDatabase
DistributedDatabase
Server
Client
Centralized Decentralized
Le “ere” del Client/Server
Da: Byte Aprile 95
HTML Dinamico?????
InterneInternet t
(htpp)(htpp)
WebWebServerServer
HTMLHTML
JSPJSP servletservlet BusinessBusinessObjectsObjects DATIDATI
servletservlet
browserbrowser1. richiesta .jsp1. richiesta .jsp
4. ritorna html4. ritorna html
2. richiesta dati2. richiesta dati
3. generazione html3. generazione html
Tier 1Tier 1 Tier 2Tier 2 Tier 3Tier 3
Application server
Architetture Two-Tiers e Three-Tiers
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
DB
DB
DB
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
Market ShareMarket Share
1 s t Q t r 2 n d Q t r0
2 0
4 0
6 0
8 0
1 s t Q t r 2 n d Q t r
DB
DB
DB
minore uso delle risorse
suddivisionepiù razionale dei compiti
livello intermedio
Architetture Multi-TierDatabasDatabasee ServersServers
NC . NC . NetPCNetPC PC PC
ClientClient MobilMobilee
Mail/Mail/GroupwareGroupwareServersServers
MainframMainframeeSystemsSystems
Interfaccia Utente
Logica Applicativa
Dati
Logica Logica ApplicativaApplicativa
Web+ActiveXWeb+ActiveXo applet Javao applet Java
Web+script lato serverWeb+script lato server(ASP, JSP o servlet)(ASP, JSP o servlet)
Visual Basic, C++, Delphi Visual Basic, C++, Delphi Client/ServerClient/Server
Lotus Notes, ExchangeLotus Notes, ExchangeGroupwareGroupware
Applicazioni real-timeApplicazioni real-timebatch, OLTP, M&Qbatch, OLTP, M&Q
PersistenzaPersistenzadei datidei dati
Architetture Three-Tier: molti tipi di interfacce utente, la stessa applicazione
Componenti• Possiedono interfacce standard (almeno un per
l’introspezione)• Applicazioni non complete• Distribuibili separatamente• Utilizzabili in combinazioni non predicibili• Indipendenti dalle caratteristiche tecnologiche del
sistema finale• Sono oggetti (nel senso canonico)
Componenti (2)
• Gruppi di programmi gestiti come unità di codice eseguibile, connettibili dinamicamente e accedibili attraverso interfacce documentate che possono essere identificate a run-time
Come realizzare una componente
DataExt. method
Ext. method
….
Ext. methodInt. Method
...
Int. Method
Proxy / Wrapper
Traditional
OO
Data
Code
Obj.Obj.Obj.Obj.
Data
Code
Java Beans
• Integrati nel layout grafico che li contiene
• Generano eventi per il mondo esterno
• Possiedono proprietà leggibili e modificabili
• Supportano l’introspezione
• Sono persistenti
• Sono personalizzabili
COM e DCOM: le originiCOM e DCOM: le origini
MicrosoftMicrosoft
DCOMDCOM(Distributed COM)(Distributed COM)
ActiveXActiveXOLEOLE COMCOM==
COMCOM
OLEOLE
OLE1OLE1
OLE2OLE2
Pre 1996Pre 1996 Post 1996Post 1996
OLE = Object Linking and Embedding
COM = Component Object Model
COM+ = Estensione della tecnologia COM
OLE = Object Linking and Embedding
COM = Component Object Model
COM+ = Estensione della tecnologia COM
COM+COM+
COM e DCOMCOM e DCOM
IUnknown
Interfaccia 1
Interfaccia n
Oggetto COMOggetto COM
QueryInterface
AddRef
Release
COM e DCOMCOM e DCOM
ClientClient OggettoOggettoNello stesso Nello stesso processo processo
ClientClient OggettoOggettoCOMCOM
Client ProcessClient Process Server ProcessServer Process
Sulla stessa Sulla stessa macchinamacchina
Tra due macchineTra due macchine(DCOM)(DCOM)
COMCOMDCERPC
ClientClient
Server MachineServer MachineClient MachineClient Machine
COMCOM OggettoOggetto
““Marshalling”Marshalling”
Ereditarietà in DCOM
• Ereditarietà dell’interfaccia: SI
• Ereditarieta dell’implementazione: NO
• Polimorfismo degli oggetti DCOM: SI
Ereditarietà per Contenimento (o delegazione)
Ereditarietà per Aggregazione
Service Oriented Architectures (SOA)
Infrastruttura integrazione
EnterOrder
Composite Services/Process Objects
Batch Client
CustomerInventory Billing
Call Center
Browser
B2C Retail B2B Sales
A/R
Get Inventory
Update Inventory
GetBalance
Update Billing
Elemental Services/Business Objects
Open Account
Orders
InquireBalance
Get Orders
Update Orders
InquireOrders
GetID No.
Get Address
Change Address
Client Applications
SOA: il sistema informativo organizzato a Servizi
Service-oriented Architecture Interaction• Uses interface metadata
• One-to-one connections
• Client directs flow
• Linear path of execution
• Closed to unforeseen input once a flow is started
Interfacestub
Interface proxy
Client Server
Service-oriented or Event-driven
Source Sink
Event-driven Notification• Uses event descriptor metadata
• Many-to-many connections
• Sink (recipient) determines flow
• Dynamic, parallel, asynchronous flows
• Can react to new external input while process is in flight
Event
Module 4
Module 3
Module 2
Module 5
Event1
Module 1
Event Driven
Event2
Event3
Fork
Join
Client 1
Server 1 Server 2/Client 2
Server 3 Server 4
Service Oriented
Flussi di esecuzione
Java 2 Enterprise Edition (1)
• Standard Sun per le soluzioni “enterprise”, prevede le seguenti librerie:– Enterprise Java Beans (EJB): modello delle
componenti sul lato server– Java Naming and Directory Interface (JNDI)– Remote Method Invocation (RMI): accesso
distribuito in rete agli oggetti Java– Servlets: presentazione dinamica e gestione
sessioni per i client web
Java 2 Enterprise Edition (2)
– Java Server Pages (JSP): facilitano la creazione di pagine HTML, DHTML e XML
– Java Messaging Service (JMS): comunicazione via message & queuing o publish & subscribe
– Java Transaction Service (JTA): gestione delle transizioni distribuite (XA o CORBA OTS)
– Java DataBase Connection (JDBC) accesso uniforme agli RDBMS
– Java Autentication and Authorization Service– JavaMail: accesso ai server di posta elettronica
Costruiti “sopra” i servizi CORBA
Enterprise Java Beans• Entity EJB
– supportano accessi condivisi– rappresentano dati persistenti su DB– identificati da una chiave univoca (primary key)
• Session EJB– eseguono le richieste di un singolo client– vita per il tempo della connessione– implementano la logica di business
• Message-Driven EJB (v. 2.0)– in ricezione di messaggi asincroni (JMS o altri)– vita breve per l’elaborazione di un singolo messaggio
CICS
JSPServlet
Session Bean
JCAResourceManager
Message-DrivenBean
EntityBean
Applet
Browser
DBMS
ERP
J2ME
ServerDesktop
Applicazioni J2EE
Elementi di un ambiente EJB
EJB ContainerEJB Container
EJB instance
method-1()method-2()
HomeHome
Object (Remote)Object (Remote)
EJB instance
method-1()method-2()
Crea, distrugge, cercaCrea, distrugge, cerca
Sicurezza - accesso ai dati - transazioni, ...Sicurezza - accesso ai dati - transazioni, ...
EJB ServerEJB Server
EJB Server
• Fornisce la Java Virtual Machine e le classi di supporto agli EJB
• Fornisce le funzioni di base di ORB e TP monitor
• Fornisce le funzioni di accesso ai DB
• Realizza il bilanciamento del carico e l’alta disponibilità
EJB Container
• fornisce l’ambiente in cui gli EJB di una classe vengono eseguiti
• fornisce ai client l’accesso a EJB Home e Object• realizza, insieme all’EJB server, i servizi di base:
sicurezza, transazioni, naming, persistenza (dello stato)
• può gestire pool di oggetti della stessa classe
EJB Object (Remote)
• Rappresenta l’interfaccia dell’EJB verso il mondo esterno
• Filtra ed integra i messaggi verso le istanze di EJB
• Coordina le transazioni
• Nome: <classe>
EJB Home
• Permette di creare istanze di oggetti di una classe e di cercarle
• Nome: <classe>Home
• Metodi:– create ()– destroy ()– interfaccia finder (solo per entity EJB)
Formati di deployment J2EE
– Ogni prodotto richiede file “deployment descriptor” proprietari per descrivere le caratteristiche non standard (load balancing, gestione guasti, risorse…)
Interazioni fra le classi J2EE
EJB ContainerEJB Container
ClientClient
EJB Jar
EJB Jar
DeploymentDescriptor
DeploymentDescriptor
Istanza del beanIstanza
del bean
NamingServiceNamingService
EJB HomeEJB
Home
EJB Context
EJB ContextEJB
ObjectEJB
Object
lookup interfaccia home con JNDI
findByPrimaryKey(..)
create(..)new o activate
EJB Objects
Pool
EJB Objects
Pool
ejbActivate(..)ejbPassivate(..)
isCallerInRole(..)
contesto di esecuzione fornito in automatico dal container ad ogni chiamata
metodi del bean es. ejbRemove()metodi di business
es. addPrestito(..)
Architettura Enterprise JavaBeans
Persistenza ed EJB
• Bean-managed persistence (BMP)– i dati sono acceduti direttamente dal codice
attraverso librerie quali JDBC o SQLJ.
• Container-managed persistence (CMP)– il container gestisce la persistenza in modo
automatico.– Container-managed relationships (CMR)– EJB Query Language (EJB QL)
Mapping fra Entity Beans e DB
COM
DNAMTS
.NET
DNA2000
COM+
DCOM
…….
1990s 2000s
Distributed Components
Components
Transactional Components
Three-Tier Architecture
Enterprise Quality of Service
Loose Coupling
Internet Network Computing
Evoluzione delle soluzioni Microsoft
Microsoft .NET (1)
• CLR (Common Language Runtime) – interprete di IL (Intermediate Language) derivabile da molti
linguaggi di programmazione: VB, C++, C#, Cobol
– tutti i linguaggi supportati diventano object oriented (ereditarietà, costruttori parametrici) superando i limiti di COM
– garbage collection della memoria
– gestione delle eccezioni
– sicurezza durante l’interpretazione
– compilatore just-in-time
– gestione delle versioni
• Spazi di nomi gerarchici (namespace)
Microsoft .NET (2)
• Intercomunicazione fra oggetti COM e .NET
• ASP.NET: – sviluppo di pagine HTML dinamiche con gestione degli eventi sui
controlli visuali (Web Forms)
– sviluppo facilitato di Web Services
System System
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalizationDiagnosticsDiagnosticsConfigurationConfigurationCollectionsCollections
ResourcesResourcesReflectionReflectionNetNetIOIO
ThreadingThreadingTextTextServiceProcessServiceProcessSecuritySecurity
DesignDesignADOADO
SQLTypesSQLTypesSQLSQL
XPathXPathXSLTXSLT
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionStateCachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.DrawingSystem.Drawing
ImagingImagingDrawing2DDrawing2D
TextTextPrintingPrinting
System.Windows.FormsSystem.Windows.Forms
DesignDesign ComponentModelComponentModel
Il Framework .Net
JVM e CLR
Running Process’ Memory
SomeSources.exe
IL
Metadata
JIT Compiler
10010100 10110000 10000000 1011101011011011 11010111 11000010 01110110
Native Machine Language
The CPU executes the JIT-compiled machine code directly
At execution time the IL and Metadata are JIT compiled
Executing a Managed Application
Altre caratteristiche di .NET
• Librerie XML e web services• Tutti i linguaggi sono completamente OO
(ereditarietà) ed interoperabili (stesso MSIL)• Assembly (unità autodescrittive di deployment)• Versioning delle interfacce (fine del “DLL hell”)• Remoting• ADO.NET: vista dei dati basata su XML
Enterprise Services
ASP.NETASP.NET
Enterprise Enterprise ServicesServices
ADO.NETADO.NET {{
Gli Enterprise Services forniscono i servizi di MTS/COM+ (transazioni, pooling risorse...)
eXtensible Markup Language (XML)
• Standard del W3C
• Deriva dallo Standard Generalized Markup Language (SGML) come l’HTML
• Orientato alla rappresentazione dei dati
• Il formato di un documento XML è definito in un DTD (Data Type Definition)
• L’eXtensible Stylesheet Language (XSL) descrive le regole di trasformazione di documenti XML in altri documenti XML o HTML
Esempio di documento XML<?xml version="1.0" encoding="UTF-8" ?><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE RICHIESTA_PAGAMENTO<!DOCTYPE RICHIESTA_PAGAMENTO SYSTEM SYSTEM
“ “http://www.miodtdserv.com/richiesta_pagamenti.dtdhttp://www.miodtdserv.com/richiesta_pagamenti.dtd")")>>
<!--<!-- Messaggio relativo ad una richiesta di pagamento a Messaggio relativo ad una richiesta di pagamento a seguito di fattura seguito di fattura -->-->
<<RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO>>
<<FATTURA APPROVATA_DAFATTURA APPROVATA_DA="="Mario RossiMario Rossi"" DATA DATA="="22-Set-22-Set-19991999““
LIVELLOLIVELLO="="UrgenteUrgente"" FIRMATA_DA FIRMATA_DA="="Mario RossiMario Rossi">">
<<CLIENTECLIENTE>>Burlini Costruzioni spaBurlini Costruzioni spa</</CLIENTECLIENTE>>
<<ORDINE_ACQUISTOORDINE_ACQUISTO>>OA1234X99OA1234X99</</ORDINE_ACQUISTOORDINE_ACQUISTO>>
<<IMPORTOIMPORTO>>LIT 100.000LIT 100.000</</IMPORTOIMPORTO>>
</</FATTURAFATTURA>>
</</RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO>>
Esempio di DTD<?xml version="1.0" encoding="UTF-8" ?><?xml version="1.0" encoding="UTF-8" ?>
<!-- Dichiarazione del documento "Richiesta di Pagamento" --<!-- Dichiarazione del documento "Richiesta di Pagamento" -->>
<!ELEMENT <!ELEMENT RICHIESTA_PAGAMENTORICHIESTA_PAGAMENTO ( (FATTURAFATTURA)+>)+>
<!ELEMENT <!ELEMENT FATTURAFATTURA ( (CLIENTE, ORDINE_ACQUISTO, IMPORTOCLIENTE, ORDINE_ACQUISTO, IMPORTO)>)>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO APPROVATA_DAAPPROVATA_DA CDATA #REQUIRED> CDATA #REQUIRED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO FIRMATA_DAFIRMATA_DA CDATA #REQUIRED> CDATA #REQUIRED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO DATADATA CDATA #IMPLIED> CDATA #IMPLIED>
<!ATTLIST ARTICOLO <!ATTLIST ARTICOLO LIVELLOLIVELLO (Urgente|Normale) " (Urgente|Normale) "NormaleNormale" >" >
<!ELEMENT <!ELEMENT CLIENTECLIENTE (#PCDATA)> (#PCDATA)>
<!ELEMENT <!ELEMENT ORDINE_ACQUISTOORDINE_ACQUISTO (#PCDATA)> (#PCDATA)>
<!ELEMENT <!ELEMENT IMPORTOIMPORTO (#PCDATA)> (#PCDATA)>
I Web Services• Composizione di applicazioni attraverso componenti
distribuite sul WWW
• Standard, tutti basati sull’XML:
– SOAP (Simple Object Access Protocol) il protocollo di richiamo di procedure remote come web services
– WSDL (Web Services Description Language): il linguaggio di definizione dei web services
– UDDI (Universal Description, Discovery and Integration) il protocollo per ricercare i web services, una sorta di "elenco telefonico" o "pagine gialle" dei web services
Formato dei messaggi SOAP
• SOAP Header– dati opzionali sulla chiamata stessa
(autenticazione, pagamento, dove sono dichiarati i tipi usati, …)
• SOAP Body– contiene i dati delle chiamate e/o i
risultati di ritorno
WSDL• WSDL allows Web
services to be self-describing.
• A WSDL document includes nine basic XML elements:
• Five abstract elements — port type, operation, message, part and type
• Three concrete elements — service, port and binding
• One definition element — provides definitions relating to the service.
Abstract Implementation
Port Type
Operation
Messages <types> … </types> <parts> … </parts>
Binding
End Point End Point
MapsTo
ProtocolAssociated
WithPort
definitionselement
<message>elements
<portType>element
typeselement
messageelement
portTypeelement
bindingelement
serviceelement
<?xml version="1.0"?><definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"xmlns:tns="http://example.com/stockquote.wsdl"xmlns:xsd1="http://example.com/stockquote.xsd"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns="http://schemas.xmlsoap.org/wsdl/">
<types><schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema"><element name="TradePriceRequest">
<complexType><all>
<element name="tickerSymbol" type="string"/></all>
</complexType></element>
</schema>
</types><message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message><portType name="StockQuotePortType">
<operation name="GetLastTradePrice"><input message="tns:GetLastTradePriceInput"/><output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType><binding name="StockQuoteSoapBinding">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice"><soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input><soap:body use="literal"/>
</input><output>
<soap:body use="literal"/></output>
</operation></binding><service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port></service>
</definitions>
operationelement
portelement
WSDL Document Elements
UDDI Registry Data Structures<businessEntity >authorizedName="0100003PAJ" operator=www.ibm.com/services/uddi businessKey="83B31400-7581-11D5-889B 0004AC49CC1E"> ......
.....
</businessEntity>
<businessServices><businessService serviceKey="7BB589E0-7586-11D5-889B-
0004AC49CC1E" businessKey="83B31400-7581-11D5-889B-0004AC49CC1E">
.....
.......
</businessServices>
<bindingTemplates> <bindingTemplatebindingKey="7BB6C260-7586-11D5-889B-0004AC49CC1E serviceKey"7BB589E0-7586-11D5-
8890004AC49CC1E">
</bindingTemplate>
<bindingTemplatebindingKey="7BBB0820-7586-11D5-889B-0004AC49CC1E serviceKey= "7BB589E0-7586-11D5-889B0004AC49CC1E">.....
</bindingTemplate></bindingTemplates>
<tModelauthorizedName="Harpo Marx operator="www.ibm.com/services/udi tModel key="983d-999a-4567>
.....
</tModel>
<publisherAssertions generic = "2.0"
operator="www.ibm.com/services/uddi" authorizedName="Sweeney Todd" xlmns =urn:sweeneysmeatpies.com:http>">.
</publisherAssertions>
"white pages"Name, description, contacts, categories
<tModelauthorizedName="Chico Marx"operator="www.ibm.com/services/uddi" tModel key="1234-3456-7da9">
.....
</tModel>
Referencesone or more
"green" pagesbusiness process, service description, bindings
tModelTechnical information for using the service
"yellow pages"Business categories (NAICS, UN/SPSC,
geographical taxonomies)
Publisher AssertionsAsserts a relationship between two Business
Entities
Referencesone or more
businessrelationship
Service Interface
Import
Types
Message
PortType
Binding
Business Service
BindingTemplate Finds
Port
Points To
Import
Service
Business Entity
Points To
Imports
Service Implementation
UDDIRegistrationFile
WSDLFile
Mapping WSDL to UDDI
tModel
Soluzione Java per i Web Services
OS
WebContainer
EJBContainer
JVM
Application Server
SOAPProcessor
LocalUDDI
WSDL
Servlets
JSPsEJBs
Connectors
Internet Router
Firewall
Load
Balancer
WebServers
IntegrationBrokers
RDBMS
Legacy
Middle TierFront-End Tier Back-End Tier
ApplicationServer Subtier
Simple API for XML (SAX).
Document Object Model (DOM)
Trasformazioni XSLT
XSLT (eXtensible Stylesheet Language for Transformations)
Network
Managed Process
ASP.Net ISAPI DLL
Hosting the .NET Framework CLR
XML Web Service objects
SOAP MethodRequest
SOAP MethodResponse
Web Server
Ser
vice
-Cli
ent
ASP.Net
Esempio di Web Service con ASP.NET
<%@ WebService Language="C#" Class="DateService" %>using System;using System.Web.Services;
public class DateService:WebService{ [WebMethod] public String GetDateString() { return DateTime.Now.ToString("D"); }}
DateService.asmxDateService.asmx
• Servizi implementati in file .ASMX
Esempio di richiamo di un Web Service in .NET
using System;
class App{ public static void Main(){ DateService webObj = new DateService(); webObj.Url = "http://www.miaazienda.com/Services/DateService.asmx"; String dateString = webObj.GetDateString(); Console.WriteLine(dateString); }}
DateClient.csDateClient.cs
• Simple model for network communication– Object Instantiation– Method Call
• DateService type is a proxy object
Gli standard XML
Transports
XML, XML Schemas, Encoding
SOAP (WS Routing, WS Attachment, DIME)
WSDL, UDDI, WS-Introspection
WS-Coordination
WS-Transaction
WS-SecurityReliable
Messaging
BPEL (Business Process Automation)
IBM’s and Microsoft’s “Web Services Architecture”(as of September 2002)
TBD
ImplementedStandards
ProposedStandards
Pre-Web ServicesStandards
Web Services
Services
Components
Granularity
ScopeB2B Market,
Global Enterprise
Coarse
Objects
HTTP+SOAP
MOM
ORB
Typical Access via
Small Enterprise,Complex Application
Homogeneous Application
Program
Tighter LooserCoupling
Procedural
Call
Dalle procedure ai servizi