In questo articolo vengono analizzati alcuni scenari

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "In questo articolo vengono analizzati alcuni scenari"

Transcript

1 Gestione di una coda di mail in architettura SOA con WCF L invio di è una funzionalità molto diffusa nelle applicazioni moderne e la gestione di più applicazioni che devono inviare è una condizione presente in molte aziende. di Omar Venturi In questo articolo vengono analizzati alcuni scenari relativi ad applicazioni che inviano agli utenti e vengono descritti i passaggi principali per realizzare un servizio centralizzato con gestione di una coda. Vengono esaminate alcune delle caratteristiche dell architettura SOA (Service Oriented Architecure) e delle API di WCF (Windows Communication Foundation), evidenziando gli aspetti che semplificano lo sviluppo e la gestione della comunicazione tra applicazioni e servizi. L articolo è di livello introduttivo e si rivolge a chi, pur conoscendo la programmazione ad oggetti, conosce poco il modello architetturale SOA e la tecnologia WCF di Microsoft; l obiettivo è di guidare il lettore nella progettazione, nella realizzazione, ma soprattutto nella comprensione di una soluzione reale che utilizza questi strumenti. Nella trattazione si vedrà il percorso ipotetico affrontato da alcuni sviluppatori che, discutendo Omar Venturi Si occupa di progettazione e sviluppo di soluzioni E-Learning e Cross Media Publishing con tecnologie Microsoft.NET. Lavora come Project Manager per ONION S.p.A. società di servizi IT con sedi a Brescia, Milano e Torino. Laureato presso l Università degli studi di Milano in Tecnologie per la società dell informazione. È MPC (Microsoft Certified Professional) dal 1999 e MCSD (Microsoft Certified Solution Developer) dal delle soluzioni adottate nelle loro applicazioni per l invio delle , ne evidenziano le problematiche, le analizzano, progettano una soluzione comune per sostituire quelle esistenti ed infine la realizzano, soffermandosi sugli aspetti più importanti ed utilizzando esempi del mondo reale. L invio di è una funzionalità molto diffusa nelle applicazioni moderne (si pensi ad esempio ad un sito web che invia una mail agli utenti al termine del processo di registrazione) e la gestione di più applicazioni che devono inviare , spesso implementando soluzioni differenti, è una condizione presente in molte aziende. In particolare, le caratteristiche comuni di tali applicazioni sono: La mail rappresenta un punto all interno di un flusso di lavoro fondamentale per il completamento di un attività complessa (registrazione utenti, ordini, segnalazioni di eventi, etc); È indispensabile poter verificare se e quando la mail è stata inviata; La presenza di soluzioni diverse per ciascuna applicazione può rappresentare un costo da ridurre. Spesso le applicazioni si appoggiano a componenti esterni per l invio della mail, oppure sfruttano le funzionalità più semplici messe a disposizione dai framework applicativi. Inoltre, benché le code siano uno strumento per migliorare l affidabilità dell invio 8

2 SOA con WCF della mail, non sempre le applicazioni le utilizzano; talvolta perché si ritiene troppo onerosa l integrazione, talvolta perché il componente o il framework non le supporta. Iniziamo quindi analizzando il caso della Software Meraviglioso S.p.A., software house specializzata nella realizzazione di applicazioni web-oriented. Software Meraviglioso è un azienda organizzata in molte aree, ognuna composta da più gruppi di lavoro. Tutti i gruppi hanno sviluppato almeno una volta un progetto per il quale è stato necessario inviare mail agli utenti e ciascun team è soddisfatto della soluzione implementata. Il problema Davanti alla macchinetta del caffè un giorno si sono incontrati Claudio, Luisa e Matthew (appartenenti a tre gruppi di lavoro differenti) e chiacchierando si sono accorti che: Il progetto di Claudio utilizza un componente COM chiamato SuperMail che supporta le code ed ha un prezzo di 300$; Il progetto di Luisa, più recente, utilizza un componente open source chiamato YourPostman; è disponibile la versione 0.95 per.net e la versione 0.98 per Java (quella utilizzata da Luisa). La documentazione è buona ed il componente è freeware. Il supporto per le code sarà implementato con il prossimo rilascio; Il progetto di Matthew utilizza invece il client SMTP presente nel namespace System.Net.Mail del framework.net. Questo componente non offre supporto nativo per le code, ma il gruppo di Matthew doveva realizzare velocemente la funzionalità di invio di password dimenticata (si erano proprio dimenticati di implementarla!) ed hanno deciso che questa era la soluzione migliore; avrebbero pensato successivamente alla gestione delle code. Nessun problema funzionale quindi, tutto il software gira che è una meraviglia, però tre gruppi diversi hanno implementato tre soluzioni diverse per lo stesso problema e, immaginano i nostri amici, è probabile che anche gli altri team abbiano adottato soluzioni diverse. Mentre i nostri tornano alle loro scrivanie, fermiamoci un momento a pensare alla situazione appena descritta. Le casistiche analizzate non evidenziano problematiche tecnologiche; è vero che qualche mail talvolta non arriva a destinazione (Matthew e Luisa hanno preferito non parlare di questo), ma tutto sommato questo non rappresenta un grosso problema per le loro applicazioni. Il problema è invece l adozione di soluzioni differenti per coprire le stesse esigenze, con conseguente aumento dei costi sia in fase di sviluppo che in quella di manutenzione. Inoltre, ogni scenario presenta problematiche specifiche che proviamo a riassumere: l utilizzo di componenti esterni è certamente una buona soluzione poiché garantisce il riuso del software. Tuttavia questa soluzione impone dei vincoli sulla tecnologia utilizzata. Il progetto di Claudio utilizza un componente COM, il progetto di Luisa una classe Java ed il progetto di Matthew una classe del framework.net: il progetto ed i suoi componenti devono utilizzare la stessa tecnologia; i componenti che non supportano le code scaricano la responsabilità dell invio della mail sull applica- FIGURA 1 - La soluzione è ospitata all'interno di due servizi Windows 9

3 zione stessa. Cosa succede se il server di mail restituisce un errore durante l invio? il codice infrastrutturale per l utilizzo dei componenti non può essere riutilizzato: istanziare ed utilizzare il componente COM richiede codice differente rispetto a quello del componente.net o Java; implementare le funzionalità di invio di per un progetto ha un costo che si ripete per ogni progetto, con un valore diverso in funzione della soluzione adottata. Un servizio! Ecco quello di cui abbiamo bisogno! esclama ad alta voce Luisa e l indomani si confronta con i suoi colleghi per valutare gli impatti che questa soluzione comporta sulle applicazioni esistenti. Luisa spiega che il loro problema è comune e facilmente risolvibile; la maggior parte delle applicazioni presenti in azienda necessita di inviare una mail e tutti implementano una soluzione diversa, con diverse tecnologie. Non risparmieremmo tempo se in azienda fosse disponibile un sistema in grado di registrare le mail che le nostre applicazioni devono inviare gestendo le code ed offrendo anche meccanismi per il controllo degli errori, della pianificazione delle spedizioni e dei log? Le nostre applicazioni vedrebbero l invio della mail come un servizio esterno, FIGURA 2 - Il diagramma delle classi della soluzione senza preoccuparsi di quale componente è utilizzato o di come è gestita la coda. Certo, però non vedo vantaggi rispetto a quello che ho implementato ribatte Claudio attualmente sto utilizzando SuperMail e non mi preoccupo di come lui gestisce le code. Semplicemente la mia applicazione crea un istanza dell oggetto SuperMail.Message, gli assegna i valori corretti e quindi chiama il metodo Send. Più facile di così!. Prova a pensare, interviene Matthew a cosa succederebbe se utilizzassi il tuo componente in altri progetti e fra un po volessi passare alla nuova versione, magari per.net o Python. Dovresti sicuramente modificare le parti di codice che utilizzano SuperMail, poiché i tuoi progetti referenziano direttamente il componente. Se, come suggerisce Luisa, utilizzassimo un servizio esterno, le nostre applicazioni non sarebbero più dipendenti dalla tecnologia del componente per l invio delle mail, che potrebbe quindi essere aggiornato in maniera indipendente. Beh, è un bel vantaggio, ma devo modificare tutto quello che ho già scritto? chiede Claudio. No, risponde Luisa, le applicazioni esistenti possono continuare con la soluzione attuale oppure passare gradualmente alla nuova soluzione; dipende dal rapporto tra costi e benefici. Questo è un altro dei vantaggi offerti dall architettura SOA: è possibile gestire gli aggiornamenti in base alle proprie esigenze. Quelli della Software Meraviglioso si mettono quindi al lavoro ed iniziano a progettare l architettura della soluzione. L architettura ed il modello I nostri bravi sviluppatori (che in questo momento stanno ricoprendo il ruolo di architetti) hanno pensato di ospitare la soluzione all interno di due servizi Windows, come mostrato in Figura 1: MailQueue_Service: è responsabile della scrittura e della lettura dei messaggi dalla coda. Le applicazioni che hanno bisogno di inviare accedono a questo servizio utilizzando due interfacce, delle quali parleremo tra poco. Queste due interfacce sono l unico punto pubblico del servizio. MailQueue_Sender: è il servizio responsabile di estrarre un messaggio dalla coda e di inviarlo al mail server configurato per quel messaggio (le mail possono essere inviate utilizzando server 10

4 SOA con WCF differenti). Anche se questo servizio colloquia direttamente con MailQueue_Service, è stato disaccoppiato e caricato in un servizio diverso e la comunicazione tra i due avviene attraverso una terza interfaccia. In questo modo è possibile sospendere il servizio che invia le mail (ad esempio per manutenzione del server di mail), continuando a registrare le mail nella coda. Introdotta l architettura, vediamo ora il modello: le classi utilizzate per modellare il dominio sono semplici ed intuitive. Oltre alla classe principale Messaggio, sono state definite altre classi che permettono alle applicazioni di controllare il messaggio da inviare. Innanzitutto ogni applicazione ha la possibilità di definire quale server SMTP utilizzare per l invio dei messaggi (le applicazioni autorizzate all invio dei messaggi sono registrate nel sistema), inoltre è possibile specificare, per ogni messaggio, un insieme di caratteristiche che influiscono direttamente sul posizionamento del messaggio nella coda. Cosa? Le applicazioni possono controllare direttamente la posizione del messaggio nella coda? chiede Claudio sorpreso di questo strano comportamento, Non è esatto risponde Matthew giustificando la scelta, Le applicazioni non possono definire la posizione del messaggio, ma per rendere più flessibile l applicazione possono richiedere che il messaggio sia inviato in uno specifico istante temporale usando la proprietà Planning oppure che venga inviato secondo una schedulazione predefinita, usando la classe MessageSchedule. Nel database i messaggi sono sempre memorizzati in tabella secondo l ordine d inserimento, ma da questa tabella sono recuperati in ordine crescente rispetto alla data di invio richiesta. Comunque continua Matthew in genere un applicazione non richiede che lo stesso messaggio sia inviato più volte. Se i messaggi non contengono né una pianificazione, né uno scheduling, la coda si comporta come una classica FIFO: il primo messaggio inserito è il primo inviato. Abbiamo deciso di aggiungere queste funzionalità per rendere più flessibile il servizio. In Figura 2 è presentato il diagramma delle classi della soluzione. La classe MessageEnvelope (la busta) rappresenta la radice del modello e contiene una o più istanze delle altre classi: contiene un istanza di Message (il messaggio) che a sua volta può contenere delle istanze di MessageSchedule (le regole di schedulazione). La busta può contenere inoltre degli allegati (MessageAttachmentBuffered) ed i parametri di connessione al server (ApplicationConfiguration). Infine, partendo dalla classe MessageStatus, la busta può accedere all elenco di eventi legati al messaggio, relativamente all invio (MessageAttempt) o alle operazioni effettuate su di esso, come la creazione o eventualmente la modifica (MessageHistory). Analizziamo un po più in dettaglio le interfacce. L interfaccia IMailQueueWriter prevede solo il metodo AddMessage(): questo è il metodo principale che permette di registrare un messaggio nella coda. La chiamata a questo metodo prevede due parametri: un istanza della classe Message e la chiave dell applicazione mittente (quest ultima impedisce che applicazioni non registrate possano inviare messaggi). Per scelta architetturale, si è deciso che per allegare documenti alla mail è necessario utilizzare un in- FIGURA 3 - Schema del database utilizzato per memorizzare i messaggi 11

5 terfaccia differente (IMailQueueAttachmentWriter). Come si vedrà meglio tra poco, i metodi definiti in queste interfacce possono essere attivati inviando dei messaggi SOAP a determinate URL. WCF controlla queste URL e può gestire indirizzi e protocolli differenti per ciascuna di esse; in questo modo si possono controllare separatamente le chiamate che inviano un semplice messaggio (poche decine di KB) da quelle che trasferiscono megabyte. È possibile ad esempio configurare il servizio affinché la dimensione dei messaggi non superi i 100 KB mentre quella degli allegati non superi i 20 MB. La terza interfaccia, IMailQueueReader, è utilizzata esclusivamente dal servizio MailQueue_Sender che ad intervalli regolari interroga la coda chiamando il metodo NextMessageToSend() il quale restituisce un oggetto di tipo MessageEnvelope. Come descritto poco sopra, questo oggetto contiene tutte le informazioni necessarie ad inviare la mail. Dopo aver ottenuto la risposta dal server (positiva o negativa che sia), MailQueue_Sender registra l esito dell invio utilizzando il metodo SetResponse(). Se l esito è negativo, il metodo NextMessageToSend() restituirà nuovamente il messaggio per un nuovo tentativo; è possibile controllare il numero di tentativi di invio cui un messaggio può essere sottoposto tramite la LISTATO 1 - Versione molto semplice della classe Message public class Message private int _id; private int _attempts; private string _subject; private string _body; private string[] _to; private DateTime[] _planning; public Message( string Subject, string Body, string To, string From, DateTime DispatchDate) _id = -1; _attempts = int.maxvalue; _subject = Subject; _body = Body; _to = new string[] To; _planning = new DateTime[] DispatchDate; proprietà Attempts della classe Message. La prima classe con WCF Abbiamo definito l architettura della soluzione, abbiamo descritto le classi e sappiamo quali relazioni esistono tra loro; possiamo iniziare a scrivere la classe Message. Il Listato 1 contiene una versione molto semplice di questa classe dove, per brevità, sono stati omessi alcuni campi. È stato inoltre definito un semplice costruttore (attenzione a questo aspetto, lo approfondiremo nel paragrafo Messaggi ed oggetti) che dovrebbe garantire la creazione di istanze coerenti con la nostra logica. Torniamo dai nostri amici ai quali si è aggiunto Giorgio, un giovane sviluppatore che sta partecipando insieme a loro ad un brainstorming. Giorgio sta cercando di capire quello che avviene dietro le quinte quando un applicazione si collega al servizio e crea un istanza della classe Message. Ha capito che Message, definita in MailQueue_Service, deve in qualche modo essere resa disponibile anche alla sua applicazione affinchè questa possa crearne un istanza. Ascoltiamolo: in effetti non è affatto banale che la mia applicazione possa istanziare una classe della quale non possiede la definizione. La classe Message è definita nel servizio, ma la mia applicazione deve comunque essere in grado di crearla. Inoltre, una volta passata l istanza al servizio, la mia applicazione non deve più occuparsi di come il messaggio venga inviato, giusto? Esatto Giorgio, risponde Matthew, hai compreso l aspetto fondamentale di questa architettura. Per farti un esempio, immagina di andare al ristorante ed ordinare una pizza: non è sufficiente entrare, dobbiamo anche essere in grado di ordinare quello che vogliamo secondo il menu del ristorante. La pizza è il risultato che chiediamo al ristorante (il servizio) e l ordine è quello che dobbiamo costruire e passare al cameriere. Dopo aver costruito l ordine, possiamo tranquillamente aspettare; a noi interessa mangiare, non come viene preparata la pizza. Poi continua La soluzione che utilizza la tua applicazione per creare un istanza di Message è analoga a quella che utilizziamo noi per ordinare: leggiamo il menu. Non dobbiamo andare dietro il banco e fare la pizza, e non dobbiamo nemmeno assumere un pizzaiolo privato a casa (cioè acquistare un componente tutto per noi), è sufficiente chiedere il servizio che vogliamo seguendo il menu del ristorante. Fantastico! Adesso che abbiamo capito i vantaggi 12

6 SOA con WCF offerti dall architettura orientata ai servizi ed i passi fondamentali per scambiare dati con il servizio, siamo pronti per guardare un po più da vicino gli aspetti legati alla comunicazione. Iniziamo con qualche domanda: come fa l applicazione ad inviare i dati a MailQueue_Service? MailQueue_Service gestisce direttamente la comunicazione con MailQueue_Sender e le applicazioni oppure si appoggia ad altri componenti? Come è possibile inviare un istanza della classe Message, in esecuzione su un server, ad un altro server sul quale è in esecuzione MailQueue_Service? Le risposte sono fornite da WCF, un insieme di classi (un framework) che si occupa della comunicazione tra applicazioni. Utilizzando WCF, le nostre applicazioni non devono occuparsi di aprire connessioni di rete, di gestire buffer di trasmissione, di serializzare gli oggetti o altri aspetti del genere, ma è WCF che si occupa di tutto ciò. WCF non è la prima né l unica tecnologia per la gestione semplificata della comunicazione tra le applicazioni; i Web Service ad esempio erano la soluzione precedente prodotta da Microsoft. WCF si presenta come l evoluzione dei Web Service con l obiettivo di unificare, sotto un unico nome, le modalità di comunicazione che utilizzano anche diversi protocolli come HTTP, TCP, MSMQ, NamePipe, etc. Alla base di tutto ci sono i concetti di serializzazione, SOAP e contratto: il primo è il processo con il quale un oggetto viene salvato su un supporto oppure inviato attraverso un canale di comunicazione (mettendo in sequenza i dati che rappresentano l istanza), LISTATO 2 - DataContract e ServiceContract [DataContract] public class Message [DataMember(Name= Id )] private int _id; [DataMember(Name= Attempt )] private int _attempts; [DataMember(Name= Subject )] private string _subject; [DataMember(Name= Body )] private string _body; [DataMember(Name= To )] private string[] _to; [DataMember(Name= Plannin )] private DateTime[] _planning; /* Costruttore */ mentre il secondo è uno standard per descrivere i dati serializzati. Il contratto infine, utilizza i primi due per astrarre e semplificare la descrizione dei servizi offerti da un applicazione, dei dati scambiati tra gli attori coinvolti e di altro ancora. In WCF sono previste cinque tipologie di contratto che introduciamo brevemente: Service contract: definisce le operazioni esposte da un servizio, cioè il cosa viene offerto. IMail- QueueWriter è definito ad esempio come service contract (un service contract per il ristorante potrebbe essere si fanno pizze! ). Data contract: descrive gli oggetti utilizzati dal servizio e la loro struttura. Tutte le classi del nostro modello ad oggetti che devono essere utilizzate dalle applicazioni sono definite come Data Contract. Message contract: questo tipo di contratto è utilizzato per avere un controllo completo su come gli oggetti viaggiano sulla rete, cioè su come vengono serializzati e descritti con SOAP; in pratica permette di controllare il messaggio SOAP in tutti i suoi aspetti. È un po come quando lasciate chiuso il menu ed ordinate una pizza ingrediente per ingrediente. Niente menu, gli ingredienti li scelgo io! Fault contract: descrive i messaggi di errore e permette alle applicazioni di interpretarli correttamente. Callback contract: in genere la comunicazione parte dall applicazione richiedente (il consumer) ed arriva al servizio. Questo contratto permette al consumer di farsi chiamare dal servizio, stabilendo una comunicazione bidirezionale ("Quando le pizze sono pronte chiamami al "). È importante chiarire un aspetto fondamentale prima di proseguire: WCF è una tecnologia.net e richiede l utilizzo di strumenti specifici per questo framework. Tuttavia le applicazioni che utilizzano i LISTATO 3 - Definizione di IMailQueueWriter [ServiceContract] public interfaceimailqueuewriter [OperationContract()] int AddMessage( Message Mail, string ApplicationKey); 13

7 servizi esposti tramite WCF possono essere realizzati con qualunque tecnologia in grado di comunicare con messaggi SOAP. Ecco perché, (riprendendo per un istante l inizio dell articolo) mentre la scelta di un componente è vincolata dalla tecnologia del progetto (COM, Java,.NET, etc), l utilizzo di un servizio è svincolato dalla tecnologia dell applicazione consumer. Affrontiamo adesso un aspetto pratico, quale la definizione dei contratti. WCF fa ampio uso degli attributi.net per questo aspetto. Ogni tipologia di contratto prevede un insieme definito di attributi con i quali decorare le proprie classi. Il run-time di WCF legge questi attributi e crea automaticamente il codice necessario per la pubblicazione del servizio. Vediamo come definire un DataContract ed un ServiceContract (Listato 2). LISTATO 4 - Configurazione del servizio per IMailQueueWriter <services> <service behaviorconfiguration= MQWB name= MQService > <endpoint address= net.tcp://mypc:8000/mqw/ binding= nettcpbinding bindingconfiguration= bndtcp contract= MailQueue.service.IMailQueueWriter /> <service/> <services/> <behaviors> <servicebehaviors> <behavior name= MQWB > <servicemetadata httpgetenabled= True httpgeturl= /> </behavior> <servicebehaviors/> <behaviors/> <bindings> <nettcpbinding> <binding name= bndtcp transfermode= Buffered maxbuffersize= 2048 /> </binding> <nettcpbinding/> <bindings/> Il Data contract utilizza due attributi: DataContract: da utilizzare sulla classe (o sulla struct) DataMember: da utilizzare sui campi o sulle proprietà Si noti che i campi esposti con l attributo Data- Member sono definiti come privati: i modificatori di visibilità non hanno effetto sul messaggio. Tutti i campi (o le proprietà get/set) decorati con l attributo DataMember sono pubblicati con il proprio nome o con quello definito dal parametro Name, indipendentemente dal fatto che siano dichiarati come privati. Il Service contract utilizza invece gli attributi: ServiceContract: da utilizzare sulla classe o sull interfaccia OperationContract: da utilizzare sui metodi Si è già accennato al fatto che i consumer accedono ai servizi attraverso le interfacce. Queste sono definite come Service Contract ed esposte pertanto come servizi. IMailQueueWriter è definita ad esempio come mostrato nel Listato 3. Naturalmente l interfaccia è implementata da una classe concreta (MailQueueWriter) responsabile di LISTATO 5 - Attivazione del servizio using System.ServiceModel; using MailQueue.service; public partial class MQHost:ServiceBase private static ServiceHost _mqh = null; protected override void OnStart(string[] args) _ mqh = new ServiceHost(typeof(MailQueueWriter)); _ mqh.open(); protected override void OnStop() if (_mqh.state!= CommunicationState.Closed) _mqh.close(); 14

8 SOA con WCF memorizzare il messaggio nella coda. Per completezza in Figura 3 è riportato lo schema del database utilizzato per memorizzare i messaggi; gli aspetti che si riferiscono alla memorizzazione dei dati nelle tabelle esulano dagli obiettivi di questo articolo. È sufficiente in questo caso evidenziare l esistenza di relazioni 1-1 tra le tabelle e le classi del modello (Message, Application, Attachment, etc) per comprenderne le logiche di memorizzazione principali. Si noti inoltre che la tabella [MQ.MESSAGE.QUEUE] non ha una classe relativa nel modello ad oggetti: questa tabella contiene la coda ed è la tabella dalla quale estrarre un messaggio ad ogni chiamata del metodo NextMessageToSend(). ABC: Address, Binding, Contract Il nostro servizio è quasi pronto: abbiamo creato le classi ed abbiamo definito i contratti; dobbiamo ora preparare l ambiente necessario a pubblicarlo. Sappiamo che i nostri amici della Software Meraviglioso hanno deciso di esporre il servizio come un Windows Service, ma non abbiamo detto ancora niente sul protocollo utilizzato, su quale porta rimarrà in ascolto e se, ad esempio, i messaggi necessitano di criteri di protezione. Questi aspetti sono gestiti da WCF e controllabili da un file di configurazione, il che semplifica molto le attività di pubblicazione e manutenzione del servizio. L infrastruttura di WCF che permette l esecuzione dei servizi è controllata da una tripletta di parametri il cui acronimo è ABC (Address, Binding e Contract) ed alla quale ci si riferisce con il nome "endpoint". Il Contract lo abbiamo incontrato nel paragrafo precedente, vediamo ora cosa sono Address e Binding. L address è l indirizzo (URL) al quale il servizio è raggiungibile. Il formato dell address è: protocollo://server:porta/extension Ad esempio è un address valido per il nostro servizio, così come lo è net.tcp:// :9191/mailread. Il binding è un elemento fondamentale di WCF poiché oltre al protocollo di comunicazione controlla un insieme di altre caratteristiche, quali ad esempio la capacità di stabilire comunicazioni bidirezionali (duplex) o a senso unico. Per un approfondimento di questi aspetti si rimanda a [1]. Prima di procedere, torniamo per un istante all esempio della pizzeria ricordando che prima di poter ordinare abbiamo chiesto il menu e lo abbiamo LISTATO 6 - Descrizione degli errori restituiti [ServiceContract] public interface IMailQueueWriter [OperationContract()] [FaultContract(typeof(MailException))] [FaultContract(typeof(Exception))] int AddMessage( Message Mail, string ApplicationKey); letto. Anche i consumer della nostra applicazione prima di poter comunicare con il servizio devono richiedere il contract al servizio e leggerlo: in questo caso il contract è scritto in WSDL, un linguaggio derivato dall XML per la descrizione delle interfacce dei servizi web. WCF, a differenza di quello che accade con i Web Service, nasconde di default il contratto; affinché questo possa essere letto dai consumer è necessario impostare i valori appropriati all interno della sezione Behavior del file di configurazione. I consumer hanno bisogno del WSDL per chiamare il servizio e lo possono leggere con una chiamata HTTP-GET. Vediamo come configurare il servizio per la classe MailQueueWriter. Nel Listato 4 sono presenti tre sezioni utilizzate per configurare gli elementi fondamentali del run-time di WCF: services: questa è la sezione principale utilizzata per configurare l endpoint del servizio. Questa sezione utilizza valori definiti nelle altre due sezioni, vedremo tra poco come sono costruiti i collegamenti tra le sezioni; behaviors: questa sezione è utilizzata in questo caso per pubblicare il contratto WSDL. In particolare il valore dell attributo httpgeturl rappresenta l indirizzo http dal quale il consumer può leggere il WSDL; bindings: questa sezione controlla alcuni aspetti di basso livello della comunicazione, come ad esempio la dimensione del buffer utilizzato per la comunicazione. Si noti infine che tutti i parametri definiti nel file di configurazione si possono impostare anche in maniera programmatica, potendo in questo modo realizzare delle combinazioni molto flessibili. Il collegamento service-binding si ottiene confrontando il valore dell attributo service/endpoint/ 15

9 @binding con il nodo figlio di bindings con lo stesso valore. Il collegamento service-behavior si ottiene invece confrontando il valore dell attributo con il valore dell attributo Il servizio configurato con questo file apre un socket TCP all indirizzo mypc:8000/mqw/ e pubblica il proprio WSDL all indirizzo Hosting del servizio Si deve ora attivare il servizio ed attendere le richieste inviate dai consumer. Per essere attivato, un servizio deve essere ospitato all interno di un processo controllato dal runtime di WCF (si pensi al servizio come ad una dll). Oltre ai servizi Windows che utilizzeremo tra breve, un servizio può essere ospitato ad esempio in una Console Application, in una Windows Forms Application, in IIS ed altri ancora (per approfondimenti si veda [4]). WCF fornisce la classe ServiceHost per la gestione del servizio e dell infrastruttura di comunicazione. È sufficiente passare al costruttore di questa classe il tipo del nostro servizio (in questo esempio Mail- QueueWriter) e WCF si fa carico di creare un istanza LISTATO 7 - Il polling di MailQueue_Sender _smtp = new SmtpClient(); while (!_stop) // polling mailsnd =_client.nextmessagetosend(); while (mailsnd!= null) // coda try MailMessage mail = new MailMessage(); /* valorizza le proprietà della mail */ mail.subject = mailsnd.subject; mail.body = mailsnd.body; /* altre proprietà... */ smpt.send(mail); _client.setresponse( mailsnd.currentattemptid, string.empty, true); catch (Exception ex) _client.setresponse( mailtosend.currentattemptid, ex.message, false); mailsnd =_client.nextmessagetosend(); // fine coda Thread.Sleep(pollingSecond); // fine polling e di passarle le richieste in accordo a quanto definito nel file di configurazione. Tutto quello che dobbiamo fare per attivare il servizio è presentato nel Listato 5 e riassunto di seguito: 1. Creare in Visual Studio 2005 un nuovo progetto di tipo Windows Service; 2. Aggiungere un riferimento al componente.net System.ServiceModel; 3. Aggiungere un riferimento al progetto contenente le classi che implementano i ServiceContract (MailQueue.service); 4. Dichiarare una variabile di tipo ServiceHost; 5. Creare un istanza di ServiceHost e ed aprire il servizio nel metodo OnStart() del Windows Service; 6. Chiudere il servizio nel metodo OnStop() del servizio. Quando il servizio viene avviato, viene eseguito il metodo OnStart nel quale viene creata un istanza di ServiceHost (gestita completamente da WCF) che prepara l infrastruttura di rete necessaria alla comunicazione con il servizio. La chiamata al metodo Open() apre la comunicazione e mette il servizio in attesa. Messaggi ed oggetti Affrontiamo ora il punto che abbiamo lasciato aperto relativo al costruttore della classe Message. Si affrontano qui alcuni argomenti di carattere generale che valgono anche al di fuori dell applicazione che stiamo realizzando. È importante comprenderli poiché questi concetti hanno un impatto diretto sulle classi e sull architettura delle nostre applicazioni. Scegliere di realizzare un applicazione con architettura SOA offre certamente dei vantaggi, ma richiede anche attenzione e consapevolezza poiché non è possibile applicare tutte le tecniche di programmazione utilizzate ad esempio con un architettura basata sui componenti. Applicare un architettura SOA senza conoscerne le caratteristiche può portare a grossi problemi strutturali o al fallimento del progetto. Per ulteriori informazioni sull architettura SOA si può fare riferimento a [3]. Torniamo quindi al problema: l obiettivo del costruttore era di permettere al consumer di creare un istanza della classe Message coerente con la nostra logica applicativa, garantendo quindi che tutte le istanze di quella classe contenessero un valore per i campi corpo, mittente, oggetto e data di spedizione. Riprendiamo per l ultima volta l esempio della 16

10 SOA con WCF pizzeria per capire il problema del costruttore: sappiamo che il menu descrive le pizze disponibili e gli ingredienti utilizzati per ciascuna pizza, così come il DataContract descrive le proprietà della classe. Menu e DataContract non descrivono il comportamento degli oggetti, ma solo le loro caratteristiche. Ordinare una pizza quattro formaggi senza gorgonzola significa, nell ottica SOA, fare una richiesta al pizzaiolo (il servizio) e non alla pizza (la classe) che in questo caso è un oggetto stupido. Analogamente, per verificare se una mail senza destinatari è valida, è necessario contattare il servizio, non la mail stessa. È chiaro quindi che lasciare il costruttore sulla classe Message non ha senso in questo contesto perché Message non deve implementare alcuna funzionalità; sarebbe come se la pizza che ordiniamo fosse in grado di rifiutarsi di cuocere se la combinazione di ingredienti richiesta non fosse valida! Questo è il punto: le classi che decoriamo con gli attributi WCF non sono esposte come oggetti (cioè come entità con delle caratteristiche e dei comportamenti), ma come dei semplici messaggi. WCF non è una tecnologia che permette di serializzare oggetti e trasferirli attraverso la rete (questo è un compito che può svolgere ad esempio una tecnologia come Remoting del.net Framework): WCF è una tecnologia che si occupa di trasferire dati, non comportamenti. Quando un consumer legge il WSDL del servizio, non riesce a leggere il codice all interno del costruttore della classe (e nemmeno di un qualunque altro metodo) e pertanto non può utilizzarli, poiché l infrastruttura utilizzata non è semplicemente progettata per farlo. È necessario quindi implementare la validazione dei dati nel servizio; nel nostro caso, la validazione è realizzata all interno del metodo Add- Message(), cioè del punto d ingresso del servizio. Gestione degli errori Se l istanza del messaggio passata al metodo Add- Message() non è valorizzata correttamente, ad esempio non contiene alcun indirizzo di destinazione, allora il servizio può restituire un messaggio d errore LISTATO 8 - Come inserire un messaggio nella coda static void Main(string[] args) int messageid; mq.message m = new mq.message(); m.from = ; m.fromname = Omar Venturi ; m.html = false; m.subject = Test message #1 ; m.body = Hello World ; m.to = new string[1]; m.to[0] = ; mq.mailqueueserviceclient client = new mq.mailqueueserviceclient(); messageid = client.addmessage(m, DSKWSMPWPECFOC000334IKJ ); al consumer che dovrà essere in grado di gestirlo. Come accennato in precedenza, il Fault Contract è il tipo di contratto utilizzato per descrivere i messaggi di errore che il servizio può restituire. I fault contract sono pubblicati attraverso il WSDL e di conseguenza i consumer li conoscono in anticipo e li possono gestire. Come mostrato nel Listato 6, FaultContract è un attributo che va utilizzato insieme ad OperationContract ed aggiunge ai metodi una descrizione di quali errori possono essere restituiti. Il parametro passato è un DataContract (si veda il codice allegato per maggiori dettagli) e pertanto il meccanismo di inserimento nel WSDL è analogo per i DataContract e per i FaultContract, cambia solo la modalità di attivazione. Sollevare un eccezione nel servizio è un operazione che richiede poche righe di codice: creare un istanza della classe MailException; effettuare il throw di una nuova FaultException alla quale si passa l istanza del punto precedente. MailException me = MailException.Create( Istanza non valida ); throw new FaultException<MailException>(me); Inviare un messaggio A questo punto non ci resta che creare il servizio MailQueue_Sender per l invio dei messaggi ed un semplice client per l inserimento delle mail nella coda 17

11 (nella realtà i client saranno più complessi, come ad esempio applicazioni web). La struttura di MailQueue_Sender è ancora un progetto di tipo Windows Service. È in questo servizio che possiamo decidere la tecnologia da utilizzare per inviare le mail: COM, Java,.NET o altro ancora. Nel nostro caso utilizziamo il client SMTP di.net. Dopo aver avviato il servizio MailQueue_Service, da Visual Studio 2005 è possibile aggiungere una Service Reference inserendo l url del WSDL dell endopoint che espone l interfaccia IMailQueueReader: Visual Studio legge il contratto (ecco perché il servizio deve essere attivo) e crea automaticamente una classe proxy che si interfaccia con il servizio. Questa classe, implementando l interfaccia IMailQueueReader, espone il metodo NextMessageToSend() che estrae dalla coda il primo messaggio. MailQueue_Sender effettua un polling sul servizio MailQueue_Service con una frequenza configurabile: se non ci sono messaggi pronti per essere inviati si mette in attesa, altrimenti invia uno ad uno i messaggi utilizzando per ognuno il server SMTP associato al messaggio, infine contatta nuovamente MailQueue_Service per registrare l esito dell operazione, utilizzando il metodo SetResponse, come mostrato nel Listato 7. Vediamo infine come inserire un messaggio nella coda. Creiamo un progetto di tipo Console Application (ricordiamoci di registrare questa applicazione nella tabella del DB delle applicazioni, assegnando anche una chiave), aggiungiamo una Service Reference al contratto WSDL relativo all interfaccia IMailQueueWriter (se vogliamo allegare documenti dobbiamo aggiungere una Service Reference anche a IMailQueueAttachmentWriter), quindi istanziamo un nuovo messaggio, valorizziamo le proprietà e passiamo l istanza, insieme alla chiave dell applicazione, al metodo AddMessage, come mostrato nel codice seguente e nel Listato 8. static void Main(string[] args) int messageid; mq.message m = new mq.message(); m.from = ; m.fromname = Omar Venturi ; m.html = false; m.subject = Test message #1 ; m.body = Hello World ; m.to = new string[1]; m.to[0] = ; mq.mailqueueserviceclient client = new mq.mailqueueserviceclient(); messageid = client.addmessage( Conclusioni m, DSKWSMPWPECFOC000334IKJ ); Abbiamo visto come l architettura SOA definisca linee guida che permettono di disaccoppiare i servizi utilizzati dalle applicazioni consumer. Naturalmente SOA non è la soluzione a tutti i problemi ed in questo articolo abbiamo dato alcuni elementi per capire quando può essere efficace questa scelta architetturale e quali problemi debbano essere affrontati a seguito della sua adozione. Benché la tecnologia WCF non sia stata creata esclusivamente per le architetture SOA, ne è sicuramente un componente molto importante che permette ai progettisti di concentrarsi su quelle che sono le problematiche di business dell applicazione, demandando al framework le problematiche di comunicazione. CODICE ALLEGATO ftp.infomedia.it SOA-WCF Sistema per la gestione di una coda centralizzata di completamente configurabile. Il progetto consiste di due servizi Windows (uno per la ricezione dei messaggi ed uno per l invio) e di un database. BIBLIOGRAFIA E RIFERIMENTI [1] Juval Lowy Programming WCF Services. O Reilly, 2007 [2] Scott Klein Professional WCF Programming, Wrox, 2007 [3] Service Oriented Architecture (SOA) in the Real World, bb aspx [4] Chris Peiris, Dennis Mulder Hosting and Consuming WCF Services, bb aspx 18

Corso Sviluppatore servizi per il Web (WCF) Lezione 01

Corso Sviluppatore servizi per il Web (WCF) Lezione 01 01 Introduzione Introduzione alla tecnologia WCF Premessa Il corso su WCF di cui state leggendo la prima lezione, vi guiderà alla scoperta di questa nuova tecnologia introdotta da Microsoft per venire

Dettagli

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni Web service Hello world con Visual Studio 2012 Si tratta di un semplice esempio di web service, infatti come tutti I programmi

Dettagli

Progettazione e sviluppo di una composizione di servizi web

Progettazione e sviluppo di una composizione di servizi web Progettazione e sviluppo di una composizione di servizi web Progetto di Tecnologie dei Servizi I Alessandro Marrandino Matr. 739695 Sommario In questo documento è descritto il lavoro svolto per realizzare

Dettagli

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO Standard tecnici Gli standard tecnici di riferimento adottati sono conformi alle specifiche e alle raccomandazioni emanate dai principali

Dettagli

ProgettoSMS. Manuale Gateway Web Services

ProgettoSMS. Manuale Gateway Web Services ProgettoSMS Manuale Gateway Web Services Indice Indice... 2 Introduzione... 3 http Web Services... 4 Risposta... 4 Descrizione delle costanti... 5 AnswerRecipientType... 5 ErrorID... 5 ProtocolType...

Dettagli

Manuale di Integrazione IdM-RAS

Manuale di Integrazione IdM-RAS IdM-RAS Data: 30/11/09 File: Manuale di integrazione IdM-RAS.doc Versione: Redazione: Sardegna IT IdM-RAS Sommario 1 Introduzione... 3 2 Architettura del sistema... 4 2.1 Service Provider... 4 2.2 Local

Dettagli

Gli XML Web Service. Prof. Mauro Giacomini. Complementi di Informatica Medica 2008/2009 1

Gli XML Web Service. Prof. Mauro Giacomini. Complementi di Informatica Medica 2008/2009 1 Gli XML Web Service Prof. Mauro Giacomini Medica 2008/2009 1 Definizioni i i i Componente.NET che risponde a richieste HTTP formattate tramite la sintassi SOAP. Gestori HTTP che intercettano richieste

Dettagli

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa. Introduzione alla tecnologia JMX 1 Viene analizzata l architettura sottostante le Java Managment Extensions (JMX) mostrandone un utilizzo applicativo e analizzando altri possibili scenari d uso di Ivan

Dettagli

Ministero del Lavoro e delle Politiche Sociali

Ministero del Lavoro e delle Politiche Sociali Ministero del Lavoro e delle Politiche Sociali Prospetto Informativo on-line Standard tecnici del sistema informativo per l invio telematico del Prospetto Informativo Documento: UNIPI.StandardTecnici Revisione

Dettagli

La Document Orientation. Come implementare un interfaccia

La Document Orientation. Come implementare un interfaccia La Document Orientation Come implementare un interfaccia Per eliminare l implementazione di una interfaccia da parte di una classe o documento, occorre tirarla su di esso tenendo premuto il tasto ctrl.

Dettagli

Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1

Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1 Nicolò Carandini HTTP, Web Services e RestSharp (II parte) 1 HTTP, Web Services e RestSharp Dopo aver descritto nella prima parte di quest articolo 1 le basi su cui poggia la comunicazione nel Word Wide

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

maildocpro Manuale Installazione

maildocpro Manuale Installazione maildocpro Manuale Installazione versione 3.4 maildocpro Manuale Installazione - Versione 3.4 1 Indice Indice... 2 Creazione database... 3 Database: MAILDOCPRO... 3 Database: SILOGONWEB... 5 Configurazione

Dettagli

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited 2015 http://www.yousms.it SMS API Documentazione Tecnica YouSMS SOAP API YouSMS Evet Limited 2015 http://www.yousms.it INDICE DEI CONTENUTI Introduzione... 2 Autenticazione & Sicurezza... 2 Username e Password... 2 Connessione

Dettagli

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005 Sommario Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005 Introduzione.................................................................................. 1 SOAP........................................................................................

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2015 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di

Dettagli

DA DEFINIRE Sede del corso: Presso GI Formazione in Piazza IV novembre 5, Milano Orari dalle 9.00 alle 13.00 e dalle 14.00 alle 18.

DA DEFINIRE Sede del corso: Presso GI Formazione in Piazza IV novembre 5, Milano Orari dalle 9.00 alle 13.00 e dalle 14.00 alle 18. PERIODO : DA DEFINIRE Sede del corso: Presso GI Formazione in Piazza IV novembre 5, Milano Orari dalle 9.00 alle 13.00 e dalle 14.00 alle 18.00 A CHI E RIVOLTO IL CORSO Questo progetto si rivolge a tutti

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Ambienti di programmazione.net Lezione n. 1

Ambienti di programmazione.net Lezione n. 1 Il Framework Redistribuitable Package e il Framework Sdk (Software Development Kit) 1.1 Italian Presentazione del corso Con l avvento della piattaforma applicativa.net Microsoft è riuscita a portare un

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo

Dettagli

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193 Servers Activatable Nelle lezioni precedenti abbiamo detto che una referenza remota ad un server di tipo UnicastRemoteObject rimane valida finchè il server è in esecuzione. Quando il server termina, o

Dettagli

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Giampiero Allamprese 0000260193 PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Reti di Calcolatori LS prof. Antonio Corradi A.A. 2007/2008 ABSTRACT L obiettivo di questo progetto è la realizzazione

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Novell ZENworks Configuration Management in ambiente Microsoft * Windows *

Novell ZENworks Configuration Management in ambiente Microsoft * Windows * Guida GESTIONE SISTEMI www.novell.com Novell ZENworks Configuration Management in ambiente Microsoft * Windows * Novell ZENworks Configuration Management in ambiente Microsoft Windows Indice: 2..... Benvenuti

Dettagli

SCP: SCHEDULER LAYER. a cura di. Alberto Boccato

SCP: SCHEDULER LAYER. a cura di. Alberto Boccato SCP: SCHEDULER LAYER a cura di Alberto Boccato PREMESSA: Negli ultimi tre anni la nostra scuola ha portato avanti un progetto al quale ho partecipato chiamato SCP (Scuola di Calcolo Parallelo). Di fatto

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 I protocolli di

Dettagli

Corso di Web programming Modulo T3 A2 - Web server

Corso di Web programming Modulo T3 A2 - Web server Corso di Web programming Modulo T3 A2 - Web server 1 Prerequisiti Pagine statiche e dinamiche Pagine HTML Server e client Cenni ai database e all SQL 2 1 Introduzione In questa Unità si illustra il concetto

Dettagli

Definizione delle interfacce di colloquio fra le componenti

Definizione delle interfacce di colloquio fra le componenti Definizione delle interfacce di colloquio fra le componenti (integrazione documento) 1 DOCUMENTO:. 1.2 Emesso da: EMISSIONE VERIFICA APPROVAZIONE Nome firma Verificato da: Approvato da: Area ISIC LISTA

Dettagli

2009. STR S.p.A. u.s. Tutti i diritti riservati

2009. STR S.p.A. u.s. Tutti i diritti riservati 2009. STR S.p.A. u.s. Tutti i diritti riservati Sommario COME INSTALLARE STR VISION CPM... 3 Concetti base dell installazione Azienda... 4 Avvio installazione... 4 Scelta del tipo Installazione... 5 INSTALLAZIONE

Dettagli

BIMPublisher Manuale Tecnico

BIMPublisher Manuale Tecnico Manuale Tecnico Sommario 1 Cos è BIMPublisher...3 2 BIM Services Console...4 3 Installazione e prima configurazione...5 3.1 Configurazione...5 3.2 File di amministrazione...7 3.3 Database...7 3.4 Altre

Dettagli

POR Calabria FSE 2007/2013 Asse II Occupabilità Obiettivo operativo D1

POR Calabria FSE 2007/2013 Asse II Occupabilità Obiettivo operativo D1 Allegato n. 2 al Capitolato speciale d appalto. ENTE PUBBLICO ECONOMICO STRUMENTALE DELLA REGIONE CALABRIA POR Calabria FSE 2007/2013 Asse II Occupabilità Obiettivo operativo D1 Procedura aperta sotto

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Esercizi su strati di trasporto e di rete

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Esercizi su strati di trasporto e di rete Corsi di Reti di Calcolatori (Docente Luca Becchetti) Esercizi su strati di trasporto e di rete 1. Si consideri un protocollo per il trasporto non affidabile di dati realtime. Il sender spedisce un pacchetto

Dettagli

Guida Utente della PddConsole. Guida Utente della PddConsole

Guida Utente della PddConsole. Guida Utente della PddConsole Guida Utente della PddConsole i Guida Utente della PddConsole Guida Utente della PddConsole ii Copyright 2005-2014 Link.it srl Guida Utente della PddConsole iii Indice 1 Introduzione 1 2 Prerequisiti per

Dettagli

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni White paper Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni Panoramica Questo documento analizza il supporto alla programmabilità nell'infrastruttura ACI (Application Centric

Dettagli

Definizione delle interfacce di colloquio fra le componenti

Definizione delle interfacce di colloquio fra le componenti Definizione delle interfacce di colloquio fra le componenti 1 DOCUMENTO:. v 1.1 Emesso da: EMISSIONE VERIFICA APPROVAZIONE Nome Luca Menegatti firma Verificato da: Giancarlo Savoia Approvato da: Angelo

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML Master Universitario di II livello in Interoperabilità Per la Pubblica Amministrazione e Le Imprese Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security

Dettagli

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved

WEB TECHNOLOGY. Il web connette. LE persone. E-book n 2 - Copyright Reserved WEB TECHNOLOGY Il web connette LE persone Indice «Il Web non si limita a collegare macchine, ma connette delle persone» Il Www, Client e Web Server pagina 3-4 - 5 CMS e template pagina 6-7-8 Tim Berners-Lee

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Esercitazione. Formato di compitini e compiti: domande ed esercizi closed book G. Ferrari - Reti di calcolatori. Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:

Dettagli

La serializzazione e deserializzazione nel formato SOAP. A cura del docente Giuliano Pellegrini Parisi - 2009

La serializzazione e deserializzazione nel formato SOAP. A cura del docente Giuliano Pellegrini Parisi - 2009 La serializzazione e deserializzazione nel formato SOAP A cura del docente Giuliano Pellegrini Parisi - 2009 Il protocollo SOAP SOAP ossia Simple Object Access Protocol è un protocollo standard basato

Dettagli

Certificazione di Proxy Applicativi e di applicazioni e servizi di cooperazione di Sistemi Informativi Locali

Certificazione di Proxy Applicativi e di applicazioni e servizi di cooperazione di Sistemi Informativi Locali Certificazione di Proxy Applicativi e di applicazioni e servizi di cooperazione di Sistemi Informativi Locali Ver. 1.0 11 Gennaio 2006 Riferimenti Documentazione CART - Regione Toscana [RT-PDK] Proxy Developer

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

Web Services Dogane LINEE GUIDA

Web Services Dogane LINEE GUIDA Web Services Dogane LINEE GUIDA Pagina 1 di 17 Indice Indice... 2 1. INTRODUZIONE... 3 2. TEST FUNZIONALI SUI WEB SERVICES... 8 3. SICUREZZA... 14 4. FIRMA... 14 5. TRASFORMAZIONE CERTIFICATO DI FIRMA...

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Installation Guide. Pagina 1

Installation Guide. Pagina 1 Installation Guide Pagina 1 Introduzione Questo manuale illustra la procedura di Set up e prima installazione dell ambiente Tempest e del configuratore IVR. Questo manuale si riferisce alla sola procedura

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

Registro SPICCA Architettura del Software

Registro SPICCA Architettura del Software Registro SPICCA Architettura del Software Versione 1.0 del 25/08/2009 Sommario 1 Introduzione... 4 1.1 Scopo... 4 1.2 Obiettivo... 4 1.3 Riferimenti... 4 1.4 Panoramica del documento... 4 2 Rappresentazione

Dettagli

Presentazione di Cedac Software

Presentazione di Cedac Software Agenda Presentazione di Cedac Software SOA ed ESB Analisi di un caso studio Esempi Q&A Presentazione di Cedac Software 1 2 Presentazione di Cedac Software S.r.l. Divisione Software Azienda nata nel 1994

Dettagli

Introduzione ai Web Services Alberto Polzonetti

Introduzione ai Web Services Alberto Polzonetti PROGRAMMAZIONE di RETE A.A. 2003-2004 Corso di laurea in INFORMATICA Introduzione ai Web Services alberto.polzonetti@unicam.it Introduzione al problema della comunicazione fra applicazioni 2 1 Il Problema

Dettagli

Stress-Lav. Guida all uso

Stress-Lav. Guida all uso Stress-Lav Guida all uso 1 Indice Presentazione... 3 I requisiti del sistema... 4 L'installazione del programma... 4 La protezione del programma... 4 Per iniziare... 5 Struttura delle schermate... 6 Password...

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Funzioni di base. Manualino OE6. Outlook Express 6

Funzioni di base. Manualino OE6. Outlook Express 6 Manualino OE6 Microsoft Outlook Express 6 Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito,

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

Plus srl :: www.conplus.it :: info@conplus.it :: Via Morgagni, 4/A 37135 Verona :: Tel. +39 045 580 491 :: Fax 045 82 78 722

Plus srl :: www.conplus.it :: info@conplus.it :: Via Morgagni, 4/A 37135 Verona :: Tel. +39 045 580 491 :: Fax 045 82 78 722 PMF Web-Service Quick-Start Guide Guida Introduttiva Cliente Redatto da Francesco Buratto Redatto il 01 gennaio 2011 Riferimento PMF 2011 Introduzione PMFWS è un web-service HTTP che espone un interfaccia

Dettagli

Progettazione: Tecnologie e ambienti di sviluppo

Progettazione: Tecnologie e ambienti di sviluppo Contratto per l acquisizione di servizi di Assistenza specialistica per la gestione e l evoluzione del patrimonio software della Regione Basilicata. Repertorio n. 11016 del 25/09/2009 Progettazione: Tecnologie

Dettagli

M-BOX V. 1.00. Profilo di Prodotto

M-BOX V. 1.00. Profilo di Prodotto M-BOX V. 1.00 Pag 2 di 8 1 Descrizione M-BOX è un prodotto che consente di inviare e-mail da un applicativo SUPER-FLASH. È nato per semplificare l operazione di invio di e-mail e per gestire le problematiche

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Internet Architettura del www

Internet Architettura del www Internet Architettura del www Internet è una rete di computer. Il World Wide Web è l insieme di servizi che si basa sull architettura di internet. In una rete, ogni nodo (detto host) è connesso a tutti

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Descrizione generale. Architettura del sistema

Descrizione generale. Architettura del sistema Descrizione generale Sister.Net nasce dall esigenza di avere un sistema generale di Cooperazione Applicativa tra Enti nel settore dell Informazione Geografica che consenta la realizzazione progressiva

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

CORSO WEB SERVER, DBMS E SERVER FTP

CORSO WEB SERVER, DBMS E SERVER FTP CORSO WEB SERVER, DBMS E SERVER FTP DISPENSA LEZIONE 1 Autore D. Mondello Transazione di dati in una richiesta di sito web Quando viene effettuata la richiesta di un sito Internet su un browser, tramite

Dettagli

Sicurezza negli ambienti di testing. Grancagnolo Simone Palumbo Claudio

Sicurezza negli ambienti di testing. Grancagnolo Simone Palumbo Claudio Sicurezza negli ambienti di testing Grancagnolo Simone Palumbo Claudio Obiettivo iniziale: analizzare e testare il Check Point VPN-1/FireWall-1 Condurre uno studio quanto più approfondito possibile sulle

Dettagli

1 Vincenzo de Stefano SAP e Servizi Web http://desvino.altervista.org

1 Vincenzo de Stefano SAP e Servizi Web http://desvino.altervista.org 1 Vincenzo de Stefano SAP e Servizi Web http://desvino.altervista.org Prefazione. Da Hello World a Hello World Wide Web. Hello World è la prima frase stampata a video dal primo programma di esempio scritto

Dettagli

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010 Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012 Introduzione a Visual Studio 2005/2008/2010 1 Outline Solution e Project Visual Studio e linguaggio C Visual Studio schermata principale

Dettagli

Seminario di Sistemi Distribuiti: RPC su SOAP

Seminario di Sistemi Distribuiti: RPC su SOAP Corso di Sistemi Distribuiti Prof. S. Balsamo Seminario di Sistemi Distribuiti: RPC su SOAP [ 777775] 1 INTRODUZIONE 3 2 RPC 3 3 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) 3 4 UTILIZZO DI SOAP COME PROTOCOLLO

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni web. Parte 5 Socket Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer

Dettagli

BizTalk server fa parte dell offerta di Microsoft per la grande azienda.

BizTalk server fa parte dell offerta di Microsoft per la grande azienda. Web Service Dopo le applicazioni desktop e quelle per Internet, i servizi Web sono la terza componente essenziale delle applicazioni.net. I Web Service sono una nuova tecnologia che permette la realizzazione

Dettagli

FileMaker 12. Guida ODBC e JDBC

FileMaker 12. Guida ODBC e JDBC FileMaker 12 Guida ODBC e JDBC 2004 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker, Inc.

Dettagli

Corso di Informatica Modulo T3 B2 - Database in rete

Corso di Informatica Modulo T3 B2 - Database in rete Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual

Dettagli

Interoperabilità e cooperazione applicativa tra sistemi informativi

Interoperabilità e cooperazione applicativa tra sistemi informativi Interoperabilità e cooperazione applicativa tra sistemi informativi Michele Ruta Dipartimento di Ingegneria Elettrica e dell Informazione Politecnico di Bari 1di 29 Indice Introduzione ai Port Community

Dettagli

SWIM v2 Design Document

SWIM v2 Design Document PROGETTO DI INGEGNERIA DEL SOFTWARE 2 SWIM v2 DD Design Document Matteo Danelli Daniel Cantoni 22 Dicembre 2012 1 Indice Progettazione concettuale Modello ER Entità e relazioni nel dettaglio User Feedback

Dettagli

Introduzione a Visual Studio 2005

Introduzione a Visual Studio 2005 Fondamenti di Informatica e Laboratorio T-AB Ingengeria Elettronica e Telecomunicazioni a.a. 2008/2009 Introduzione a Visual Studio 2005 Outline Solutions e Projects Visual Studio e il linguaggio C Visual

Dettagli

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop SMS IN Rules SMS IN Rules } Geodrop Geodrop SMS In 2.3 Regole per la manipolazione dei messaggi Guida alla scrittura di condizioni complesse Guida alle condizioni complesse v1.0-it, 7 Dicembre 2012 Indice

Dettagli

Guida alla programmazione e integrazione di servizi in OpenSPCoop. Guida alla programmazione e integrazione di servizi in OpenSPCoop

Guida alla programmazione e integrazione di servizi in OpenSPCoop. Guida alla programmazione e integrazione di servizi in OpenSPCoop i Guida alla programmazione e integrazione di servizi in OpenSPCoop ii Copyright 2005-2008 Link.it s.r.l. iii COLLABORATORI TITOLO : Guida alla programmazione e integrazione di servizi in OpenSPCoop AZIONE

Dettagli

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet Indirizzi Internet e Protocolli I livelli di trasporto delle informazioni Comunicazione e naming in Internet Tre nuovi standard Sistema di indirizzamento delle risorse (URL) Linguaggio HTML Protocollo

Dettagli

INF-1: Specifiche Tecniche di Interfaccia

INF-1: Specifiche Tecniche di Interfaccia INF-1: Specifiche tecniche di Interfaccia INF-1: Specifiche Tecniche di Interfaccia Versione 1.1 Nome doc.: INF-1 Specifiche Interfaccia v1.0.doc Edizione: 1.0 Data emissione: 12/1/2007 INDICE Modifiche

Dettagli

PRESENTAZIONE di WP-Office

PRESENTAZIONE di WP-Office PRESENTAZIONE di WP-Office WP-Office è uno dei moduli del prodotto WebProfessional ed utilizza il framework di WebProfessional (versione 3.4 e superiori), un concetto indirizzato all integrazione degli

Dettagli

Capitolo 1 Introduzione a Gambas

Capitolo 1 Introduzione a Gambas Capitolo 1 Introduzione a Gambas Gambas è stato creato inizialmente da Benoit Minisini, un residente della periferia di Parigi. Secondo Benoit, Gambas è un linguaggio Basic con estensioni per la programmazione

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8

WebRatio. L altra strada per il BPM. Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 WebRatio L altra strada per il BPM Web Models s.r.l. www.webratio.com contact@webratio.com 1 / 8 Il BPM Il BPM (Business Process Management) non è solo una tecnologia, ma più a grandi linee una disciplina

Dettagli

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded WEB SERVER EMBEDDED PER APPLICAZIONI DI Cristian Randieri Per far fronte alle esigenze di sviluppatori che intendono gestire applicazioni professionali per la domotica e la home building automation sfruttando

Dettagli

Spam Manager. Manuale dell utente

Spam Manager. Manuale dell utente Spam Manager Manuale dell utente Manuale dell utente di Spam Manager Versione di Documentazione: 1.0 Informativa legale Informativa di carattere legale. Copyright 2013 Symantec Corporation. Tutti i diritti

Dettagli

Agenda. Checosafaun XML Web Service? Cos è XML Web Service?

Agenda. Checosafaun XML Web Service? Cos è XML Web Service? Agenda Introduzione ai Web Services, Service-Oriented Architecture (SOA) e Windows Communication Foundation (beta) Introduzione ai Web Services Cos è un XML Web service? Progettazione di un Web Service

Dettagli

MailServer. Daniele Dolfini, Giovanni Franza, Neil Otupacca IPAP3 2010/2011. Relazione sulla costruzione del sistema di messaggeria elettronica.

MailServer. Daniele Dolfini, Giovanni Franza, Neil Otupacca IPAP3 2010/2011. Relazione sulla costruzione del sistema di messaggeria elettronica. MailServer Daniele Dolfini, Giovanni Franza, Neil Otupacca IPAP3 2010/2011 Relazione sulla costruzione del sistema di messaggeria elettronica. Parte relativa ai server Giovanni Franza Sono stati implementati

Dettagli

Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni.

Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni. <Task AP3> Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni AP3-Documento Descrittivo degli Accordi di Servizio Versione AP3-specificaADSv1.2.1.doc Pag. 1

Dettagli

Single Sign On sul web

Single Sign On sul web Single Sign On sul web Abstract Un Sigle Sign On (SSO) è un sistema di autenticazione centralizzata che consente a un utente di fornire le proprie credenziali una sola volta e di accedere a molteplici

Dettagli

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688. Sockets e DatagramSocket

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688. Sockets e DatagramSocket Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688 Sockets e DatagramSocket Windows Phone prevede un interfaccia di programmazione per garantire agli sviluppatori

Dettagli

Introduzione ad Active Directory. Orazio Battaglia

Introduzione ad Active Directory. Orazio Battaglia Introduzione ad Active Directory Orazio Battaglia Introduzione al DNS Il DNS (Domain Name System) è un sistema utilizzato per la risoluzione dei nomi dei nodi della rete (host) in indirizzi IP e viceversa.

Dettagli

Internet e Tecnologia Web

Internet e Tecnologia Web INTERNET E TECNOLOGIA WEB Corso WebGis per Master in Sistemi Informativi Territoriali AA 2005/2006 ISTI- CNR c.renso@isti.cnr.it Internet e Tecnologia Web...1 TCP/IP...2 Architettura Client-Server...6

Dettagli

Guida pratica all utilizzo di Zeroshell

Guida pratica all utilizzo di Zeroshell Guida pratica all utilizzo di Zeroshell Il sistema operativo multifunzionale creato da Fulvio.Ricciardi@zeroshell.net www.zeroshell.net Proteggere una piccola rete con stile ( Autore: cristiancolombini@libero.it

Dettagli

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL.

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL. Data: 8 Ottobre 2013 Release: 1.0-15 Feb 2013 - Release: 2.0 - Aggiunta procedura per inviare email da Windows con php Release: 2.1-20 Mar 2013 Release: 2.2-8 Ottobre 2013 - Aggiunta procedura per inviare

Dettagli