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



Documenti analoghi
Tale attività non è descritta in questa dispensa

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

File, Modifica, Visualizza, Strumenti, Messaggio

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

PROCEDURE DI FIRMA PER I PIP PRESENTATI NEI BANDI APPRENDISTATO

CdL in Medicina Veterinaria - STPA AA

MANUALE EDICOLA 04.05

Nuovo server E-Shop: Guida alla installazione di Microsoft SQL Server

FPf per Windows 3.1. Guida all uso

MANUALE PARCELLA FACILE PLUS INDICE

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Il Web-Service SDMX dell ISTAT

GateManager. 1 Indice. tecnico@gate-manager.it

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

2015 PERIODO D IMPOSTA

ISTRUZIONI AGGIORNAMENTO TARIFFARIO 2006

Aggiornamento programma da INTERNET

MANUALE UTENTE. Computer Palmare WORKABOUT PRO

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

GESTIONE INCASSI SAGRA. Ver. 2.21

GUIDA UTENTE PRIMA NOTA SEMPLICE

Programmazione avanzata con Visual Basic 2005

1 Introduzione Installazione Configurazione di Outlook Impostazioni manuali del server... 10

Progetto SOLE Sanità OnLinE

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

filrbox Guida all uso dell applicazione DESKTOP Pag. 1 di 27

Manuale NetSupport v Liceo G. Cotta Marco Bolzon

DESKTOP. Uso del sistema operativo Windows XP e gestione dei file. Vediamo in dettaglio queste parti.

SCARICO DATI ONETOUCH Verio per EuroTouch Home GUIDA ALL USO

STRUMENTO PER LA COMPRESSIONE E LA CRIPTAZIONE DI FILE

Gestione Laboratorio: Manuale d uso per l utilizzo del servizio Windows di invio automatico di SMS

CAPITOLO 1 PREREQUISITI DI INSTALLAZIONE SOFTWARE RICAMBI CAPITOLO 2 PROCEDURA

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

CERTIFICATI DIGITALI. Manuale Utente

Servizio di backup dei dati mediante sincronizzazione

MANUALE INSTALLAZIONE E CONFIGURAZIONE

Accedere alle banche dati da casa Il server PROXY di UniTO

Corso base di informatica

Gestione Rapporti (Calcolo Aree)

XTOTEM offline sul proprio PC

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

DINAMIC: gestione assistenza tecnica

1. ACCESSO AL PORTALE easytao

INSERIRE RISORSE. Un etichetta è un semplice testo che descrive una particolare risorsa o attività all interno di un Argomento.

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Corso Eclipse. Prerequisiti. 1 Introduzione

IRSplit. Istruzioni d uso 07/10-01 PC

GERARCHIE RICORSIVE - SQL SERVER 2008

Come installare e configurare il software FileZilla

Guida all uso di Java Diagrammi ER

CONFIGURAZIONE DELLA CONNESSIONE DI RETE WIRELESS IULM_WEB (XP)

CONFIGURAZIONE NUOVO SISTEMA DI POSTA ELETTRONICA CON THUDERBIRD

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Manuale del Docente - Scienze Politiche

Office 2007 Lezione 02. Le operazioni più

IMPORTANTE PER ESEGUIRE QUESTA INSTALLAZIONE NEI SISTEMI OPERATIVI NT-2000-XP, BISOGNA AVERE I PRIVILEGI AMMINISTRATIVI.

Configurazione manuale di ASM in IIS 7

installazione

GESCO MOBILE per ANDROID

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Configurazione client di posta elettronica per il nuovo servizio . Parametri per la Configurazione dei client di posta elettronica

File Server Resource Manager (FSRM)

ISTRUZIONI PER L INSTALLAZIONE DEL PROGRAMMA PER L INVIO AUTOMATICO DELLE FATTURE VIA

Installazione MS SQL Express e utilizzo con progetti PHMI

Integrazione InfiniteCRM - MailUp

Figura 54. Visualizza anteprima nel browser

L ACQUISIZIONE E LA GESTIONE DEI DOCUMENTI ELETTRONICI

Visual basic base Lezione 01. L'ambiente di sviluppo

INSTALLAZIONE MS WINDOWS 7 SU MACCHINA VIRTUALE VMWARE

On-line Corsi d Informatica sul web

Windows. Cos è I componenti principali Le funzioni essenziali. 1

Il calendario di Windows Vista

Microsoft Application Virtualization APP-V Streaming over HTTPS. di Nicola Ferrini

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

PORTALE CLIENTI Manuale utente

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Registratori di Cassa

GUIDA UTENTE MONEY TRANSFER MANAGER

LA GESTIONE DEI VEICOLI AZIENDALI CON MICROSOFT OUTLOOK

ARCHIVIA PLUS VERSIONE SQL SERVER

Backup e Aggiornamenti

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida

Capitolo 4 Pianificazione e Sviluppo di Web Part

D R O P B O X COS È DROPBOX:

Guida informatica per l associazione #IDEA

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011

Cliccare su "Esegui" oppure su salva se si desidera effettuare l'installazione in un secondo momento.

MANUALE TECNICO n AGGIORNATO AL GESTIONE DOCUMENTALE

Transcript:

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 del tipo Hello world! anche quello qui presentato ha il solo scopo di introdurre la tecnologia e il processo di sviluppo di un applicazione di tipo web service, sviluppata con il linguaggio C# e ambiente di sviluppo Visual Studio 2012. Per questa prima applicazione non si farà uso del template WCF Service Application presente in Visual Studio al fine di comprendere meglio come implementare un web service. Per testare l applicazione sviluppata, si fa uso del web server IIS Express 8.0 che può essere installato durante l installazione di Visual Studio scegliendo la funzionalità opzionale Web Development. In caso contrario è scaricabile gratuitamente dal sito Microsoft. I passi da seguire per la realizzazione del servizio sono: 1) creazione della soluzione 2) creazione dell interfaccia che definisce il contratto di servizio per l applicazione WCF 3) implementazione del servizio 4) hosting del servizio nel web server Microsoft Internet Information Services (IIS) 5) creazione dell applicazione client che richiede questo servizio

Creazione della soluzione HelloWorld Come per tutte le applicazioni sviluppate con Visual Studio è necessario creare una soluzione (HelloWorld.sln) che includa i vari progetti 1) Avviare Visual Studio 2012 e selezionare: File Nuovo Progetto, nella finestra che compare selezionare: Altri tipi di progetto Soluzioni di Visual Studio, quindi nella finestra centrale cliccare su Soluzione vuota, come mostrato in figura 1. figura 1 Finestra di Visual Studio per la creazione di una soluzione vuota 2) Nella finestra che compare, a destra si trova Esplora Soluzione (se non compare selezionarla dal menu Visualizza), cliccando con il tasto destro del mouse su Soluzione HelloWorld selezionare nel menu contestuale Aggiungi Nuovo progetto

3) Nella finestra che compare, nel menu a sinistra dei Modelli, selezionare Visual C# e nella parte centrale scegliere Libreria di classi, in questo modo creiamo una libreria di classi (avrà infatti estensione.dll) che chiamiamo HelloWorldService (nome da inserire nella casella di testo in basso), come mostrato in figura 2. figura 2 Finestra di creazione del progetto HelloWorldService facente parte della soluzione HelloWorld

4) Cliccando sul pulsante OK compare la finestra mostrata in figura 3. figura 3 Finestra iniziale di Visual Studio relativa alla creazione della libreria di classi HelloWorldService 5) Nella finestra Esplora Soluzione posizionare il mouse sul progetto HelloWorldService e con il tasto destro selezionare Aggiungi riferimento ; nella finestra che compare selezionare Assembly Framework System.ServiceModel cliccare su OK Da notare che in automatico oltre a System.ServiceModel si è aggiunto anche System.Xml.Linq, utile quando si devono inviare interrogazioni a un database.

Creazione della soluzione HelloWorld Il primo elemento da costruire per la realizzazione del nostro servizio è l interfaccia (service contract interface). 1) Nella finestra Esplora Soluzione selezionare con il mouse il progetto HelloWorldService e con il tasto destro selezionare Aggiungi Nuovo elemento, nella finestra che compare selezionare nel menu a sinistra Installato Elementi di Visual C# e nella finestra centrale Interfaccia e scrivere nella casella di testo in basso il nome IHelloWorldService.cs, quindi cliccare sul pulsante Aggiungi. 2) Il passo precedente ha creato un file vuoto relativo all interfaccia quale scriviamo ora il codice necessario: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceModel; namespace HelloWorldService { [ServiceContract] interface IHelloWorldService { [OperationContract] string GetMessage(string nome); } } in particolare: - l interfaccia è definita public; - si inserisce un attributo ServiceContract ad indicare che l interfaccia definisce un contratto di servizio all interno di un applicazione WFC; - si inserisce il metodo GetMessage che prevede di avere in input una stringa e restituisce in output un altra stringa; - nel metodo GetMessage si definisce l attributo OperationContract che indica che il metodo implementa un operazione come parte di un contratto di servizio di un applicazione WCF.

Implementazione del contratto di servizio HelloWorldService Una volta definita l interfaccia al servizio, si passa all implementazione del contratto di servizio. Si tratta di scrivere il relativo codice C# nella classe vuota che Visual Studio aveva creato quando abbiamo aggiunto la libreria delle classi (vedi figura 3) alla nostra soluzione. 1) Nella finestra Esplora Soluzioni selezionare con il tasto destro del mouse il file Class1.cs e rinominarlo: HelloWorldService.cs, quindi modificare il codice della classe per far sì che implementi l interfaccia IHelloWorldService. Nella classe deve essere anche definito il metodo GetMessage. Il codice da scrivere è quindi il seguente: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorldService { public class HelloWorldService: IHelloWorldService { public string GetMessage(string nome) { return "Hello world da " + nome + "!" } } } 2) Eseguire la compilazione del progetto.

Hosting del servizio WCF HelloWorld in IIS Abbiamo costruito il servizio HelloWorld definendo la libreria HelloWorldService, ora deve essere trasferito in un ambiente web server per far sì che le applicazioni client possano accedervi. 1) Creazione dell applicazione host A scopo didattico creeremo manualmente questa applicazione, di norma però si utilizzano le numerose host application già costruite per i servizi WCF presenti in Visual Studio 2012. Per prima cosa è necessario aggiungere alla nostra soluzione un sito web: nella finestra Esplora Soluzioni cliccare con il tasto destro del mouse sul file della soluzione e selezionare Aggiungi Nuovo sito web (se non è visualizzato il file, andare su Strumenti Opzioni Progetti e soluzioni e nella finestra a fianco spuntare la voce Mostra sempre soluzione ). Selezionare Visual C# e nella finestra a fianco Sito Web ASP.NET vuoto, cambiare il nome che compare nella casella di testo da WebSite1 a HelloWorld\HostDevServer dando il percorso completo di dove si trova la cartella dell applicazione HelloWorld, quindi cliccare su OK. Nella finestra Esplora soluzioni compare ora un nuovo elemento: HostDevServer (vedi figura 4). figura 4 Finestra Esplora soluzioni con i due progetti HelloWorldService e HostDevServer

Ora si deve impostare il progetto relativo al sito web, come quello principale da cui si avvia tutta l applicazione. Selezionare con il tasto destro del mouse HostDevServer e scegliere Imposta come progetto d avvio, come risultato si vedrà il nome del progetto in grassetto nella finestra Esplora soluzioni. Ora si deve aggiungere al sito web il riferimento al servizio HelloWorld, questo avviene selezionando con il tasto destro del mouse il sito web HostDevServer e scegliendo Aggiungi riferimento. Compare la finestra Gestione riferimenti in cui si seleziona Soluzione Progetti e si spunta la casella relativa al progetto HelloWorldService (vedi figura 5). figura 5 Finestra Gestione riferimenti per il sito web HostDevServer Si vedrà ora comparire una nuova directory bin sotto il sito web HostDevServer e due file sono stati copiati in questa nuova directory dal progetto HelloWorldService. In questo modo, quando questo sito web sarà acceduto, il web server IIS cercherà il codice da eseguire in questa directory bin.

2) Testing dell applicazione host Se si avvia il sito web HostDevServer selezionando Debug Avvia debug, si otterrà che nel browser è visualizzata una pagina vuota con una segnalazione di errore (vedi figura 6). figura 6 Pagina del browser con la segnalazione di errore Per ora usiamo CTR+F5 per avviare l applicazione senza debug oppure nel file web.config sostituire debug= true con debug= false e quando compare la finestra di avviso, selezionare l opzione Esegui senza debug.

3) Modifica del file web.config Per specificare che il sito web deve ospitare il servizio HelloWorldService è necessario modificare il file web.config inserendo la parte relativa all elemento system.servicemodel, il risultato sarà il seguente: <?xml version="1.0" encoding="utf-8"?> <!-- Per ulteriori informazioni sulla configurazione dell'applicazione ASP.NET, visitare http://go.microsoft.com/fwlink/?linkid=169433 --> <configuration> <system.web> <compilation debug="false" targetframework="4.5" /> <httpruntime targetframework="4.5" /> </system.web> <system.servicemodel> <servicehostingenvironment > <serviceactivations> <add factory="system.servicemodel.activation.servicehostfactory" relativeaddress="~/hostdevserver/helloworldservice.svc" service="helloworldservice.helloworldservice"/> </serviceactivations> </servicehostingenvironment> <behaviors> <servicebehaviors> <behavior> <servicemetadata httpgetenabled="true"/> </behavior> </servicebehaviors> </behaviors> </system.servicemodel> </configuration> nel file sono definiti: - configuration: è il nodo root del file - system.servicemodel: è il nodo top per tutte le impostazioni specifiche per i servizi WCF - servicehostingenvironment: è usato per specificare l ambiente di hosting - serviceactivations: è il punto in cui si specifica il nome del servizio e il suo indirizzo, permette di definire le impostazioni di attivazione di un servizio virtuale che corrisponde al

proprio tipo di servizio WCF; in questo modo si possono attivare servizi ospitati in WAS/IIS senza avere un file.svc. - servicebehaviors si possono definire comportamenti specifici per un servizio, ad esempio per il nostro servizio HelloWorld si definisce un solo comportamento che abilita lo scambio di metadati per il servizio. 4) Esecuzione dell applicazione host A questo punto se si avvia l applicazione con CTR+F5 (cioè senza debug) si ha ancora la finestra di errore, ma questa volta abbiamo un servizio ospitato in questo sito web. Quindi se aggiungiamo HostDevServer/HelloWorldService.svc alla fine dell indirizzo (che sarà del tipo: http://localhost:50685/) si otterrà una descrizione del servizio in hosting (vedi figura 7). In particolare, si avranno informazioni su come ottenere il file WSDL che descrive il servizio e come creare un client che usufruisce di questo servizio. figura 7 pagina web con la descrizione del servizio Hello World Cliccando sul link wsdl presente nella pagina web si ottiene il file wsdl xml generato per questo servizio. Questo file contiene tutte le informazioni di contratto per questo servizio e sarà usato per generare un proxy per la nostra applicazione client.

Creazione di un client che usufruisce del servizio WCF HelloWorld L applicazione client sarà creata come un applicazione console scritta in C# che richiama il servizio WCF. 1) Creazione del progetto C# per l applicazione client Nella finestra Esplora Soluzioni cliccare con il tasto destro del mouse su HelloWorld e aggiungere un nuovo progetto, nella finestra che compare selezionare Visual C# nel menu a sinistra e Applicazione Console nella finestra centrale. Nella casella di testo in basso cambiare solo il nome in HelloWorldClient, quindi cliccare su OK. Viene così creato un nuovo progetto e aggiunto alla soluzione. 2) Generazione dei file proxy e configurazione Per utilizzare un servizio WCF non REST-ful, l applicazione client deve per prima cosa ottenere o generare una classe proxy. Inoltre, serve avere un file di configurazione per specificare alcune informazioni come il binding del servizio, l indirizzo del servizio e il contratto. Per generare questi due file possiamo usare l utility svcutil.exe da linea di comando, questa modalità non è molto agevole per lo sviluppatore, quindi in Visual Studio è stata introdotta una modalità automatica per generare i file proxy e di configurazione quando si aggiunge un riferimento al servizio WCF. Si tratta comunque di una chiamata alla stessa applicazione svcutil.exe come faremo ora, manualmente. - Eseguire il servizio con CTR+F5 - Aprire la finestra di comando di Windows (Prompt dei commandi), cambiare la directory posizionandosi su quella dell applicazione client, quindi eseguire il comando svcutil.exe con la seguente sintassi: "C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" http://localhost:50685/hostdevserver/helloworldservice.svc?wsdl /out:helloworldserviceref.cs /config:app.config

Il risultato è quello mostrato in figura 8. figura 8 Esecuzione del comando svcutil.exe Il risultato di tale comando è la generazione di due file: - HelloWorldServiceRef.cs: è il file per il proxy, in esso si trova la classe client HelloWorldServiceClient creata per implementare l interfaccia IHelloWorldService, all interno di questa classe l implementazione dell operazione GetMessage è solo un wrapper che delega la chiamata alla reale implementazione dell operazione. - app.config: è il file di configurazione in cui troviamo le definizioni del servizio HelloWorldService come l indirizzo, il binding, i timeout e i comportamenti relativi alla sicurezza. 3) Personalizzare l applicazione client Prima di far eseguire l applicazione client è necessario effettuare ancora alcune operazioni: - ricaricare il file app.config, - aggiungere il file proxy al progetto: click su HelloWorldClient e sull icona mostra tutti i file, così vengono visualizzati tutti i file della cartella, tra i quali anche HelloWorldServiceRef.cs che è il file proxy, ciò però non significa che il file è incluso nel progetto. Selezionare quindi il file con il tasto destro e scegliere Includi nel progetto ; - aggiungere un riferimento al namespace System.ServiceModel (come era stato fatto per HelloWorldService), click con il tasto destro del mouse sul progetto HelloWorldClient Aggiungi riferiemnto Assembly Framework System.ServiceModel, quindi click su OK; - modificare il codice program.cs per chiamare il servizio. Aggiungere la seguente riga per istanziare l oggetto client, in modo che quando è in esecuzione il client cerca il default client endpoint nel file app.config (e lo trova a seguito dell utilizzo di svcutil): HelloWorldServiceClient client = new HelloWorldServiceClient();

A questo punto possiamo chiamare il suo metodo in modo analogo ad un qualsiasi altro oggetto: Console.WriteLine(client.GetMessage("Chiara")); Scrivendo un nome come parametro del metodo e si otterrà il messaggio sulla console. 4) Esecuzione dell applicazione client Assicurarsi che il l applicazione del servizio host HostDevServer sia stata avviata, si può anche cliccare con il tasto destro sul progetto relativo e scegliere Visualizza nel browser. Quindi, nella finestra Esplora Soluzioni cliccare con il tasto destro su HelloWorldClient e selezionare Imposta come progetto di avvio e far eseguire con CTR+F5. Dovrebbe comparire il risultato come mostrato in figura 9. figura 9 Risultato dell esecuzione del servizio HelloWorld 5) Impostare come AutoStart l applicazione relativa al servizio AutoStart In realtà il servizio dell applicazione host deve essere avviato prima di far eseguire il programma client, quindi è necessario apportare alcune modiche alla nostra soluzione al fine di rendere automatico l avvio del servizio immediatamente prima che noi mandiamo in esecuzione il programma client. Click con il tasto destro del mouse su Soluzione HelloWorld nella finestra Esplora Soluzioni, selezionare Proprietà e comparirà la finestra relativa. Selezionare l opzione Progetti di avvio multipli e cambiare l azione per i progetti HostDevServer e HelloWorldClient da Nessuno a Avvia senza eseguire debug. Spostare HostDevServer in prima posizione usando le freccette a lato.

Per testarne il funzionamento, prima fermare il servizio e poi avviarlo con CTR+F5, si noterà che HostDevServer è avviato per primo e che il programma client esegue senza errori. Importante: quanto descritto funziona all interno dell IDE Visual Studio. Se si avvia il programma client dal browser senza prima aver avviato il servizio, questo non sarà eseguito automaticamente e si otterrà un messaggio di errore relativo alla mancanza di un endpoint in ascolto.