►
From YouTube: ASP.NET Community Standup - June 4th, 2019 - gRPC!
Description
Join members from the ASP.NET teams for our community standup covering great community contributions for ASP.NET, ASP.NET Core, and more.
Community links for this week: https://www.theurlist.com/aspnet-standup-2019-06-04/
gRPC repo for issues and feature suggestions: https://github.com/grpc/grpc-dotnet
Suggest an idea for a standup: http://aka.ms/dotnet-standup-suggestion
A
B
Okay,
yeah
so
yeah.
Today
we
have
the
G
RPC
team
on
which
is
amazing.
I
want
to
give
you
plenty
of
time.
I'll.
Let
you
introduce
yourself
when
you
start
talking.
Let
me
jump
in
with
the
community
links
at
the
beginning
and
then
we
can.
We
can
switch
over
and-
and
you
can
do
your
thing
so,
oh,
let
me
find
there.
It
is.
B
Well
there,
it
is
okay,
I
said
I'll,
just
I'll
run
through
these
we've
got
a
lot
of
fun
links
today.
First
of
all,
Rick's
drawl
did
a
live
reload
middleware
component.
This
one
was
really
fun
because
I
got
to
watch
it
kind
of
happen
on
on
Twitter
and
stuff.
He
had
some
some
great
feedback.
So
the
idea
here
is:
it's
middleware
that,
as
you
edit
your
site,
the
middleware
is
running.
B
Using.Net
watch
run,
and
you
know
he
shows
here
updating
things
in
the
site,
updating,
CSS,
etc,
and
you
know
it's
updating
on
site,
so
he
worked
through.
First
of
all,
you
know
creating
standard,
middleware
and
just
refreshing
the
entire
like
using
a
file
watcher
and
just
injecting
JavaScript
and
reloading
the
HTML.
B
What
he
he
found
here
was
David
Fowler,
got
back
to
him
and
said
you're
allocating
like
crazy,
and
so
this
was
really
cool
to
kind
of
watch
his
he
he
updated
and
looked
at
ways
where
he
actually
wrapped
the
response
stream
used.
Some
of
the
advanced.
You
know,
kind
of
memory,
buffers
and
span
and
you
know,
looked
at
looked
at
how
to
make
it
reload
faster.
So
this
kind
of
goes
all
the
way
through
and
shows
his
continent
completed.
Implementation
of
it
also,
then,
towards
the
ends.
There's
some
caveats
here.
B
There's
questions
about
you
know
making
it
work
with
http/2.
There
was
also
a
question
about
blazer.
You
know:
will
this
work
with
blazer
and
and
how
to
make
that
work
there?
So
a
lot
of
great
stuff
here
number
one.
This
looks
like
really
useful,
middleware
and
then
number
two.
You
know
we
all
learn
a
lot.
Looking
at
this
stuff,
he
found
out
with
David's
feedback
on
an
allocation.
B
B
Okay,
the
worker
template
and
then
kind
of
wrapping
up
towards
the
end
with
how
do
you
choose
between
G,
RPC
and
Web,
API,
so
good,
stuff,
sure,
heads
continuing
and
I
believe
this
is
number
22
of
26
for
for
his
series
he's
doing
by
the
way.
He's
also
going
to
be
packaging
these
up
as
a
book
which
is
really
cool,
so
so
this
has
been
fun
to
see
all
kinds
of
stuff
in
this
v4
validation.
So
talking
about
validation,
attributes,
server
and
client.
B
One
neat
thing
that
he
did
to
here:
I,
like
is
he
talks
about
remote
validation,
so
this
is
looking
at
client
server
for
things
like
if
you
want
to
go
through
and
say
order
tickets
and
you
need
to
validate
from
the
client
before
you
know,
showing
it
actually
are
there.
You
know
tickets
or
products
or
whatever
in
stock,
so
showing
showing
how
to
do
that.
So
lot
of
great
stuff
and
I'm
excited
to
see
that
book
cool,
so
Dodi
G
here
here.
This
is
the
updates,
so
I'm
just
pointing
this
out.
B
We've
mentioned
this
one
before,
but
here
he's
updated
up
through
250
samples
now-
and
this
includes
3,
o
preview
5.
So
this
is
a
great
resource
for
all
kinds
of
stuff
and
again
the
he
breaks
these
down
very
kind
of
bite-sized
implementations.
So
most
of
these,
you
look
and
they'll
they'll,
be
just
very
targeted
and
they'll
show
just
one
feature
at
a
time
which
is
really
useful.
B
C
B
Well,
I'm,
awesome,
okay,
so
here
speaking
of
gr
PC,
this
is
this
is
from
Chris
and
he's
writing
about
using
GRP
services
with
server-side
blazer.
So
I
like
here,
the
idea
of
looking
at
two
new
features
and
kind
of
tying
them
together.
So
here's
you
know
explaining
G
RPC,
getting
it
set
up,
creating
a
G
RPC
service
and
then
he
also
creates
a
client
which
is
a
server-side,
blazer
client
and
then
calls
over
to
it.
B
A
Just
speak
into
that
about
like
hooking
up
multiple
new
features,
if
folks
haven't
seen
and
I
think
you
might
have
mentioned
before,
Dan's
dock
and
build
was
fantastic,
it
hooked
together,
blazer
the
new
service
workers,
your
PC,
you
want
to
see
all
our
new
stuff
work
together.
I'd
highly
recommend
go,
look
at
Dan,
stop
from
build
cool.
B
Yeah,
that's
you
know
a
dance
talk,
everyone
love
dance
talk
and
it
was
a
really
really
really
smooth
talk.
That
was
three
really
is
there,
where
he
kind
of
integrated
a
lot
of
different
stuff
and
showed
everything
working
together,
smoothly
and
and
I
feel,
like
that
also
kind
of
showed
the
value
of
like
here's,
how
all
these
pieces
fit
together
to
build
a
really
nice
application,
yep.
B
Okay,
this
is
cool
a
code
stencil,
so
I
actually
contacted
me
separately
about
this
and
when
we're
at
right,
when
we
wrap
up
the
community
links,
he's
actually
giving
the
way
two
licenses
for
free
to
people
that
are
watching
the
show.
So
I
I
will
put
the
link
in
the
chat
right
as
soon
as
I
wrap
up
the
community
links
and
I'm,
not
sure
if
it's
the
first
two
responses
or
if
it's
a
random
drawing,
but
you
can
enter
there
for
for
free
license.
B
So
what's
neat
with
this,
this
is
a
code
generator
it's
going
through
and
it
will
look
at
your
database
and
generate
code
based
on
it.
Sometimes
code
generators
are
pretty
verbose
from
looking
through
the
actual
tutorials.
Today
I
was
I
was
pretty
happy
to
see
kind
of
the
balance
of
it
that
it
does
generate.
You
know,
model
classes
and
those
sorts
of
things
based
on
your
database
tables,
but
and
and
also
your
views.
But
then
there
were
other
things,
for
instance
like
the
navigation
where
it
was
pulling
those
it
was
creating
that
dynamically.
B
So
so
pretty
cool
and
the
this
specific
post
is
talking
about
the
razor
stencil.
So
this
is
razor
pages
generated
from
your
database
so
and
again,
watch
for
the
end
of
the
right,
wrap
up
these
links,
I'll
be
putting
that
in
the
YouTube
and
twitch
chats
for
people
to
shoot,
then,
on
that
free,
giveaway,
alright
bill
writing
about
augmenting
the
I
principle
when
using
identity,
server,
authentication
middleware
in
asp
net
core,
so
he's
got
he's
using
he's
using
the
authentication
middleware.
B
He
wants
to
augment
the
the
principal
to
add
additional
information
to
it
and
he
found
out
he
ran
into
a
problem
with
which
was
that
things
were
overwritten
at
the
end
of
the
like.
After
the
authentication.
I
like
this
animated
gif
here
that
he's
got
by
the
way,
so
at
the
completion
of
the
the
authentication,
then
it
was
being
his
values
were
over
it
and
see
that
here
the
property
was
null.
B
So
this
was
one
of
those
we're
actually
going
into
the
comments.
There
were
some
some
useful
information
here,
so
you
know
dominic,
who
helps
run.
There
is
one
of
the
two
authors
on
identity
server
said:
well,
you
could,
you
know,
create
a
PR,
etc
and
khalid
who's
on
the
same
team.
A
trim,
dev
said
you
know
they're
on,
I
didn't
serve
you
at
this
point.
The
another
nice
thing
here
is
Thomas
is
saying
you
could
use
and
I
claims
transformation,
and
so
bill
actually
goes
through
and
shows
here's
some
sample
code
to
do
that.
B
There's
some
small
things
that
you
lose
as
far
as
control
there,
but
overall
this
seems
like
a
for
most
cases.
This
would
probably
handle
things
here
all
right.
This
is
a
cool
just
kind
of
quick
one
here.
If
you
want
to
start
using
ASP
net
core
3
preview,
in-app
service
reminder
that
you
can
go
through.
First
of
all,
you'll
hit
an
error
because
it's
not
deployed
on
app
service
yet,
but
you
can
do
a
framework
dependent
deployment.
A
B
A
So
that's
a
common
pitfall.
We've
seen
people
run
into
and
if
you
scroll
past
it,
the
tooling
and
Visual
Studio
also
prompts
you
like,
when
you
try
to
publish
that
the
runtime
doesn't
exist
in
app
service.
Just
yet
so
that's
yeah
we're
trying
to
catch.
You
make
sure
you
don't
fall
through
the
cracks
then
end
up
in
a
failure
case.
Good.
B
A
If
you
go
a
little
further
up,
you
have
this
so
we've
had
you
know
the
generic
500
point.
Oh
ever
page
news
is
rendered
by
the
SP
net
core
module,
there's
some
fun
stuff
coming
there.
I
can
probably
talk
to
it
in
like
a
future
episode,
but
we're
doing
a
lot
more
to
handle
startup
error
failures.
So
we
log
a
lot
more
to
the
event
log.
When
possible,
we
show
details
in
the
browser.
So
all
the
stuff
is
coming
in
three,
oh
and
you
should
look
forward
to
that.
All
right
cool
all.
B
Right
all
right,
I'll,
try
and
hurry
through
cuz
I
want
to
see
all
your
great
stuff.
Here's
a
quick
thing:
here's
just
a
tweet.
This
will
be
shared
in
our
show
links.
But
damien
mentioned
that
the
team
is
doing
some
basic
compat
testing
for
nougat
packages
with
asp
net
core
3.
So
this
is,
if
you
want
to
vote,
if
you
want
to
say,
hey
here's
something,
that's
important
to
me.
I
would
like
you
to
include
in
testing
when
to
make
sure
people
saw
that
all
right,
this
is
fun.
B
Mahuri
has
wanted
to
look
at
taking
a
blazer,
app
and
hooking
up
with
electron
net,
so
electron
net
to
create
a
desktop
application,
so
electron
dot
net
has
support
for
a
global
tool.
So
there's,
actually
you
do
dotnet
to
install
electron
net
CLI
an
it
on
the
application,
make
some
small
changes
and
then
to
run
it.
You
just
did
electron
I
start
and
here
a
little
hard
to
see,
but
this
is
actually
a
full
application
here.
B
D
B
Scott
Allen
here
is
talking
about.
How
do
you,
if
you
need
to
know
at
runtime,
if
some,
if
an
authorization
policy
will
succeed
so
say,
for
instance,
if
you
want
to
update
your
menus
on
a
page
and
only
show
like
say
admin
links
to
somebody
that
would
be
authenticated
as
admin
and
and
especially
if
an
authorization
policy
is
running
some
logic.
You
know
here,
you
stick
got
just
a
very
simple
random
number
one,
but
let's
say
you
needed
to
do
something
more
more
in-depth.
B
So
fortunately
you
can
just
inject
the
authorization
service
and
then
you
can
say
authorization
authorized
user
and
that'll.
Let
you
know
whether
or
not
in
this
case
whether
the
user
is
lucky
but,
more
importantly,
whether
or
not
the
authorization
would
succeed.
So
this
is
nice
to
know
whether
you
can
you
know
you
can
modify
your
page
layout.
You
can
modify
what
you're
displaying
to
user
based
on
whether
they
could
pass
an
authorization
policy.
And
finally,
wrapping
up
here
we've
been
sharing
these
weekly
links
using
different.
B
What
was
it
one
tab
and
we've
used
some
other
things
in
the
past,
so
Burke,
Holland
and
sessile
Philip
both
saw
that
you
know.
We've
got
some
kind
of
halfway
solutions,
they
actually
created
URL
list
and
they
did
it.
They
said
they
had
our
show.
The
dotnet
me
stand
up
in
mind
when
they
were
doing
this,
so
this
is
a
neat
walkthrough
that
they
do
where
they're
using
they're
doing
things
serverless
as
much
as
possible.
So
they're
things
are
done
using
Azure
functions
or
writing
stuff
out
blob
storage,
cosmos
dB.
B
They
have
a
view
and
typescript
front
end,
and
the
end
result
is
that
you
can
go
through
and
create
a
collection.
So
you
can
do
this
now
you
go
to
the
URL
list,
calm
and
you
can
create.
You
can
create
something
so
in
depth
here
they
walk
through
everything
how
they
built
it.
It's
out
on
github.
If
you
would
like
to
get
involved-
and
here
are
our
community
links
for
the
week,
so
it
worked
out
just
great
for
me-
I
had
some
feature
requests
because
of
course
he'd
do
that.
B
But
here's
all
our
community
links
for
the
week
I'll
be
sharing
these
in
the
show
chat
and
you
can
go
through
and
also
I
recommend
that
you
play
with
the
URL
list
and
with
that
I'm
gonna,
stop
talking
and
I'm
gonna
pass
it
back
over
to
you,
folks,
okay,
alright,
so
we
got
the
G
RPC
team.
Do
you
want
to
introduce.
E
E
A
C
I
switch
to
the
team's
fears
that
people
do
see
faces,
see
James
Kenda
I,
my
name's
James
Dean
and
Ken
I'm,
also
a
dev
on
a
speed
on
a
team
and
yeah
John
and
I
have
been
working
together
with
the
GOP
C
team.
At
the
cloud
native
computing
foundation
to
bring
GOP
C
Donna
core
and
from
the
CN
CF
team
is
yarn
who's
on
the
call
with
us.
D
E
C
Your
slides,
okay,
great
so
to
start
with
we'll
just
do
a
quick,
a
quick
little
slideshow
to
sort
of
introduce
GI
BC
to
a
lot
of
donair
developers.
It's
something
which
I
don't
think,
there's
been
a
huge
amount
of
mindshare
around
and
done
it
space,
but
GBC.
It's
a
remoting,
well
RPC
framework.
That's
caught
on
quite
well
when,
as
far
as
we
can
tell
as
the
largest
mindshare
out
of
RPC
frameworks
like
there
are
some
alternatives
out
there,
such
as
Apache
thrift,
GOP
CX
comes
from
the
cloud
native
computing
foundation
and
geodesy.
C
Its
is
actually
a
recursive
acronym.
So
if
anyone
asks
you
what
it
stands
for,
it
actually
stands
for.
G
RPC
remote
procedure
calls
G.
Rpc
is
built
worth
modern
technologies.
So
it's
it's
a
relatively
modern
RPC
framework.
It
was
sort
of
open
sourced
around
2015
and
it
uses
HTTP
2
for
the
transport
and
users.
Various
HTTP
2
features
such
as
streaming,
and
it
also
uses
protocol
buffers
in
a
number
of
different
ways.
Although
proto
buffers
usually
quite
closely
a
soda
associated
with
your
PC,
you
can
use
other
other
formats
for
sending
messages
through
it.
C
But
we'll
just
be
focusing
on
protobuf
today
for
simplicity
and
GBC.
It's
designed
for
modern
apps
that
has
quite
good
support
throughout
all
libraries
for
built-in
tracing
and
logging,
and
also
technologies,
like
deadlines
and
cancellations,
to
ensure
that
your
overall
application
infrastructure
doesn't
have
a
runaway
process.
It
consumes
lots
of
resources.
C
So
we
can
see
here
an
example
of
a
protobuf
file
and
we're
defining
a
couple
of
messages
and
then
a
service
called
topics,
and
then
it
has
a
subscribed
method
on
it,
which
takes
a
request,
and
this
particular
method
is
a
streaming
one
which
will
stream
from
the
server
to
a
client
and
it
will
stream
multiple
event.
Objects.
C
Protobuf
also
serves
as
a
service
model,
so
I'm
generally
cogeneration,
we'll
run
over
the
top
of
this
protobuf
file
and
then
generate
your
service
CSV
file,
a
client
for
your
T
RPC
service
and
also
messages
and
then
finally,
protobuf
acts
as
a
wire
format.
So
when
you
send
messages
between
the
client
and
the
server,
your
message
will
be
encoded
and
protobuf,
which
is
a
very
efficient
binary
format.
C
E
C
C
It
is
possible
I,
don't
think
what
have
time
to
go
into
it
in
detail
now,
but
it
is
something
we.
We
would
probably
like
to
support
people
to
be
able
to
extend
done
then
and
considering
their
own
serialization
formats,
but
it
probably
won't
be
like
our
focus.
Our
focus
will
be
on
delivering
a
good
protobuf
experience
first
and
then
more
extensibility
in
the
future.
A
E
C
So
a
key
benefit
of
GI
PC,
this
HTTP
one
and
wrist
and
Jason
is
its
performance.
So
one
way
it
achieves
that
is
through
a
low
network
usage.
So
it
should
be
it's
a
binary
protocol
compared
to
HTTP
1,
it
supports
header
compression,
so
header
compression
becomes
really
useful
when
you're
sending
commonly
occurring
headers.
So,
for
example,
if
every
G
RPC
request
has
the
same
content
type,
we
can
use
header
compression
to
convert
that
from
some
utf-8
text
down
to
just
a
couple
of
bits
compared
to
HTTP
one
and
also
protobuf.
C
It's
a
binary
serialization
format
and
it's
it's
very
efficient
compared
to
JSON.
So
if
we
compare
a
JSON
message
versus
a
protobuf
definition,
so
this
is
an
apples-to-apples
comparison,
because
if
I
was
actually
showing
the
protobuf
message,
it
would
be
just
some
some
random
characters,
or
maybe
some
basics
before
uncoated
text.
But
we
can
see
here
on
the
on
the
left
Jason
message:
some
things
notice
about
it,
as
it
includes
the
property
name
for
every
single
property,
so
there's
size
there
and
also
its
self
describing
so
we
need
to
double
quote
things
indicate
their
strings.
C
We
need
to
have
open
and
closed
brackets.
We
need
to
have
semicolons
to
delimit
everything
protobuf,
it's
a
it's
a
binary
format
which
relies
on
you
having
the
definition
to
be
able
to
make
sense
of
it,
which
has
some
cons,
but
one
of
the
very
big
pros
is
it's
extremely
efficient?
So
if
we
compare
the
two,
we
can
see
that
protobuf
is
probably
a
third
the
size
to
a
quarter
the
size
of
Jason.
C
C
A
C
A
C
A
Think
one
thing
we
can
just
you
know
clarify
terminologies
that
we
can
disambiguate
when
we
use
the
term
jar
PC
core,
which
we
will
use
multiple
times
later
today,
we're
talking
about
the
existing
implementation,
just
based
on
your
PC's
existing
C
code
implementation,
the
new
stuff
that
we're
doing
is
based
on
our
own
networking
stack,
so
GRP
C,
the
C
core
based
version
will
work
with
two
to
the
version.
That's
based
on
gastro
needs
to
be
client
will
not
work
with
due
to.
C
So,
given
our
protobuf
file
that
we
had
before
we
had
a
messages,
I
mean
our
service
with
our
method.
What
we
would
do
is
include
that
prototype
file
and
the
CSS
proj.
So
it's
if
you
can
see
my
cursor
it's
this
protobuf
line
here.
We
just
include
the
file,
we
say
what
we
want
to
generate.
In
this
case.
C
We
want
to
generate
a
server
stub,
but
you
can
also
say
you
want
to
generate
the
client
or
maybe
both
and
then
the
compiler
will
automatically
invoke
the
koechner
and
generate
a
service,
stub
and
messages
from
this
protobuf
file.
So
this
is
a
very,
very
simplified
view
of
what
you
would
see
for
the
service
stub.
So
we've
got
our
method,
which
takes
a
single
request.
It
streams
a
response
of
event,
and
then
it
has
a
server
call
context
which
is
kind
of
similar
to
an
HTTP
context
and
dotnet,
and
then
you
would
take
this
class.
A
C
Yes,
you
can
so
I
believe
I
believe
what
we're
writing
should
using
using
HTTP
client.
So
what
we're
going
to
talk
about
the
client?
Obviously,
because
it
wouldn't
make
a
huge
amount
of
sense
to
host
the
server
on
on
a
mobile
device,
but
we're
we're
creating
a
client
which
uses
a
tree.
Rpc
client,
which
uses
HTTP,
client
internally
and
I,
believe
that
should
work
on
mobile
devices
and
xamarin
I
know
the
C
core
client
does.
Is
that
right?
Yeah?
Yes,.
D
A
And
to
that
end,
if
you
don't
want
to
use
the
Ameren,
you
can
still
generate
clients
for
I,
think
objective-c
and
Android
both
supported
so
you're
free
to
use
whatever
ecosystem.
You
already
use
on
your
mobile
devices
and
still
talk
to
a
Joe
PC
server,
which
is
using
dotnet
or
for
that
matter
any
JIRA
PC
server,
yeah.
C
C
We
have
service
streaming,
so
this
is
what
our
code
sample
before
showed:
we've
send
a
single
request.
The
server
could
then
send
multiple
responses,
client
streaming,
which
is
just
a
reverse
and
bi-directional
streaming.
So
a
bi-directional
stream.
The
client
would
establish
the
connection
with
the
server
and
then
they
can
independently
send
messages
to
each
other
by
that
by
that
TCP
connection.
C
C
There
is
a
workaround,
so
there's
a
technology
called
Chi
IBC
web
and
it
provides
limited
support
for
calling
Geo
pcs
services
from
a
browser.
So
this
is
developed
by
the
GOP
C
team
and
the
way
it
works
as
there
is
a
proxy
which
sits
in
between
your
geo
busy
services
and
your
web
browser.
So
the
web
browser
would
use
the
CIBC
web
client,
which
can
talk
either
HTTP
one
or
two,
and
then
the
proxy
would
then
translate
that
call
into
a
real
actually
a
GOP
C
call
and
then
fought
it
on
to
her.
C
C
Another
disadvantage
is
it's
not
human
readable
compared
to
HTTP
one
and
JSON,
both
of
which
are
text
formats,
so
you
require
additional,
tooling
or
additional
steps
to
be
able
to
debug
Qi
RPC
calls
so,
for
example,
I
have
Wireshark
open
here
and
I'm
looking
at
a
TCP
packet
for
HTTP
2,
but
the
tool
was
able
to
recognize
that
it
is
a
Qi,
RPC
call
and
I'm
able
to
view
some
data
about
the
GRP
see
call
in
this
case.
C
I
can
see
they're
calling
a
greeter
service
and
I
say
hello
method,
and
this
is
a
response.
I
mean
I
can
view
the
view
the
response
down
here
and
you
can
see
some
utf-8
tix
shows
up,
but
for
most
case
it
is
not
easy
to
understand.
Now
there
are
ways
to
improve
this,
so
we
talked
earlier
about
using
Jason
rather
than
protobuf
in
our
messages.
D
Yeah
I
would
actually
stress
the
part
where
you
know
so
it's
all
about
to
link
and
because
G
RPC,
you
know,
is
getting
a
lot
of
traction
with
the
community,
the
expectation
it's
like
over
time.
There's
gonna
be
more
and
more
tooling,
so
we're
hoping
that
there's
gonna,
be
you
know
less
of
a
problem
in
the
future
because,
like
if
you
have
like
all
these
tooling,
they
already
have
like
built-in
ER
PC
support,
for
example
like
Wireshark,
plugins
and
stuff.
Like
that,
you
know
you
basically
be
using.
You
know,
gr
pcs.
A
D
A
C
C
We're
focusing
on
HTTP,
2
and
protobuf,
so
those
are
the
commonly
used
ways
of
communicating
using
G
RPC,
but
we're
always
opened
providing
like
API
is
for
people
to
maybe
extend
it,
and
if
you
have
ideas
like
that,
create
a
create
an
issue
on
github
we
should.
We
should
show
that
github
repository
at
some
point
and
we
can.
We
can
talk
about
it.
C
Okay,
this
is
the
last
slide.
So
this
is
what
what
are
we
doing
in
Donna
core
304
G
RPC?
So
we
have
some
existing
packages.
These
white
packages
are
the
current
currently
publish
on
on
nougat,
and
these
are
the
C
core
implementation
of
G
RPC,
so
G
RPC
core
has
a
native
server
and
Native
Client,
those
rap
binaries
which
come
in
the
nougat
package
and
then
Google
dot
protobuf
is
the
serialization
handler
for
for
protobuf
and
then
we're
shipping
and
sex.
C
So
already
we
are
shipping
GBC,
ESP
net
core
server,
so
that
server
implementation
of
G,
a
B
C,
it's
hosted
on
kestrel
and
it's
able
to
integrate
with
the
rest
of
your
asp.net
core
ecosystem.
So
you
can
interrupt
with
middleware
authorization,
middleware
routing
and
so
on,
and
then
gob
c.net,
core
dot,
HTTP
client,
that's
a
managed
client
we're
going
to
be
shipping
in
preview
six
and
that
uses
HTTP
client
and
it's
new
HTTP
to
support
for
a
GC,
2
client.
Actually.
E
Four
I
think
this
diagram
is
a
little
bit
out
of
date,
because
we
have
decided
to
split
some
of
these
packages
into
more
packages.
For
example,
the
client
has
been
renamed
to
ERP
C,
dot,
client,
and
then
we
were
adding
other
integration
support
for
essentially
a
client
factories
and
integrating
that
into
the.
We
also
have
server-side
integration
for
that
as
well,
and
that
comes
in
gr,
PC
Dyess
me
net
court
server
that
client
founder.
A
E
So
there
are
quite
a
lot
of
different
packages
and
we
to
simplify
that
we
will
be
looking
to
add
a
meta
package,
so
we
can
essentially
make
it
easier
for
people
to
reason
about
how
to
which
packages
are
actually
needed
for
the
workload
and
on
the
topic
of
essentially
packaging
and
what
we're
releasing.
Let
me
just
address
a
few
of
the
questions
I
see
also
on
YouTube
and
twitch,
one
of
which
was
essentially
support
for
tooling,
for
example,
the
protobuf
item
that
was
demonstrated
in
a
few
of
the
previous
samples.
E
So
the
support
for
tooling
actually
comes
from
the
GRP
c.
Dot
tools
mostly
comes
from
your
pc
tools,
package
that
includes
proto
C,
essentially
the
protobuf
compiler
and
a
lot
of
the
plugs
plugins
in
there,
as
well
as
the
msbuild
integration,
and
that
is
already
currently
available.
So
essentially,
if
you're
on
already,
you
can
use
that
if
you
are
not
looking
to
run
on
the
kestrel
server,
so
that
is
currently
already
available.
We
are
also
contributing
to
that
to
make
it
better
for
3oh
as
well.
E
A
E
A
C
A
C
A
C
D
Okay,
just
see
it
a
little
bit
more
background
on
why
G
RPC
protocol
wouldn't
work
well
with
the
browser.
Api
is
that
G
RPC,
like
the
purple
definition
uses
HTTP,
do
trailers
and
that's
not
exposed
to
know
in
the
browser
API,
so
you're,
basically
not
able
to
like
return
back
the
status
of
an
RPC,
which
obviously
is
a
problem.
So
you
know
unless
you're
using
those
parts
of
HTTP
to
spec.
You
won't
have
a
problem.
E
And
another
couple
of
other
questions
I
want
to
address,
one
of
which
is
essentially,
how
does
G
RPC
compare
with
signal
RN,
something
like
socket
IO,
so
I
guess
for
the
first
portion
is
that
ERP
C
is
a
much
lighter
weight,
RPC
framework
and
yes,
there's
similarities
with
signal
R.
For
example,
there
is
streaming
both
sides,
both
directions
and
then
they're,
very
similar
kind
of
like
RPC,
like
frame
rates,
but
ERP
C
is
based
on
code
gen.
E
It
is
designed
first
and
by
that
I
mean
you,
write
a
definition
filed
the
protocol,
buffers
descriptions
and
then
that
gets
code
generated
into
c-sharp
or,
whichever
other
language
that
you
are
working
with,
and
then
that
is
essentially
the
contract.
Whereas
for
a
signal,
are
it's
a
little
bit
different
in
terms
of
that?
It's
you.
You
write
the
c-sharp
code
first,
so
it's
called.
C
A
I
think
we're
seeing
a
bunch
of
questions
aren't
like
signal
are
versus
your
PC
I
think.
Maybe
we
should
like
big
break
from
on
some
questions.
Actually
jump
into
some
chord
show
some
bits
we
have
and
look
at.
Let
people
see
the
app
model,
because
you'll
notice
that
some
things
are
just
easier
to
do,
especially
like
browser
interactions.
The
app
model
in
singular
lends
itself
well
to
that.
It's
not
something
you'd
necessarily
even
want
to
do
with
your
PC,
even
if
you
could
so
I
think,
let's,
let's
do
that.
A
A
A
Sorry
folks,
I
am,
are
you
all
right?
Oh
yeah
sounds
like
yeah,
alright,
so
just
go
through
with
this,
and
so
we
have
a
G
RPC
service
template.
This
will
generate
just
the
server
side,
cord
it's
been
available
since
b5,
so
you
can
go
ahead,
get
started,
I'm,
gonna,
back
out
of
this
menu
because
I
already
created
a
project
and
I
added
a
bunch
of
extra
stuff
to
show
you
folks,
but
in
which.
D
A
So
when
you
create
the
project,
you
get
a
single,
you
get
a
solution
with
a
single
project.
It's
a
server-side
project
Oh
by
default,
we
throw
in
one
proto
file,
so
this
is
similar
to
what
James
had
shown
earlier.
This
is
what
a
protobuf
file
looks
like.
It
sits
on
DSL
here's
my
package
name,
here's
my
service
definition
here
are
my
like
actual
endpoints.
A
So
in
my
case
I,
this
is
a
unity
call,
it's
a
single
required
single
response
pneumatic,
and
these
are
my
message,
definitions,
so
the
flow
that
you
would
do
is
you
would
make
all
your
edits
here.
For
example,
if
I
had
to
define
another
RPC
I
could
go
ahead
and
do
that.
Let
me
just
change
this
name,
so
this
like
right
and
then
we
have
core
generation,
that's
also
already
wired
up
and
what
you
would
see
get
generated
would
be.
This
read
a
base
write.
This
is
the
generated
code.
A
A
I
think
the
point
John
is
alluding
to
is:
is
the
actual
code
generator
that
runs
that
takes
your
your
protobuf
file
and
generates
base
class
that
which
you
then
need
to
implement.
We've
been
working
on
tooling,
so,
based
on
what
bits
you
have
you
might
not
have
design
time
bill,
so
you
might
have
to
trigger
an
explicit
build,
so
I
can
trigger
an
explicit
build
just
to
show
you.
A
A
This
is
really
tricky
with
my
trackpad,
but
I
think
we
can
do
it.
So
you
can
see
all
these
all
this
code
was
generated
as
part
of
the
build
and
then
you'd
go
ahead
and
implement
something
like
this
right.
So
in
this
example,
where
I
went
ahead
and
added
another
service,
if
I
go
to
act,
my
actual
service
definition
right
so
I
have
I
want
to
like
now
implement
my
new
method.
I
can
just
go
in
here.
Override
and
I.
A
A
Okay,
so
so
what
I've
done
here
is
it's
a
couple
of
things
I
wanted
to
show
off.
Obviously,
is.
This
is
recent
as
a
visual
studio,
I
think
16-1,
where
we
have
syntax
highlighting
for
writable
files?
That's
new
go
ahead
and
try
it
out.
Folks,
if
you
run
into
any
corner
cases,
go
ahead,
leave
us
some
feedback
via
visual
studio.
We
look
into
it,
but
so
far
it's
you
know
been
after
one
release.
It's
looking
pretty.
A
A
A
B
One
question
from
Tim
Tim
here
is
asking
you'd
like
to
see
a
direct
comparison.
Maybe
this
is
just
overall
feedback
like
to
see
a
direct
comparison
between
Web
API
G
RPC
for
SP
net
dev.
So,
like
obviously,
you've
pointed
out
the
perf
benefits,
but
what's
the
difference
in
dev
in
the
develop
development
for
experience,
yep.
E
A
E
C
C
Why
you
would
want
to
extend
it
using
partial
because
you
would
always
want
to
inherit
from
the
base
class,
because
if
we
look
at
our
greeter
base
at
the
moment,
the
virtual
implementation
of
say
hello
would
do
nothing
more
than
throw
a
a,
not
implemented
exception,
oh
yeah
and
unemployment
at
status
code.
So
you
always
need
to
inherit
and
override
these
method.
Stubs
and
these
these
method
stubs
are
useful,
because
the
the
visual
studio
tooling
will
just
automatically
do
code
completion
for
you
and
every
everything
strongly
typed.
C
That's
one
of
the
benefits
and
my
opinion
of
GRB
see
the
that
cogeneration
will
handle,
generating
your
messages.
It'll
handle
generating
your
based
service,
your
client,
so
you
don't
have
that
overhead
of
first
creating
a
service
and
creating
the
messages
then
having
to
copy
and
paste
or
maybe
to
placate
duplicate,
duplicate,
creating
the
messages
I'm,
a
client
then
creating
a
client
that
strongly
typed
and
building
up
URLs
and
doing
serialization,
all
that
is
handled
for
you
and
G
RPC,
and
it
provides
a
great
end-to-end
experience.
C
All
you
need
to
do
is
just
share
these
proto
bar
files
between
your
projects
or,
if
you
really
don't
like
the
idea
of
sharing
protocol
files,
you
could
even
use
code
generation
once
in
a
shared
service,
have
a
target,
it's
standard,
Oh,
compile
it
and
then
shared
share
that
compiled
NuGet
package
between
your
applications.
So
there
are
many
different
ways
of
doing
it
and
I
think
it's
a
really
great
benefit
of
QV
C.
If
we're
coming
back
to
that
earlier
question
about
the
development
experience,
yeah.
B
Speaking
of
that,
there's
a
question
from
twitch
that
I
think
I
answered,
but
I'm
not
sure
it's
the
best
answer.
So
the
question
is:
when
I'm
developing
with
rest
I
can
use
postman
or
whatever
to
validate
things
when
I'm
developing
against
G
RPC
I
need
a
test
client
and
my
what
I
think
is.
The
answer
is
that
you're
developing
that
for
me,
you're,
generating
a
test
client
for
me
that
I
can
use.
Is
that
kind
of
the
the
main
thing
or
should
I
use
some
something
else
to
do
test
generation?
There.
C
Is
a
tool
like
postman
I
can't
remember
its
name
off
the
top
of
my
head,
but
it
is
a
GUI
tool
where
you
can
add
hoc
query
key
RPC
services,
ad-hoc,
query,
ng
RPC
services
is
going
to
be
slightly
more
difficult
because
the
proto
bar
file
contains
the
definition
of
your
message.
So
your
first
step
will
probably
be
loading.
The
proto
bar
file
into
your
ad
hoc
client
and
then
making
calls.
C
A
Also
and
I
think
Yan
can
actually
maybe
speak
to
this.
There
is
a
CLI
tool
that
you
can
use
to
as
a
client,
I
think
and
I
think
believe.
There's
a
canonical
mapping
between
like
text
to
how
you
do
a
representation
of
proto.
So
if
you
really
need
to
like
hack
something
quick
and
dirty,
there
is
a
command-line
tool
that
is
available
as
part
of
the
GPC
Reaper
cool.
D
Do
you
want
to
add
anything
that
young,
oh
no
I,
think
you
described
that
pretty?
Well,
yes,
so
there
is
a
command-line
tool
for
protobuf
there's,
actually
a
canonical
textual
representation
and
also
with
protocol
buffers
version
3.
Oh
there's
a
canonical
mapping
between
Jason
and
protocol
buffer
messages,
so
you
can
do
basically
like
transformation
one
way
or
the
other,
and
you
know
it's
going
to
be
cleared
the
way
the
mapping
works.
So.
C
E
A
A
A
D
A
A
So
we
go
back
so
I
went
ahead
and
added
a
new,
so
create
a
new
file
right.
You
know
described
my
service
describe
my
messages,
but
then
there's
the
point
of
actually
adding
it
to
my
project.
So
I
know
what
code
generator
to
set
up.
So
this
is
this
is
fresh
bits.
I
literally
went
over
to
the
visual
studio
folks
copied
some
DLL
so
from
that
computer
and
showed
up
here
for
this
demo.
So
we
have
this
connected
services
node
in
the
solution
Explorer
that
you're
used
to
seeing
for
projects.
A
This
is
what
we
use
for
connected
services
when
you
connect
the
authorized
your
services,
we
have
this
node
that
we've
introduced
called
service
references.
So
if
you
go
ahead
and
see
like
I
actually
have
some
stuff
listed
under
the
gr,
PC
node
there's
also
the
open,
API
stuff.
That
I
think
we
can
do
a
future
separate
talk
on,
but
it's
going
to
be
a
very
similar
experience,
so
you
can
go
ahead.
A
Click
this
or
this
allows
you
to
either
point
to
your
PC
to
an
existing
product,
I'll
so
or
there's
also
the
the
URL
based
thing
and
since
I've
already
added
it
I
can
click
on
edit.
The
other
thing
you
can
do
is
you
can
specify
options
to
the
generator
on
whether
you
wanna
generate
just
a
client,
the
service
tab,
both
client
and
the
server
or
nothing
at
all.
You
just
want
messages
from
that.
A
E
E
You
can
also
refresh
any
existing
references
that
are
based
on
URLs,
as
well
as
remove
references,
so
we've
added
that
support.
You
can
configure
whether
again,
similar
to
the
vs
tooling,
you
can
configure
whether
it
is
for
server
or
for
client
for
both
a
couple
of
options
there
as
well
and
again.
These
tooling
gestures
will
also
ensure
that,
if
you,
for
example,
specify
a
server
service,
then
the
necessary
packages,
the
NuGet
packages
that
are
that
contains
those
api's
will
be
added
to
your
project,
is
essentially
automatically
yes.
A
And
that's
a
good
point
that
John
mentions,
because,
especially
if
you're
using
a
client,
it
could
be
like
in
this
example,
I
have
a
client
which
is
nothing
more
than
a
console,
app
you're
not
going
to
have
these
package
references
that
you
need.
But
when
you
go
to
that
dialog,
let
me
go
over
here
again
connected
service
and
you
add
your
first
repeat
like
proto
document.
It
will
go
ahead
and
add
those
package
references
for
you.
A
B
A
B
A
I
the
joke
I
like
to
make.
Is
we
had
this
thing
in
Microsoft
where
we
had
not
invented
here
syndrome,
but
we
wouldn't
use
anything
if
it
wasn't
built
by
us
I
like
to
say
what
is
the
new
Microsoft
where
we
used
the
proudly
found
elsewhere?
So
we
saw
a
very
popular
RPC
framework.
We
saw
people
were
using
it
in
the
community,
so
we,
like
you,
know,
let's
get
behind
where
the
community
momentum
is
right.
So
there
are,
there
are
yes,
there
are
functional
differences,
we're
looking
at
what
we
can
do.
A
B
A
There
will
be
something
function,
unfortunately,
I
don't
have
the
best
of
answers
for
you
like
there
are
things
that,
were
you
know,
still
finding
out
and
I
I,
don't
know
I
I,
don't
think
me
personally
can
advocate
for
this
app
model
switch
already.
I
think
it's
case
by
case,
and
you
know,
will
improve
the
guidance
as
we
go
along
I
think
the
link
that
John
shared
also
did
some
compare
and
contrast
to
it
right.
E
C
C
There's,
obviously
not
enormous
amounts
of
XML
documentation
to
wire
up
your
your
address,
your
binding
and
your
contract,
your
your
ABC
and
WCF,
and
what's
WCF,
to
generate
a
service
proxy.
You
need
your
server
running
because
it's
generated
at
runtime
well,
GRP
see
the
generation
happens
from
some
proto
files,
which
are
just
checked
into
source
control,
so
those
proto
buy
files,
your
source
of
truth,
rather
than
going
through
the
hoops
of
generating
a
creating
a
service
contracts
and
then
your
messages
and
then
running
your
server,
which
generates
winds
tool
which
then
generates
your
service
proxy.
A
A
good
segue
because
you
know
James
alluded
the
fact
that
you
know
you
have
a
single
profile,
that's
a
source
of
truth.
So
if
you
actually
see
I'm
in
my
client
project
right
now,
and
if
you
see
the
files
that
I've
added
the
location
on
disk,
but
these
are
actually
in
the
server
project-
I,
don't
know
if
it's
visible
and
zoom
in.
But
if
you
see
it's
actually
walking
up
a
directory
and
it's
in
the
server
project
versus
if
I
look
at
oh
shoot
versus.
A
A
A
It
takes
a
stream
of
ad
requests
at
request
is
a
simple
message
that
just
has
the
value
and
the
it
returns
an
ad
reply,
which
is
just
the
sum
of
everything:
you've
stream.
Do
it.
So
let's
go
and
look
at
the
added
service,
real
quick,
it
doesn't
do
anything
fancy.
You
know
just
a
request.
It
reads
the
current
value
in
the
request
stream
when
we
reach
the
end
of
the
require
stream.
It
just
replies
with
the
song.
Let's
go
look
at
the
client
now:
oh
okay,.
A
So
like
we
do
before
there
was
an
existing
GPC
implementation
and,
up
until
I'd,
say
a
couple
of
days
ago,
that
was
the
only
client
implementation
available
or
darknet.
We
have
recently,
if
you
guys
been
watching,
you
know
core
facts:
repos
we
added
HTTP
to
support
and
used
to
be
client.
That
was
one
of
the
last
stumbling
blocks
to
enable
a
fully
managed
to
your
PC
client.
So
what
I
have
up
here
is
what
the
old
pattern
looks
like.
A
There
are
a
couple
of
things
that
we're
still,
you
know
trying
to
figure
out
what
the
shape
of
this
API
is.
What
is
the
analog
to
channel,
which
is
a
core
concept
in
your
PC
Cole?
What
the
analog
to
that
is
in
the
managed
implementation,
so
this
API
is
subject
to
change,
but
it's
still
super
straightforward
to
go
ahead
and
use
it
so,
and
the
good
thing
is
like-
and
this
is
also
applicable
for
people
who
already
have
stuff
and
dotnet
using
your
PC
core.
There
is
the
migration.
A
There
is
a
part
to
move
to
the
dotnet
core
implementation,
as
you
can
see
like
in
this
case,
I
can
pretty
much
straight
forward.
I'm,
just
gonna.
The
actual
invocation
of
the
are
the
client
streaming
call
is
just
a
streaming
at
async
and
I'm,
passing
it
a
client
which
I'm
switching
I'm
gonna
not
use
this.
For
now,
I'm
gonna
use
a
manage
client
version,
and
so
there's
nothing
fancy
going
on
here
in
terms
of
creating
the
client.
A
You
know
it's
just
a
new
ways
to
be
client
at
the
base
address,
and
then
we
have
a
static
helper
that
hangs
off
of
your
PC.
That
will
create
you
an
advert,
client
right
and
then
I
actually
invoked
this.
So
this
example
is
pretty
straightforward.
All
I'm
doing
is
reading
numbers
from
the
console
up
until
I
get
an
empty
line,
which
is
the
end,
and
then
I
would
once
I
do
that.
A
A
E
So
what
I
think
we
also
want
to
demonstrate
some
do
a
quick
demo
of
the
interceptors
okay.
So
what
what
are
interceptors
on
like?
Well,
there
are
a
gr
PT
concept
there.
If
you
are
familiar
with
SP
nut
core
concepts,
it's
very
similar
to
middleware.
So
essentially,
when
you
process
AG
RPC
call,
you
can
add
these
interceptors
that
will
do
pre-processing
or
post-processing
on
your
request
or
on
your
requests
on
the
way
in
or
on
the
response
on
the
way
out.
E
So
we
have
gotten
some
community
feedback
asking
that
for
interceptor
support,
because
there's
already
a
lot
of
like
libraries
or
other
people
have
started
using
interceptor
to
solve
a
cross-cutting
concerns,
for
example
retries
or
that
would
be
a
client
one,
but
on
a
server-side
interceptors
can
be
used
to
handle
timeouts,
for
example,
for
all
of
your
calls
and
make
sure
that
no
of
your
JRPG
calls
go
over
a
certain
time
limit.
So
we
have
yeah
I'd
like.
E
Logging
and
those
kinds
of
things,
probably
like
potentially
error,
handling
and
those
kind
of
concerns
as
well
and
I
know.
This
question
will
probably
come
up,
which
is,
if
I'm,
using
a
yes,
you
know
if
I'm
writing
an
ASP
Nootka
rap.
What
are
the
when
will
I
use,
for
example,
an
interceptor
versus
a
middleware,
because
the
concepts
are
somewhat
similar.
The
difference
between
interceptors
and
middlewares
is
that
the
middlewares
will
operate
on
the
HDTV
messages
and
and
they
will
not
have
been
deserialized.
So
all
of
your
messages
are
raw
messages.
E
You
have
the
access
to
all
of
the
things
on
HP
contacts
like
headers
and
raw
byte
stream,
but
if
you
want
to
operate
on
the
actual
G
RPC
messages
or
that
your
PC
types,
then
you
will
have
to
do
that
inside
the
interceptor
pipeline
that
we
have.
So
if
you
want
to
operate
on
raw
ACP
DHCP,
then
use
middlewares.
If
you
want
to
operate
on
your
PC
messages,
use
interceptors,
okay,.
A
E
D
E
A
A
I
got
so
winding
up.
Interceptor
is
pretty
straightforward.
You
know
we
have
the
interceptors
that
hang
off
of
your
PC
service
options
and
I've
gone
ahead
and
added
this,
and
this
interceptor
takes
the
time
span.
So
I
go
ahead
and
woops.
Sorry,
let
me
go
ahead
and
run
this
again.
So
in
this
example,.
A
A
And
yeah,
so
my
client
stream
drive
terminates
if
I
try
to
do
something
else,
I
get
a
RPC
exception,
so
you
can.
You
can
see
how
people
can
use
interceptors
to
enforce
policy
things
and
John
already
alluded
to
like
timeouts
deadlines.
Yeah
things
things
like
that-
and
this
is
one
of
the
pieces
of
like
overwhelming
feedback
that
we
got
because
our
you
know,
initial
prototype
didn't
happen
and
we
went
to
jail,
PC
cons
and
we
saw
everyone's
like
now.
That's
the
one
thing
we
have
to
have.
We
have
libraries
in
our
organization.
A
E
Was
another
question
that
was
brought
up
a
little
bit
earlier
on
YouTube
and
I'd
like
to
address
that
which
is
right
now
gr
PC
is
using
a
CB
2
and
we're
demonstrating
it
is
essentially
going
over
to
network
and
stuff.
Is
there
anything
that
we
can
do
for
in
process
or
a
cross
process,
essentially
not
going
over
the
network?
So
the
way
our
server
stack
is
built
is.
A
Our
transport
is
pluggable,
alright
and
so
for
your
PC
server
implementations,
like
the
other
ones
in
the
community,
like
the
natty
based
one,
has
a
plug
a
bullet
believe
it
has
an
in-memory
transport.
It
also
has
like
a
UNIX
domain
socket
base
transport,
so
it
is
doable.
We
have
not
looked
into
it
yet
there's.
Definitely
some
like
area
future
investigation.
The
tricky
bit
for
us
would
be
our
HTTP
client
stack,
does
not
support
a
pluggable
transport,
so
we
don't
have
a
good
answer
there.