際際滷

際際滷Share a Scribd company logo
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
GraphQL in .Net Core - di Lorenzo Zarone
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 linsieme 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 lesterno 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 lattenzione!
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 (20)

Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
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
azuredayit
Laboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioniLaboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioni
Roberto 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 control
Roberto 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
Presentazione tirocinio
Presentazione tirocinio Presentazione tirocinio
Presentazione tirocinio
Claudio Mignanti
DATI E COOPERAZIONE APPLICATIVA
DATI E COOPERAZIONE APPLICATIVADATI E COOPERAZIONE APPLICATIVA
DATI E COOPERAZIONE APPLICATIVA
ALESSANDRO CAPEZZUOLI
5. Applicazioni Web e CMS
5. Applicazioni Web e CMS5. Applicazioni Web e CMS
5. Applicazioni Web e CMS
Roberto Polillo
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
Fabrizio Bernabei
Presentazione Work@Net
Presentazione Work@NetPresentazione Work@Net
Presentazione Work@Net
Insubria
14 faq400
14 faq40014 faq400
14 faq400
Andrea Colombetti
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
Claudio 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 Improvements
Michele 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 power
Roberto Albano
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile Engagement
Roberto Albano
Non solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e PiattaformeNon solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e Piattaforme
Stefano Fago
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
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
azuredayit
Laboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioniLaboratorio internet 9: Sviluppo delle funzioni
Laboratorio internet 9: Sviluppo delle funzioni
Roberto 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 control
Roberto 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
Presentazione tirocinio
Presentazione tirocinio Presentazione tirocinio
Presentazione tirocinio
Claudio Mignanti
5. Applicazioni Web e CMS
5. Applicazioni Web e CMS5. Applicazioni Web e CMS
5. Applicazioni Web e CMS
Roberto Polillo
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
Fabrizio Bernabei
Presentazione Work@Net
Presentazione Work@NetPresentazione Work@Net
Presentazione Work@Net
Insubria
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
Claudio 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 Improvements
Michele 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 power
Roberto Albano
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile Engagement
Roberto Albano
Non solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e PiattaformeNon solo Microservizi: API, Prodotti e Piattaforme
Non solo Microservizi: API, Prodotti e Piattaforme
Stefano Fago

More from Giuneco S.r.l (10)

App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
Giuneco S.r.l
Variable Fonts - di Jessica Risica
Variable Fonts - di Jessica RisicaVariable Fonts - di Jessica Risica
Variable Fonts - di Jessica Risica
Giuneco 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 Granchi
Giuneco 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 Brocchi
Giuneco 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 Gaggio
Giuneco 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 Benedetti
Giuneco S.r.l
Svelte js - di Mattia Bonanni
Svelte js - di Mattia BonanniSvelte js - di Mattia Bonanni
Svelte js - di Mattia Bonanni
Giuneco 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 Greco
Giuneco 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 Coppola
Giuneco S.r.l
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
Giuneco S.r.l
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
Giuneco S.r.l
Variable Fonts - di Jessica Risica
Variable Fonts - di Jessica RisicaVariable Fonts - di Jessica Risica
Variable Fonts - di Jessica Risica
Giuneco 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 Granchi
Giuneco 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 Brocchi
Giuneco 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 Gaggio
Giuneco 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 Benedetti
Giuneco S.r.l
Svelte js - di Mattia Bonanni
Svelte js - di Mattia BonanniSvelte js - di Mattia Bonanni
Svelte js - di Mattia Bonanni
Giuneco 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 Greco
Giuneco 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 Coppola
Giuneco S.r.l
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
Giuneco S.r.l

GraphQL in .Net Core - di Lorenzo Zarone