SlideShare a Scribd company logo
@MarkLechtermann
Mark Lechtermann
@MarkLechtermann
GraphQL with .NET CORE
@MarkLechtermann
What‘s wrong with REST?
@MarkLechtermann
Architectural Styles and the Design of
Network-based Software Architectures
DISSERTATION
DOCTOR OF PHILOSOPHY
Roy Thomas Fielding
2000
@MarkLechtermann
@MarkLechtermann
2000
@MarkLechtermann
@MarkLechtermann
The internet in the year 2000
@MarkLechtermann
not before 2002
@MarkLechtermann
not before 2004
@MarkLechtermann
2019
@MarkLechtermann
2000 vs 2019
@MarkLechtermann
Web 2000
GET http://example.com
static HTML
@MarkLechtermann
Web 2000
GET http://example.com
static HTML
@MarkLechtermann
Web 2019
I want JSON!
I want HTML!
I want JS!
I want IOT data!
I want a stream!
@MarkLechtermann
Web 2019
I want JSON!
I want HTML!
I want JS!
I want IOT data!
I want a stream!
@MarkLechtermann
Again: What‘s wrong with REST?
@MarkLechtermann
Over-fetching
GET http://example.com/api/v1/whiskys/1
{
"name":"ArdbegTEN",
"strength":46,
"distillery":"Ardbeg",
"size":"700 ml",
"prize":45.00,
…
}
@MarkLechtermann
Over-fetching
GET http://example.com/api/v1/whiskys/1
{
"name":"ArdbegTEN",
"strength":46,
"distillery":"Ardbeg",
"size":"700 ml",
"prize":45.00,
…
}
But all I wanted
was the prize!
@MarkLechtermann
Under-fetching
GET http://example.com/api/v1/whiskys
"items":[
"http://example.com/api/v1/whiskys/1"
"http://example.com/api/v1/whiskys/2"
…
]
GET http://example.com/api/v1/whiskys/1
GET http://example.com/api/v1/whiskys/2
...
@MarkLechtermann
Under-fetching
GET http://example.com/api/v1/whiskys
"items":[
"http://example.com/api/v1/whiskys/1"
"http://example.com/api/v1/whiskys/2"
…
]
GET http://example.com/api/v1/whiskys/1
GET http://example.com/api/v1/whiskys/2
...
But all I wanted
was a list of names!
@MarkLechtermann
REST Properties
● Performance
● Reliability
● Simplicity
● Scalability
● Modifiability
● Portability
@MarkLechtermann
REST Benefits
● Performance (with HTTP2)
● Well-established
● Media types
● Decoupling server and client
@MarkLechtermann
The problem with REST
● Difficult to implement correctly
● Tooling for clients
● API description format
– Swagger, RAML, API Blueprint, Odata...?
● It's not a Standard
@MarkLechtermann
We call it a "REST"-API
@MarkLechtermann
Richardson Maturity Model
HATEOAS
HTTP Verbs
Resources
Swamp of POX
@MarkLechtermann
Let's be honest!
HATEOAS?
@MarkLechtermann
But what about OpenAPI/Swagger?
@MarkLechtermann
OpenAPI/Swagger kills Hypermedia!
@MarkLechtermann
Nobody stops us from
using the endpoint directly!
@MarkLechtermann
REST without Hypermedia
is CRUD over HTTP!
@MarkLechtermann
@MarkLechtermann
@MarkLechtermann
react.js conf 2015
not only for React!
@MarkLechtermann
Knots and Edges
not
Resources
@MarkLechtermann
Spec
● https://graphql.github.io/graphql-spec/
● Latest stable version
– June 2018
@MarkLechtermann
Let's build an App
@MarkLechtermann
Whisky Distillery
0..1
*
WhiskyApp
@MarkLechtermann
Whisky Distillery
0..1
*
WhiskyApp
Iknow!
Independentbottler,blends,…
butKISS!
@MarkLechtermann
Whisky
+Name : string
+Age : uint
+Strength: float
+ Size: uint
Distillery
+Name : string
+Owner : string
+SpiritStills : uint
+WashStills : uint
+Capacity : uint64
+Region : string
0..1
*
WhiskyApp
@MarkLechtermann
@MarkLechtermann
@MarkLechtermann
We need
Components!
@MarkLechtermann
whiskys
@MarkLechtermann
whiskys
name
age
@MarkLechtermann
whiskys
name
age
distillery
@MarkLechtermann
whiskys
name
age
distillery
name
owner
@MarkLechtermann
{
whiskys {
name
age
distillery {
name
owner
}
}
}
@MarkLechtermann
{
whiskys {
name
age
distillery {
name
owner
}
}
}
GraphQL
Query
APPROVED
@MarkLechtermann
@MarkLechtermann
A query language for your API
@MarkLechtermann
GraphQL Feature
● Query
● Mutation
● Subscription
@MarkLechtermann
Schema
@MarkLechtermann
Schema
schema {
query: WhiskyRootQuery
mutation: WhiskyRootMutation
}
@MarkLechtermann
Scalar Types
type Whisky {
MyField1 : ID // unique identifier String
MyField2 : Int
MyField3 : Float // signed double-precision
MyField4 : String // UTF-8
MyField5 : Boolean
}
@MarkLechtermann
Type
type WhiskyRootQuery {
whiskys: [Whisky]
whisky(id: ID): Whisky
}
@MarkLechtermann
Lists and Non-Null
type WhiskyRootQuery {
whiskys: [whisky!]!
whisky(id: ID!): whisky
}
@MarkLechtermann
Interfaces
interface Drink {
id: ID!
name: String!
}
@MarkLechtermann
Implements Interface
type Whisky implements Drink {
region: WhiskyRegion
}
@MarkLechtermann
Enumerations
enum WhiskyRegion {
LOWLANDS
HIGHLANDS
SPEYSIDE
CAMPELTOWN
ISLAY
THE ISLANDS
}
@MarkLechtermann
Query
@MarkLechtermann
Query
query {
whiskys {
id
name
}
}
"data" {
"whiskys" : [
{
"id" : "1",
"name": "Ardbeg Ten"
}
]
}
@MarkLechtermann
Query
{
whiskys {
id
name
}
}
"data" {
"whiskys" : [
{
"id" : "1",
"name": "Ardbeg Ten"
}
]
}
@MarkLechtermann
Query with Arguments
{
whisky(id: "1") {
id
name
}
}
"data" {
"whisky" : {
"id" : "1",
"name": "Ardbeg Ten"
}
}
@MarkLechtermann
Alias
{
first : whisky(id:"1") {
name
}
second : whisky(id:"2") {
name
}
}
{
"data": {
"first": {
"name": "Ardbeg TEN"
},
"second": {
"name": "Ardbeg Uigeadail"
}
}
}
@MarkLechtermann
Fragments
{
first : whisky(id:"1") {
...myFields
}
second : whisky(id:"2") {
...myFields
}
}
fragment myFields on WhiskyType{
name
id
strength
}
{
"data": {
"first": {
"name": "Ardbeg TEN",
"id": "1",
"strength": 46
},
…
}
}
@MarkLechtermann
Variables
query Compare($a: ID!, $b: ID!){
first : whisky(id:$a) {
...myFields
}
second : whisky(id:$b) {
...myFields
}
}
fragment myFields on WhiskyType {
name
id
strength
}
{
"data": {
"first": {
"name": "Ardbeg TEN",
"id": "1",
"strength": 46
},
…
}
}
@MarkLechtermann
Directives - include
query GetWhisky($id: ID!, $dInfo: Boolean = false) {
whisky(id:$id) {
id
name
destillery @include(if: $dInfo) {
name
}
}
}
{"id": "1", "dInfo": true}
{
"data": {
"whisky" : {
"id" : "12,
"name" : "Ardbeg TEN"
"destillery" : {
"name" : "Ardbeg"
}
}
}
}
@MarkLechtermann
Directives - skip
query GetWhisky($id: ID!, $dInfo: Boolean = false) {
whisky(id:$id) {
id
name
destillery @skip(if: $dInfo) {
name
}
}
}
{"id": "1", "dInfo": true}
{
"data": {
"whisky": {
"id": 1,
"name": "Ardbeg TEN",
}
}
}
@MarkLechtermann
Mutation
@MarkLechtermann
mutation
mutation {
deleteWhisky(id: "1")
}
{
"data" : {
"deleteWhisky" : true
}
}
@MarkLechtermann
mutation
mutation {
addWhisky(
destilleryId : "1"
whisky : {
name : "MyWhisky"
age : 0
size : 70
strength : 40
}
) {
id
name
}
}
{
"data" : {
"addWhisky" : {
"id" : "123",
"name" : "MyWhisky",
}
}
}
@MarkLechtermann
Let‘s start with .NET Core
@MarkLechtermann
.NET Libraries
● graphql-dotnet/graphql-dotnet (~3000)
● ckimes89/graphql-net ( ~700)
● ChilliCream/hotchocolate ( ~300)
@MarkLechtermann
We use
graphql-dotnet/graphql-dotnet
in this example
@MarkLechtermann
Code First
or
Schema First
@MarkLechtermann
$ dotnet new webapi
$ dotnet add package GraphQL
$ dotnet add package GraphQL.Server.Transports.AspNetCore
# Optional:
$ dotnet add package GraphQL.Server.Ui.GraphiQL
$ dotnet add package GraphQL.Server.Ui.Playground
$ dotnet add package GraphQL.Server.Ui.Voyager
Create a new project
@MarkLechtermann
public class WhiskyType : ObjectGraphType<WhiskyEntity>
{
public WhiskyType()
{
Field<NonNullGraphType<IdGraphType>>().Name("id");
Field(entity => entity.Name).Description("");
}
}
Add Types
@MarkLechtermann
public class WhiskyQuery : ObjectGraphType
{
public WhiskyQuery()
{
this.Field<WhiskyType>(
name: "whisky",
resolve: context => new WhiskyType());
}
Add Query
@MarkLechtermann
public class WhiskyAppSchema : Schema
{
public WhiskyAppSchema(IDependencyResolver resolver)
: base(resolver)
{
Query = resolver.Resolve<WhiskyQuery>();
Mutation = ...
}
}
Add a Schema
@MarkLechtermann
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<WhiskyType>();
services.AddScoped<WhiskyQuery>();
services.AddScoped<ISchema, WhiskyAppSchema>();
services.AddScoped<IDependencyResolver>(
s => new FuncDependencyResolver(s.GetRequiredService));
services.AddSingleton<IDocumentExecuter, DocumentExecuter>();
services.AddSingleton<IDocumentWriter, DocumentWriter>();
services.AddGraphQL();
}
Add Services
@MarkLechtermann
app.UseGraphQL<ISchema>("/graphql");
// Optional:
app.UseGraphiQLServer(new GraphiQLOptions());
app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());
app.UseGraphQLVoyager(new GraphQLVoyagerOptions());
Add Middleware
@MarkLechtermann
N + 1 Problem and Batching!
@MarkLechtermann
Use a Dataloader
@MarkLechtermann
services.AddSingleton<IDataLoaderContextAccessor,
DataLoaderContextAccessor>();
services.AddSingleton<DataLoaderDocumentListener>();
DataLoader - Services
@MarkLechtermann
public WhiskyType( IDataLoaderContextAccessor accessor)
{
…
Field<DestilleryType, DestilleryEntity>()
.Name("destillery")
.ResolveAsync(context => {
var loader = accessor.Context.GetOrAddBatchLoader<string,
DestilleryEntity>("whisky_destillery", ... );
return loader.LoadAsync(context.Source.Id);
});
}
DataLoader
@MarkLechtermann
Pro GraphQL
● Easy to learn
● Vendor agnostic
● Pragmatic
● Contract
● Introspection
@MarkLechtermann
Contra GraphQL
● Content negotiation
● Media type support
● Caching
● "Only" POST
– What about GET, DELETE, PUT?
@MarkLechtermann
API Gateway
REST
JSON over HTTP
OData
gRPC
@MarkLechtermann
What are the alternatives?
@MarkLechtermann
REST! ;-) ...
@MarkLechtermann
… with OData
@MarkLechtermann
OData @ Build 2019
● Microsoft PowerApps
– https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/overview
● Build2019: Microsoft Graph powers the Microsoft 365 platform
– https://developer.microsoft.com/en-us/office/blogs/build-2019-microsoft-graph-powers-the-microsoft-365-platform/
● Graph Explorer
– https://developer.microsoft.com/en-us/graph/graph-explorer
● Expamples:
– https://graph.microsoft.com/v1.0/me/?$select=givenName
– https://graph.microsoft.com/v1.0/me?$select= displayName, skills
@MarkLechtermann
Contra OData
● Strong coupling with the database
● Query only with GET
– Long and complex URL
@MarkLechtermann
docker run -p 5000:5000
marklechtermann/whiskygraphqlapp
Docker Image
@MarkLechtermann
https://github.com/marklechtermann/
whiskygraphqlapp
Source Code
@MarkLechtermann
Thanks!
Any Questions?

More Related Content

Similar to GraphQL with .NET Core

Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatforms
codebits
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
Sarah Maddox
 
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on ScenarioLarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC
 
Building GraphQL API in C#.pptx
Building GraphQL API in C#.pptxBuilding GraphQL API in C#.pptx
Building GraphQL API in C#.pptx
Brandon Minnick, MBA
 
Ontotext's GraphDB Connectors
Ontotext's GraphDB ConnectorsOntotext's GraphDB Connectors
Ontotext's GraphDB Connectors
logomachy
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
Estelle Weyl
 
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeonapidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009marpierc
 
Let's talk about GraphQL
Let's talk about GraphQLLet's talk about GraphQL
Let's talk about GraphQL
Commit Software Sh.p.k.
 
Taming WebSocket with Scarlet
Taming WebSocket with ScarletTaming WebSocket with Scarlet
Taming WebSocket with Scarlet
Zhixuan Lai
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
Chris Schalk
 
Lecture 9 Professional Practices
Lecture 9 Professional PracticesLecture 9 Professional Practices
Lecture 9 Professional Practices
Sur College of Applied Sciences
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
Mark Meeker
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBookNet Canada
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
Association Paris-Web
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deploymentbaremetal
 
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps_Fest
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
Guillaume Laforge
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ Shopify
KevinLam737856
 
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
HostedbyConfluent
 

Similar to GraphQL with .NET Core (20)

Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatforms
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
 
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on ScenarioLarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
 
Building GraphQL API in C#.pptx
Building GraphQL API in C#.pptxBuilding GraphQL API in C#.pptx
Building GraphQL API in C#.pptx
 
Ontotext's GraphDB Connectors
Ontotext's GraphDB ConnectorsOntotext's GraphDB Connectors
Ontotext's GraphDB Connectors
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
 
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeonapidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
 
Let's talk about GraphQL
Let's talk about GraphQLLet's talk about GraphQL
Let's talk about GraphQL
 
Taming WebSocket with Scarlet
Taming WebSocket with ScarletTaming WebSocket with Scarlet
Taming WebSocket with Scarlet
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 
Lecture 9 Professional Practices
Lecture 9 Professional PracticesLecture 9 Professional Practices
Lecture 9 Professional Practices
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demo
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
 
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ Shopify
 
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
 

More from Mark Lechtermann

Knative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVMKnative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVM
Mark Lechtermann
 
Microsoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group PaderbornMicrosoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group Paderborn
Mark Lechtermann
 
MQTT with .NET Core
MQTT with .NET CoreMQTT with .NET Core
MQTT with .NET Core
Mark Lechtermann
 
DevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn SenftDevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn Senft
Mark Lechtermann
 
Electron
ElectronElectron
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0
Mark Lechtermann
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
Mark Lechtermann
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn
Mark Lechtermann
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn
Mark Lechtermann
 

More from Mark Lechtermann (9)

Knative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVMKnative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVM
 
Microsoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group PaderbornMicrosoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group Paderborn
 
MQTT with .NET Core
MQTT with .NET CoreMQTT with .NET Core
MQTT with .NET Core
 
DevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn SenftDevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn Senft
 
Electron
ElectronElectron
Electron
 
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn
 

Recently uploaded

Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
Output determination SAP S4 HANA SAP SD CC
Output determination SAP S4 HANA SAP SD CCOutput determination SAP S4 HANA SAP SD CC
Output determination SAP S4 HANA SAP SD CC
ShahulHameed54211
 
ER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAEER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAE
Himani415946
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptxLiving-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
TristanJasperRamos
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 

Recently uploaded (16)

Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
Output determination SAP S4 HANA SAP SD CC
Output determination SAP S4 HANA SAP SD CCOutput determination SAP S4 HANA SAP SD CC
Output determination SAP S4 HANA SAP SD CC
 
ER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAEER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAE
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptxLiving-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
Living-in-IT-era-Module-7-Imaging-and-Design-for-Social-Impact.pptx
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 

GraphQL with .NET Core