SlideShare a Scribd company logo
1 of 14
GraphQL
Panoramica e approccio in
.NET Core
Lorenzo Zarone
Contenuti
graphql
{
cenni_storici_e_motivazioni
cos_è
{
operazioni
componenti
tipi
}
esempi
{
server graphQL
consumo API
}
vantaggi_svantaggi
}
Cenni storici e
motivazioni
 Creato da Facebook nel 2012 per
migliorare le prestazioni delle loro app
 Reso open source nel 2015 con
implementazione in javascript
 Nel 2018 si stacca da Facebook e
diventa GraphQL Foundation
Cos’è GraphQL?
È un query language lato server per le API,
che permette al client di richiedere
solamente i dati di cui ha bisogno.
«Ask for what you need, get exactly that»
query {
persone {
nome
cognome
indirizzo {
città
}
}
}
{
"data": {
"persone": [
{
"nome": "Marcello"
"cognome": "Macchia"
"indirizzo":
{
"città": "Chieti"
}
}
]
}
}
HTTP POST
Cosa non è
GraphQL?
 Non è JavaScript
 Non è un Graph Query Language per
database
 Non si lega a una sorgente dati
specifica
Operazioni
 Query: recupero dati
 Mutations: modifica dati (create,
update, remove)
 Subscriptions: aggiornamenti in tempo
reale
Componenti
 Schema: descrive le funzionalità che il
client può utilizzare
 Types: costituiscono l’insieme di dati su
cui effettuare query
 Fields: singoli attributi che
costituiscono un Type
 Resolvers: funzioni che risolvono le
operazioni in dati
Sistema basato
su tipi
I Types costituiscono lo schema e sono il
punto di contatto tra il client e il server.
Rappresentano il modo con cui il server
espone i dati verso l’esterno e il modo
attraverso cui il client li richiede.
I tipi base sono 5:
 Scalar (Int, Float, String, Boolean e ID)
 Enum
 Object
 Query
 Mutation
Vantaggi
 Un solo endpoint
 Risolve overfetching e underfetching
 Documentazione API autogenerata
 Buona soluzione per sistemi complessi
e microservizi
Svantaggi
 Aggiunge complessità lato server
 Caching (client e server) molto
complesso
 Risponde sempre 200
 Non si può fare upload di file
Link utili
 https://www.youtube.com/watch?v=0Aqy8h0W
3RQ&ab_channel=NDCConferences (Beyond
REST with GraphQL in .Net core - Irina Scurtu)
 https://www.youtube.com/watch?v=Yy9wOhiW
BJg&t=718s&ab_channel=JetBrainsTV (An
Introduction to GraphQL for ASP.NET Core by
Michael Staib)
 https://graphql.org/learn/
 https://graphql-dotnet.github.io/docs/getting-
started/introduction
 https://github.com/zaronc/graphQLDotNetSa
mple
Grazie per l’attenzione!
https://www.giuneco.tech
https://www.linkedin.com
/company/giuneco-s-r-l-
https://www.facebook.co
m/Giuneco/

More Related Content

Similar to GraphQL in .Net Core - di Lorenzo Zarone

Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applicationsmarcocasario
 
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights OverviewAzure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights Overviewazuredayit
 
Laboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioniLaboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioniRoberto Polillo
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without controlRoberto Albano
 
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...italianaSoftware
 
5. Applicazioni Web e CMS
5. Applicazioni Web e CMS5. Applicazioni Web e CMS
5. Applicazioni Web e CMSRoberto Polillo
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
Presentazione Work@Net
Presentazione Work@NetPresentazione Work@Net
Presentazione Work@NetInsubria
 
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5Corso Sviluppo di Applicazioni Web con ASP.NET Core 5
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5Nexsys Srl
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsClaudio Bosticco
 
Stefano Penge - Open labor, opendata for visible and trasparent European job ...
Stefano Penge - Open labor, opendata for visible and trasparent European job ...Stefano Penge - Open labor, opendata for visible and trasparent European job ...
Stefano Penge - Open labor, opendata for visible and trasparent European job ...International Open Data Day Italia
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance ImprovementsMichele Aponte
 
Figure libro "Plasmare il Web"
Figure libro "Plasmare il Web"Figure libro "Plasmare il Web"
Figure libro "Plasmare il Web"Roberto Polillo
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerRoberto Albano
 
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementRoberto Albano
 

Similar to GraphQL in .Net Core - di Lorenzo Zarone (20)

Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
 
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights OverviewAzure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
 
Laboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioniLaboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioni
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without control
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
 
Presentazione tirocinio
Presentazione tirocinio Presentazione tirocinio
Presentazione tirocinio
 
DATI E COOPERAZIONE APPLICATIVA
DATI E COOPERAZIONE APPLICATIVADATI E COOPERAZIONE APPLICATIVA
DATI E COOPERAZIONE APPLICATIVA
 
5. Applicazioni Web e CMS
5. Applicazioni Web e CMS5. Applicazioni Web e CMS
5. Applicazioni Web e CMS
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Presentazione Work@Net
Presentazione Work@NetPresentazione Work@Net
Presentazione Work@Net
 
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5Corso Sviluppo di Applicazioni Web con ASP.NET Core 5
Corso Sviluppo di Applicazioni Web con ASP.NET Core 5
 
14 faq400
14 faq40014 faq400
14 faq400
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
 
Stefano Penge - Open labor, opendata for visible and trasparent European job ...
Stefano Penge - Open labor, opendata for visible and trasparent European job ...Stefano Penge - Open labor, opendata for visible and trasparent European job ...
Stefano Penge - Open labor, opendata for visible and trasparent European job ...
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
 
Figure libro "Plasmare il Web"
Figure libro "Plasmare il Web"Figure libro "Plasmare il Web"
Figure libro "Plasmare il Web"
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more power
 
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile Engagement
 

More from Giuneco S.r.l

App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile PowerappsGiuneco S.r.l
 
Variable Fonts - di Jessica Risica
Variable Fonts - di Jessica RisicaVariable Fonts - di Jessica Risica
Variable Fonts - di Jessica RisicaGiuneco S.r.l
 
Testi per il web - di Elena Granchi
Testi per il web - di Elena GranchiTesti per il web - di Elena Granchi
Testi per il web - di Elena GranchiGiuneco S.r.l
 
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiRisolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiGiuneco S.r.l
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiGiuneco S.r.l
 
Svelte js - di Mattia Bonanni
Svelte js - di Mattia BonanniSvelte js - di Mattia Bonanni
Svelte js - di Mattia BonanniGiuneco S.r.l
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaGiuneco S.r.l
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele SeroniGiuneco S.r.l
 

More from Giuneco S.r.l (10)

App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
Variable Fonts - di Jessica Risica
Variable Fonts - di Jessica RisicaVariable Fonts - di Jessica Risica
Variable Fonts - di Jessica Risica
 
Testi per il web - di Elena Granchi
Testi per il web - di Elena GranchiTesti per il web - di Elena Granchi
Testi per il web - di Elena Granchi
 
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano BrocchiRisolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
Risolvi i tuoi problemi di sviluppo con agilità - di Stefano Brocchi
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
Svelte js - di Mattia Bonanni
Svelte js - di Mattia BonanniSvelte js - di Mattia Bonanni
Svelte js - di Mattia Bonanni
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
 

GraphQL in .Net Core - di Lorenzo Zarone