Tutti per uno e Swagger per tutti!

Documenti analoghi
UI Test Automation with Xamarin

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

Riccardo Solimena e Stefano Dellafiore Javaday IV Roma 30 gennaio 2010

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

RESTful Services. Sistemi Informativi Aziendali A.A. 2012/2013

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

Applicazioni Web, HTTP e REST. Matteo Vaccari Milano XP User Group, 3 ottobre 2007

Le novità di SharePoint 2010 per sviluppatori

Interoperabilità e cooperazione applicativa tra sistemi informativi

WPC074 - SQL Server monitoring con DMVs, Powershell e Python

Ipertesto. Reti e Web. Ipertesto. Ipertesto. Ipertestualità e multimedialità

Introduzione ad Architetture Orientate ai Servizi e Web Service

Smart Cities and Communities and Social Innovation Bando MIUR. D.D. 391/Ric. del 5 luglio Application Store

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

UNIVERSITÀ DEGLI STUDI DI NAPOLI PARTHENOPE FACOLTÀ DI SCIENZE E TECNOLOGIE Corso di Laurea In Informatica

VS002 -Da Windows ad Android e ios in 60 minuti con Xamarin

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

Introduzione. Java HTTP. G. Prencipe

Programma del Corso. Laboratorio

REST; WebSocket (RFC 6455)

Internet of Things & Wireless Sensor Networks

Abilitazione all esercizio della professione di Ingegnere.

Visual Studio 2015 Le novità dell IDE

Tecnologie informatiche multimediali

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Integrare Alfresco con le applicazioni aziendali. Gli strumenti Helper e Importer

Strumenti per l automazione del testing di applicazioni web Javascript-based

Master SIT settembre Corso Web & GIS. Chiara Renso. ISTI- CNR

APPENDICE 4 AL CAPITOLATO TECNICO

Introduzione al corso

Events: Track your favorite artists

Sommario 1 Introduzione progetto Soluzione Integrazione Conclusioni... 10

RESTful Web Service. Andrea Pinazzi. 10 Maggio 2010

Architetture Web Protocolli di Comunicazione

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

Piattaforme Software Distribuite. Roberto Beraldi

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni)

Modelli e strumenti per la generazione automatica di codice

Stack protocolli TCP/IP

Open Source + Cloud = Come sviluppare

Telematica II 7. Introduzione ai protocolli applicativi

Eclipse Day 2010 in Rome

1 Vincenzo de Stefano SAP e Servizi Web

Introduzione ai Web Services Alberto Polzonetti

Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale

Sviluppo di un applicazione mobile per la gestione degli interventi tecnici tramite geolocalizzazione

Concetti base. Impianti Informatici. Web application

Un vincitore è un sognatore. che non si è mai arreso. (Nelson Mandela) Ai miei fantastici genitori

Laboratorio di RETI DI CALCOLATORI

Marco Raimondo WebSphere Business Development, IBM Italia

Programmazione Android

Protocolli applicativi: FTP

SOFTWARE DEVELOPMENT JUNIOR SPECIALIST

N.E.A.T. ( Neutral Environment Application Tools )

Protocolli e architetture per WIS

DUCKMA SRL BACKEND DEVELOPER

Applicazioni web centrati sui dati (Data-centric web applications)

Seminario di Sistemi Distribuiti RPC su SOAP

Indice. 1. Registrazione. 2. Struttura dei dati

Servizi web in LabVIEW

CALENDARIO CORSI SEDE DI PISA Valido dal 01/06/2015 al 31/08/2015

Risorsa N Albanese Madrelingua Inglese Molto Buono

INFORMATION TECHNOLOGY

Ugo Landini & Luigi Fugaro, Jug Roma

SQL Server Data Trasformation Services

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1

url uniform resource locator

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

SETA Selection Tool del Sistema ARTIST

MapServer. Marco Negretti. Politecnico di Milano Polo Regionale di Como

Risolvi le tre principali sfide di business grazie alla modernizzazione delle applicazioni IBM i con PHP!

Docente. Il Corso. Obiettivi PROGRAMMAZIONE PER IL WEB. Alessandro Bianchi. Presentazione del Corso per l a.a Sviluppare

Corso di Applicazioni Telematiche

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

ICMS e SAP FIORI Progetto «AB Services (AB GROUP spa) Apps FioriLike per le attività di campo»

Nuove frontiere dei sistemi GIS tra applicazioni desktop e soluzioni in cloud. Paolo Gull pgull@esriitalia.it

Enrico Fagnoni BOTK IN A NUTSHELL

CHI SIAMO. L unico Training Partner! autorizzato in Italia. Il vostro Transformation Partner,! oltre la software house

sito web sito Internet

Siti web centrati sui dati (Data-centric web applications)

Servizi web. Crazione & restyling di siti professionali DESIGN LA NOSTRA PASSIONE

HTML5 Fast Track. Peter Lubbers. with. Vers Giugno 2012, Roma

Agenda. DBS01 Reports for your app: Reporting Services pros and cons. Gestione del ciclo di vita di un report ARCHITETTURA REPORTING SERVICES

Sistemi di BPM su Cloud per la flessibilità delle PMI

La Platform as a Service di Google. Vincenzo Gianferrari Pini <vgp@gocloud.it>

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

Corso di Web Programming

INFORMATICA. Prof. MARCO CASTIGLIONE. Istituto Tecnico Statale Tito Acerbo - PESCARA

Web Service Architecture

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Tecniche di progettazione e sviluppo di applicazioni mobile

Servizio E-learning di Ateneo Piattaforma Moodle e L2L

Mobile & Technology. Area di formazione. Corso ios base. Corso ios avanzato. Il mondo delle App: idee, creatività, business.

CORSO MOC20480: Programming in HTML5 with JavaScript and CSS3. CEGEKA Education corsi di formazione professionale

Parte II.4 World Wide Web

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 2

Lo strato di applicazione in Internet

MapServer. Marco Negretti

Il World Wide Web. Il Servizio World Wide Web (WWW) WWW WWW WWW WWW. Storia WWW: obbiettivi WWW: tecnologie Le Applicazioni Scenari Futuri.

TECHNOLOGY PLATFORM & DEVELOPMENT TOOLS

Transcript:

presenta Tutti per uno e Swagger per tutti! Nicolò Carandini MVP Windows Development n.carandini@mahiz.it @TPCWare www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 1

Agenda Session Tuning Web Services e REST API Cos è Swagger e a cosa serve Documentazione delle API Tools di generazione Integrazione con Azure Web Services Q&A www.wpc2015.it info@wpc2015.it - +39 02 365738.11 2

Session tuning Che differenza c è tra HTTP e HTML? Che differenza c è tra Web App e Web Service? Chi è Tim Berners-Lee? Cos è un servizio RESTful? www.wpc2015.it info@wpc2015.it - +39 02 365738.11 3

Iniziamo dal World Wide Web www.wpc2015.it info@wpc2015.it - +39 02 365738.11 4

Il Web usa HTTP e HTML www.wpc2015.it info@wpc2015.it - +39 02 365738.11 5

HTTP (Hypertext Transfer Protocol) www.wpc2015.it info@wpc2015.it - +39 02 365738.11 6

Uniform Resource Locator www.wpc2015.it info@wpc2015.it - +39 02 365738.11 7

Web App Vs. Web Service www.wpc2015.it info@wpc2015.it - +39 02 365738.11 8

Quiz Time Lo conoscete? www.wpc2015.it info@wpc2015.it - +39 02 365738.11 9

Roy Fielding Ha scritto una tesi di dottorato dal titolo: Architectural Styles and the Design of Network-based Software Architectures nella quale descrive una metodologia di scrittura dei servizi chiamata REST (Representational State Transfer). E uno dei principali autori delle specifiche dell HTTP (Hypertext Transfer Protocol) presso il W3C, dove ha lavorato con Tim Berners-Lee, meglio noto come "Father of Web". www.wpc2015.it info@wpc2015.it - +39 02 365738.11 10

REpresentational State Transfer Client Server Uniform interface Stateless Cacheable Layered system www.wpc2015.it info@wpc2015.it - +39 02 365738.11 11

REST: Uniform Interface Utilizza i metodi HTTP (Get, Post, Put, Delete, ) per identificare l azione. Usa l URL (Uniform Resource Locator) per identificare la risorsa e i parametri Usa il body per i dati inviati o ricevuti, tipicamente in formato XML o JSON www.wpc2015.it info@wpc2015.it - +39 02 365738.11 12

REST: Stateless www.wpc2015.it info@wpc2015.it - +39 02 365738.11 13

RESTful Web Service Un servizio web che utilizza i metodi HTTP e implementa i principi REST viene chiamato RESTful. ASP.NET WebAPI è un ottimo strumento di realizzazione di servizi RESTful. Attenzione: Non tutti i servizi web di tipo REST sono RESTful, si veda ad esempio il concetto di discoverability: If you are just using Rest for pretty urls mapped to CRUD operations that a consumer must have prior knowledge of and calls according to a well known contract, Roy Fielding would deem it not truly RESTful. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 14

Un esempio di Web Service: TaskTimer Per tener traccia del tempo impiegato dai vari developer per il completamento dei task. Basato sul cloud. Verticalmente scalabile. Utilizzabile da una pluralità di device. Facilmente integrabile. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 15

TaskTimer: il modello www.wpc2015.it info@wpc2015.it - +39 02 365738.11 16

TaskTimer: l architettura del progetto TaskTimer.WebAPI Servizio RESTful TaskTimer.Data Data access layer e Business logic TaskTimer.Core Modello ad oggetti e funzionalità di base www.wpc2015.it info@wpc2015.it - +39 02 365738.11 17

UsersController ASP.NET WebAPI: Routing La chiamata REST viene instradata al metodo del controller che implementa il percorso contenuto nella URL: GET http://tasktimer.com/api/v1/users www.wpc2015.it info@wpc2015.it - +39 02 365738.11 18

DTO Controller Body ASP.NET WebAPI: Binding Una chiamata REST è formata dal Verbo e dal Path e dai dati eventualmente contenuti nei Query parameters, negli Headers e nel Body content. I dati vengono utilizzati per valorizzare i parametri del metodo associato atraverso un operazione di binding: PUT http://tasktimer.com/api/v1/customers/123 { } CompanyName : "Fiat" www.wpc2015.it info@wpc2015.it - +39 02 365738.11 19

Web Service API L Application Programming Interface di un Web Service è definita da: L elenco delle richieste e delle relative possibili risposte Per ciascuna di esse la descrizione dei dati, che possono essere obbligatori o opzionali. Per quanto REST usi un meccanismo standard per effettuare le richieste e ricevere le risposte, occorre comunque avere a disposizione la documentazione delle API. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 20

Documentazione delle API inizialmente viene fatta poi diventa incompleta e alla fine è spesso inesatta www.wpc2015.it info@wpc2015.it - +39 02 365738.11 21

Swagger Un linguaggio "JSON like" dedicato alla descrizione delle Web Service API. E una specifica Open Source, ed è diventato lo standard di fatto del mercato per la descrizione delle RESTful API. Intorno a questo "standard industriale" sono stati sviluppati molti tools di: Generazione automatica del documento Swagger Generazione della documentazione dell API Generazione del modello di classi DTO www.wpc2015.it info@wpc2015.it - +39 02 365738.11 22

Swagger Ui Swagger UI è un insieme di template HTML, codice Javascript e CSS che generano dinamicamente una documentazione dell API fruibile da Web a partire da un documento Swagger. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 23

Swashbuckle Fornito tramite NuGet Package. Genera automaticamente il documento Swagger. Contiene al suo interno Swagger-ui. Genera lo schema dei dati delle API tramite Reflection. Consente la personalizzazione della documentazione Swagger generata e della Swagger UI. Utilizza e include automaticamente i commenti Xml del codice. Supporta la descrizione degli schemi ApiKey, Basic Auth and OAuth2, incluso il supporto UI per l Implicit OAuth2 flow. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 24

Includere la documentazione XML del codice 1. Abilitare la generazione della documentazione XML: 2. Abilitare l uso della documentazione XML in Swagger UI: www.wpc2015.it info@wpc2015.it - +39 02 365738.11 25

Demo: Swagger e Swagger UI con Swashbuckle www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 26

Utilizzare un Web Service RESTful Lato Client, un app usa HTTP per comunicare col servizio Web. I dati vengono scambiati attraverso la serializzazione / deserializzazione di classi DTO (Data Transfer Object), composte di sole proprietà, senza metodi. La generazione di questo modello "anemico" è noiosa e molto ripetitiva. Utilizzare le risposte serializzate per generare le classi DTO non è consigliabile. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 27

Un caso d uso: Azure e Swagger Qualunque operazione effettuabile su Azure è disponibile tramite un servizio web di tipo REST. Le API sono documentate con Swagger Un generatore automatico consente, a partire dalla documentazione scritta in Swagger, di produrre gli SDK di Azure nei vari linguaggi. Questo consente di avere tutti gli SDK sempre aggiornati all ultima versione delle Azure API. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 28

AutoRest E un tool per la generazione di librerie client per l accesso di servizi web RESTful. Come input viene utilizzato il documento che descrive le REST API scritto in formato Swagger. E in grado di generare librerie in diversi linguaggi, come C#, Javascript, ecc. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 29

Come utilizzare AutoRest per generare il codice cliente 1. Scaricare il generatore AutoRest con il NuGet Package Manager. 2. Creare una cartella di lavoro (ad esempio AutoRest). 3. Copiare dal package "autorest.x" il file "autorest.x.nupkg" e la cartella "Tools" nella cartella di lavoro. 4. Copiare nella cartella di lavoro il file swagger.json che descrive l API del servizio web 5. Sempre nella cartella di lavoro, creare il file batch di generazione: 6. Eseguire il file batch. www.wpc2015.it info@wpc2015.it - +39 02 365738.11 30

Come utilizzare AutoRest nell app cliente 1. Scaricare l AutoRest client con il NuGet Package Manager. 2. Copiare il codice generato da AutoRest nel progetto. 3. Istanziare il servizio ed utilizzare le classi proxy per effettuare le richieste e gestire le risposte: www.wpc2015.it info@wpc2015.it - +39 02 365738.11 31

Swagger per tutti SwashBuckle AutoREST HTTP Rest Comunication www.wpc2015.it info@wpc2015.it - +39 02 365738.11 32

Demo: AutoRest Code generation Client App www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 33

Azure App Service www.wpc2015.it info@wpc2015.it - +39 02 365738.11 34

Logic Apps Visual Editor per la creazione del flusso di elaborazione Un elevato numero di template disponibili Supporto per i più popolari servizi SaaS Può utilizzare custom API app fatte da noi BizTalk APIs for per scenari di integrazione evoluti www.wpc2015.it info@wpc2015.it - +39 02 365738.11 35

Demo: Custom API App www.wpc2015.it info@wpc2015.it - +39 02 365738.11 36

Demo: Logic App www.wpc2015.it info@wpc2015.it - +39 02 365738.11 37

Question Time www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 38

Riferimenti Swagger swagger.io Swashbuckle github.com/domaindrivendev/swashbuckle AutoRest github.com/azure/autorest Azure Logic Apps azure.microsoft.com/en-us/documentation/services/app-service/logic www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 39

Articoli Swagger and ASP.NET Web API - Part I: Adding Swagger to Web API project www.wmpratt.com/swagger-and-asp-net-web-api-part-1 Creating Service Contract with AutoRest, Swagger and HAL blog.kloud.com.au/2015/10/26/creating-service-contract-with-autorest-swagger-and-hal Introduzione alle Azure Logic App www.windowsazureitalia.com/articoli/windows-azure/introduzione-azure-logic-apps.aspx Azure Logic App with simple API App with inputs and outputs blogs.msdn.com/b/hosamshobak/archive/2015/03/31/logic-app-with-simple-api-app-with-inputs-and-outputs.aspx www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 40

OverNet Education info@overneteducation.it www.overneteducation.it Tel. 02 365738 Contatti OverNet Education @overnete www.facebook.com/overneteducation www.linkedin.com/company/overnet-solutions www.wpc2015.it www.wpc2015.it info@wpc2015.it - +39 02 365738.11 - #wpc15it 41