►
From YouTube: Blazor Architecture Patterns with Jeffrey Palermo
Description
Click Here to Subscribe: http://xaf.life/35
Websites:
https://xafmarin.com/
https://xari.io
https://www.xafers.training/
http://xafersweekly.com/
Facebook Group
http://xaf.life/4g
Free XAF Support Hour
https://calendly.com/xari/free-xaf-support-hour
A
Okay,
everyone,
let's
give
a
couple
more
minutes
for
everyone
to
join
in,
I'm
really
excited
by
today
talk.
This
is
one
of
my
he
doesn't
know,
but
he
was
one
of
my
idols.
I
have
been
watching
listening
to
ashley
bob
for
a
long
time,
so
I'm
really
excited
to
have
him
here.
Talking
us
about
blazer.
That
is
actually
our
new
cross.
A
I
think
we're
going
to
be
talking
about
avalonia
and
with
that
we're
going
to
cover
everything
that
we
want
for
the
net
cross
development,
we're
going
to
talk
about
uno.
We
talk
about
maui
today,
we're
talking
about
blazer
and
with
avalonia.
I
think
that
we
close
the
four
biggest
player
on
the
net
cross
platform
and
besides
that,
as
always
follow
the
net
block.
We
have
here
a
really
good
set
of
articles,
especially
I
want
to
point
three.
I
want
to
point
the
microsoft
bill
that
is
coming.
A
I
think
that
right
there
is
where
mao
is
going
to
become
va.
Finally,
I
think
that
that's
coming
here
in
bill
finger
cross
and
right
now
we
already
have
the
release
candidate
too,
so
it's
even
coming
with
a
lot
of
tyson
support
and
a
lot
of
great
things
there.
So
please
follow
that
closet
net.
Seven
three
preview,
three
is
already
there.
I
feel
like
next
week
just
came
up
and
right
now
we
are
ready
on
next
seven
with
a
lot
of
great
things:
charlie
11
and
again,
the
other
things
great
things.
Coming
soon.
A
I
wanna
introduce
jesse
palermo,
he's
the
chief
architecture
of
clear
measure,
a
software
architectural
company
that
empowers
a
client's
development
team
to
be
self-sufficient,
moving
fast,
delivering
quality
and
ruling
the
system
with
confidence.
Jeffrey
has
been
an
mvp
since
2006
and
he
has
a
lot
of
confidence,
a
lot
of
books
and
a
lot
of
great
information,
especially
about
blazer,
I'm
always
following
to
see
what's
coming
out
about
blaze,
so
please
also
follow
architecture
tip
for
clear
measure.
They
have
a
lot
of
great
information
about
secret
tracking,
about
blazer
architecture
about
devops.
A
So
those
really
really
great
information.
Besides
that,
I
think
they
we're
gonna
be
doing
a
middle
of
the
next
month.
Another
quick
meet
up
where
joche
will
be
presenting
his
experiment
on
npt
friend
or
singh
strangle.
So
that's
a
surprise
that
he's
building
and
and
that's
it
jeffrey
I
want
to,
as
you
always
say,
on
your
podcast-
ask
you
before
we're
starting
to
any
other
content
like
hey.
B
Sure
sure,
oh
I've
been
I've
been
programming
for
money.
Since
I
was
18
years
old.
I
was
one
of
those
odd
kids
when
I
was
15
that
actually
had
my
own
web
page
shoot.
I
was.
B
I
was
actually
odd
for
having
my
own
email
address,
but
but
since
2013
of
I've
had
my
own
consulting
company,
clearmeasure
we're
a
software
architecture
company,
but
we,
interestingly
enough,
we
just
got
hired
to
modernize
or
to
to
help
their
team
modernize,
an
application
that
I
wrote
when
I
was
18.,
so
it
was
for
a
school
district
in
texas,
and
so
that
was
kind
of
that's
kind
of
interesting.
B
I
went
there
for
the
military
academy
started
an
air
force
and
kind
of
finished
joining
the
army
reserve
and
I
really
went
deep
into
net
programming
like
deep,
deep
deep,
because
the
army
sent
me
over
to
that
the
iraq
war
in
2003
and
2004-
and
you
know
there
were
certain
times
we
were
just
waiting
between
the
intense
times
there
was
times
where
we
were
just
waiting,
and
I
brought
some
some
dot-net
books
like
the
big
900
page
ones
at
the
time,
and
I
read
every
single
page
and
practiced
a
whole
lot.
B
I
purchased
a
laptop
computer,
a
dell
laptop
computer
from
a
computer
shop
in
kuwait
city,
and
I
found
a
way
to
get
get
get
there
and
so
programming
has
kind
of
started
out
as
my
hobby
and
and
now
I've
made
a
living
from
programming.
It's
really
fun,
and
now
I
have
a
high
schooler,
a
middle
schooler,
an
elementary
school
kid
and
trying
to
see
which
one
is
actually
going
to
find
the
love
of
programming.
B
B
While
I
was
in
college
at
texas,
a
m,
I
was
on
the
university's
country
and
western
dance
team,
and
so
it
was
kind
of
a
collegiate,
slash,
professional
dance
team.
So
you
could
say
that
I'm
a
professional
level
country
western
dancer
and
performed
all
over
the
place
is
on
tv
performed
in
different
countries,
all
kinds
of
stuff.
So
and
then
I
married,
I
married
a
woman
who
was
on
the
team
as
well.
So
now
my
wife
can
dance
with
my
wife
and
it's
fun.
A
A
I
do
remember
my
my
dad,
I'm
from
cuba,
so
my
dad
traveled
to
canada
when
I
was
in
high
school
and
he
came
back
with
a
laptop-
that
the
hard
drive
was
one
gigabyte
that
was
the
whole
hard
drive
and
then,
when
I
was
in
in
college,
we
have
a
really
huge
book
or
asp.net
that
it
was
just
crazy.
So
for
you
verifying
the
the
code,
you
have
to
type
everything
that
you
saw
in
the
book
and
then
you
didn't
compile.
A
It
was
like
like
crazy
and
I
feel
a
little
young,
my
partner
josh,
that
he's
right
there
as
well.
He
has
been
programming
for
like
25
years,
something
like
that.
So
he
also
has
these
crazy
stories
when
it's
just
it's
real
like
new
dads
right
now,
don't
know
how
good
they
have
it
and
I
think,
like
we
always
say
that,
but
it's
never
a
better
time
to
wear
the
net
developing
that
right
now.
B
A
B
Yeah
no,
this
is
a
interactive
talk.
So
if
there's
a
if
there's
a
question
kind
of
of
what
I'm
on
just
just
jump
in
and
and
ask
if
you
don't
want
to
put
yourself
on
microphone,
then
by
all
means
just
put
it
in
the
chat
and
maybe
jose
you
can
help.
If
there's
any
questions
in
the
chat
that
need
to
be
raised
up
and
yeah,
we'll
have
questions
at
the
end.
I
think
I
think
that'll
work
great
perfect.
B
Okay,
so
you
see
the
full
screen,
I
suppose
yeah
we
do.
Okay,
fantastic!
Well,
I'm
really
really
excited
to
speak
to
the
group.
I
think
this
is
the
first
time
that
I've
visited
with
your
particular
group.
So
thank
you
very
much
for
the
invitation
today.
We're
going
to
go
into
blazer
architecture
patterns
and
one
thing
that
I
just
want
to
give
a
disclaimer.
B
Is
I'm
not
going
to
introduce
blazer,
I'm
not
going
to
show
how
blazer
works,
I'm
kind
of
I'm
going
to
assume
that
you've
already
done
a
few
quick
starts
that
you've
created
a
blazer
application
from
the
template,
and
you
know
the
basics
of
how
it
works.
There's
there's
so
much
out
there
that
I'm
just
going
to
assume
that
you
know
generally
what
blazer
is.
B
And
so
that's
that's
my
goal
here,
and
so,
if
I,
if
I
talk
about
some
things
that
you're
not
familiar
with
just
take
some
notes
and
and
I'm
sure
you'll
find
lots
of
content
about
how
blazer
works
in
general,
because
we
wouldn't
have
time
to
to
cover
that
just
in
this
particular
talk
as
jose
mentioned,
I
do
run
a
podcast
he's
heard
me
on
the
podcast,
and
I
ask
that
question
all
the
time.
B
So
look
look
up
the
azure
devops
podcast
in
whatever
directory
you
like
it
tends
to
be
the
it
tends
to
be
the
first
or
second
listing.
If
you
just
look
up
azure
devops
and
even
if
you
look
up
azure
or
if
you
look
up
devops,
it
tends
to
be
in
the
first
handful
of
those.
B
But
if
you're,
if
you're
interested,
send
me
an
email,
there's
my
email
on
the
screen
and
I'll
be
happy
to
get
a
a
electronic
copy
of
the
book
sent
over
to
you.
I've
got
I
can.
I
can
send
individual
copies
to
individual
people.
That's
that's
my
deal
with
the
publisher.
Of
course
you
can,
you
can
buy
it
on
a
press.com
or
amazon
wherever
you
like
all
right.
So,
let's
get
into
some
of
the
context.
B
There's
several
blazer
projects
that
we've
been
involved
in
at
two
different
levels
and
we're
gonna
use
lessons
learned
from
real
laser
projects
that
are
in
production
and
and
I'm
gonna.
I'm
gonna
highlight
one,
that's
actually
in
the
microsoft.net
showcase.
B
So
if
you
go
onto
onto
the
dotnet
showcase
on
microsoft.com,
it
lists
a
whole
bunch
of
different
different
applications
and
companies
and
whatnot,
and
this
is
one
where,
if
you
just
look
for
it,
clearmeasure
helped
a
company
called
show
works
cloud
to
to
develop
a
auction
application,
and
this
particular
client
deals
a
lot
in
county
fairs.
B
Youth
livestock
auctions,
where
you
know
a
kid,
a
kid
raises:
an
animal
brings
it
to
the
fair
shows
it
they
get.
The
blue
ribbon
the
red
ribbon,
they
get
grand
champions,
reserve
champions
and
then,
if
they
like
to,
they
can
put
the
animal
up
for
auction
and
these
grand
champions
I
mean
on
the
low
end,
the
grand
champion
steer,
gets
sold
for
four
thousand
dollars.
Sometimes
you
know
twenty
thousand
dollars.
B
I
think
I
saw
a
twelve
thousand
dollar
hog
get
sold,
and
so
it's
a
huge
fundraiser
for
the
education
of
kids
that
are
going
into
farming,
ranching
and
agricultural
in
general.
But
the
the
auction
was
very
interesting
because
it
was
developed
during
during
the
time
when
county
governments
were
kind
of
shutting
down
and
restricting
people
going
in
person,
and
so
they
needed
a
way
to
do
this
auction
online,
and
so
that
created
a
situation
where
it
wasn't
just
a
regular
application.
B
It
was
a
high
intensity,
messaging
application
and
just
think
about
when
someone
makes
a
bid
how
quickly
you
need
to
see
that
that
that
dollar
amount
change
and
so
and
this
this
had
to
be
a
very,
very
responsive
application
and
blazer,
provided
the
ability,
literally
to
have
a
desktop
rich
application
that
was
launched
from
a
url
where
this
just
wasn't
a
web
application.
B
Where
you
go
from
page
to
page
to
page
you
brought
it
up
and
then
it
it
did
different
things
and
updated
itself,
and
people
bid
and
whatnot
so
I'll
reference
that,
and
we
also
have
a
car
auction
application,
as
well
as
some
others,
but
another
another
picture
of
one
of
the
modules
of
this
county:
fair
application.
This
is
actually
digital
signage.
This
is
a
big
screen.
B
Digital
signage
has
kind
of
taken
over
the
world,
but
there's,
but
it
receives
messages
from
a
control
panel
to
switch
to
the
next
lot
or
update
things,
and
and
all
that-
and
so
it's
it's
it's
a
this
one
happens
to
be
a
blazer
server
side
application.
Interestingly
enough,
just
out
of
the
box,
it
was
compatible
with
roku
tvs
with
fire.
Tv
sticks
just
plugged
into
the
back
of
a
screen.
B
So
just
you
know
having
those
smart
tv
capabilities,
the
basic
browsers
that
come
with
these
smart
tvs
and
the
dongles
are
enough
to
run
to
run
blazer
server
side,
blazer
webassembly,
not
out
of
the
box,
compatible
because
those
thin
browsers
don't
have
web
assembly,
but
they
do
have
web
sockets,
which
is
what
blazer
server
side
requires.
B
All
right,
I'm
going
to
I'm
going
to
go
through
some
architectural
ways
of
thinking
some
things
you
need
to
think
about
when
managing
memory,
how
to
implement
hub
and
spoke
patterns
in
your
blazer
application.
How
to
do
ui
eventing,
then
how
to
think
about
different
levels
of
testing
with
your
blazer
application
and,
finally,
some
unique
things
that
you
need
to
do
when
monitoring
it.
In
production,
let
me
let
me
set
the
stage
for
this
blazer
application.
B
Let
me
show
you
a
highly
shrunken
technical
blueprint
for
the
flow
and
structure
of
a
devops
pipeline
that,
in
this
diagram,
is
implemented
with
azure
devops
services
and
and
deploys
with
octopus,
deploy.
It
has
a
continuous
integration,
build.
It
has
a
three-tier
deployment
pipeline
and
by
the
way
this
is
just
the
first.
This
is
just
the
top
third
of
the
full
devops
architecture
poster,
and
if
you,
if
you
would
like
by
the
way
the
high
resolution
pdf
of
this
just
send
me
an
email,
I'd
be
happy
to
happy
to
send
it
to
you.
B
But
I
wanted
to
annotate
where
in
your
devops
pipeline,
you
need
to
do
something
specific,
because
you
have
a
blazer
application,
and
so
you
can
see
the
little
blazer
icon
in
in
version
control
in
in
packaging,
as
well
as
in
in
deploying
and
and
by
the
way
you're
you'll
never
have
fewer
than
three
environments
in
your
in
your
deployment
pipeline,
because
there's
three
different
types
of
environments.
Of
course
you
have
production,
you
have
a
manual
test
environment
and
you
have
a
test:
automation,
environment.
B
It's
fine
to
have
multiple
production
environments,
just
like
it's
fine
to
have
multiple
manual
test
environments.
It's
very
common!
It's
very
common,
for
you
know
the
development
team
itself
to
have
an
environment,
to
do
manual,
testing
for
product
management
to
have
an
environment,
do
manual,
testing
a
lot
of
times
for
customers
have
a
uat
environment,
that's
fine,
but
you
need
at
least
one
and
then
the
first
one
that
I
want
to
encourage
all
of
you
to
put
in
place.
If
you
don't
have,
it
is
an
environment
that
is
dedicated
to
test
automation.
B
I
like
to
call
it
the
tdd
environment
to
invoke
test
driven
development,
but
this
environment
allows
us
to
complete
the
third
step
in
continuous
integration.
I
work
with
a
lot
of
teams
that
believe
that
they
have
implemented
continuous
integration,
but
they've
only
implemented
one
part
of
continuous
integration,
there's
actually
three
parts
and
by
the
way
I
know,
of
course,
a
little
bit,
but
this
is.
This
is
important
for
every
application,
not
just
blazer.
B
If
you,
if
you
go
back
to
2006,
I
think
it
was.
There
was
a
book.
It
was
published
by
addison
wesley
press
and
it
was
it
was
entitled
continuous
integration
and,
to
this
day
I
think
that's
the
best
book
that
fully
describes
the
tensions
in
the
industry
at
the
time
and
why
we
adopted
continuous
integration
in
the
first
time
as
a
pattern
and
described
the
pattern
and
there's
three
there's
three
unique
stages
in
continuous
integration.
B
The
book
calls
it
the
commit
stage,
but
I
can't
I
think,
the
common
name
for
it
now
is
private,
build
and,
and
then
there's
also
the
integration
stage
where
you
have
your
integration
build
and
then
there's
your
first
deployment.
So
the
the
first
stage
private
build
is
completely
on
a
developer's
workstation.
With
your
your
own
build
script
and
your
you're
answering
the
question
I
made
a
change.
B
Is
my
change
ready
to
be
shared
with
the
team,
or
did
I
completely
break
the
application
and
it
is
not
ready
to
be
shared
with
the
team?
All
right,
that's
the
that's
the
question.
The
integration
build
it,
you
know
runs
on
a
team
share
server.
It
answers
the
question
with
all
the
different
changes.
All
the
members
of
the
team
put
together.
Do
we
still
have
a
stable
piece
of
software?
That's
ready
to
be
deployed
somewhere
or
with
all
these
changes
put
together
did
something
break.
That's
the
question.
B
The
third
stage
of
continuous
integration,
which
is
your
first
deployment
answers.
The
question:
does
this
release
candidate,
which
has
a
version,
is
the
product
of
a
build?
Does
this
release
candidate
still
deploy
properly,
and
does
it
still
start,
and,
and
so
that's
the
purpose
of
the
first
deployment?
B
B
We
want
to
find
out
for
ourselves
and
that's
also
the
place
to
run
post-deployment
smoke
tests
to
make
sure
that
your
deployment
process
is
still
working
properly,
as
well
as
full
system
acceptance
tests
to
make
sure
to
test
through
the
ui
all
right
enough
of
that
inversion
control.
There's
one
thing
that
you
need
to
keep
in
mind
for
your
blazer
application.
Now
the
good
news
is
that
for
source
control,
blazer
doesn't
do
anything
unique.
B
That
is
not
also
a
part
of
net
six,
but
it's,
but
it's
really
important
that
you
know
this
because
you're,
probably
creating
a
new
application
with
blazer
put
one
visual
studio
solution
in
one
git
repository
in
this
diagram.
I
call
it
put
one
version
to
software
application,
but
with
visual
studio,
one
version,
software
application
tends
to
be
one
visual
studio
solution
and
you
put
that
in
a
single
git
repository,
don't
put
more
than
one
and
don't
try
to
spread
it
out
across
different
git
repositories.
B
Now
it's
perfectly
fine
for
your
for
your
software
application
to
be
a
part
of
a
larger
system
and
that
larger
system
is
decomposed
and
whether
you're
thinking,
oh,
let
me
go
really
small
micro
service
style
or
whether
you're
just
decomposing.
A
software
system
into
you
know
a
chunk,
a
number
of
applications
and
it's
perfectly
fine
for
one
application
to
have
multiple
things:
to
deploy.
B
B
That's
what
happens
and
it
just
sits
there.
So,
even
though
a
user
is
clicking
around
and
changing
from
page
to
page,
and
even
though
the
url
keeps
changing,
you
only
have
one
web
request
that
ever
happens.
Okay,
that's
what's
happening
your
server
side,
blazer
application
is
running
on
the
server.
It
is
not
running
in
the
browser
and
if
you
were
to
press
f12
in
your
browser,
you
could
see
all
these
little
tiny
messages
going
back
and
forth.
B
If
you
go
to
the
network
tab
and
then
and
then
select
select
your
web
websocket
messages,
you
can
see
just
you
know
how
many
of
these
go
through
and
you
could
maybe
you
can
recognize
some
of
the
text
like
oh
on
render
completed
that
looks
familiar.
B
I
I
heard
word
that
the
edge
team
was
working
on
a
visualizer
for
these.
These
little
binary
messages,
which
you
really
can't
see
right
now.
I
don't
know
the
status
of
that
you
might.
If
you,
if
you'd
like
to
check
the
edge
canary,
builds
the
pre-release
builds,
then
you
could
check
out
to
see
if
what
they
have,
but
but
I
heard
that
they
were
working
on
a
visualizer
for
that
now,
webassembly
the
dlls
actually
get
pulled
over
to
the
browser
and
actually
run
inside
the
browser
sandbox.
B
B
The
answer
is
that
that
anything
that
you
could
do
with
running
javascript
in
the
browser
you
can
do
with
c-sharp
running
in
webassembly
in
the
browser.
If
the
browser
would
not
let
a
javascript
app,
do
it,
it's
not
going
to
let
your
web
assembly
app
do
it
because
it
literally
runs
in
the
same
browser
execution
environment
as
react
applications
as
angular
applications.
So
no
you
can't
format
the
client
c
drive,
but
you
can
do
other
interesting
things
like
you
know:
microphone,
video,
gps.
Whatever
apis,
you
know
the
browser
supports
okay,.
A
Yes,
before
before
we
move
to
the
app
settings
or
the
of
the
settings
of
the
app
service,
we
have
a
questions
about
the
the
git
repo.
So
jake
is
asking
like
their
thing.
They
have
a
template
that
contains
several
projects
so
console
api
web
is
asking
shouldn't
have
so
then
we
have
all
of
those
in
the
same
repo.
B
So
that
is
perfectly
perfectly
appropriate
for
having
the
same
get
repository
because
it
sounds
like
it
sounds
like
it
would
all
be
one
visual
studio
solution.
You
just
have
multiple
things
to
deploy.
You
have
a
console
project,
an
api
project,
a
web
project
inside
the
same
visual
studio
solution
and
anytime,
something
in
there
changes
you
produce
a
new
build,
a
new
version
to
build
of
all
three
console
api
and
web.
If
that's
the
case.
Yes,
all
that
goes
in
the
same
git
repository
because
architecturally
that
would
be
the
same
application.
B
B
Okay,
all
right!
So
let's
go
on
to
some
settings
that
it
falls
under
the
category
of
just.
Do
it
this
way
when
you're
deploying
to
azure
app
service
and
as
as
much
as
there
is
a
whole
lot
of
talk
about
azure,
container,
apps
and
kubernetes
and
docker
containers
and
running
running.net,
6
on
linux
and
all
kinds
of
different
ways
to
deploy,
applications
and
azure
functions,
and
all
that?
B
B
I
mean
it's,
it's
not
like
a
80
20
rule
or
what
it
is
it
just
it
absolutely
dominates.
So
you
know
there's
other
things
that
we'll
see
if
they
catch
on,
but
app
service
is
drop
dead,
easy
and
it
works.
So
well
that
you
know
you
really
have
to
have
a
specialized
environment
to
to
need
to
absorb
some
other
friction
in
order
to
get
some
other
gains.
B
Azure
container
service
is
or
sorry
azure
container
instance
or
sorry,
azure,
container,
apps,
there's
so
many
names.
That's
the
new
one
azure
container
apps,
which
is
applying
the
app
service
model
on
top
of
an
azure,
run
kubernetes
cluster
that
you
don't
have
to
worry
about.
So
I
think
that
that
one
is
really
interesting
because
it'll
be
just
as
simple
as
the
way
app
service
is
now
but
under
the
covers,
it'll
be
kubernetes,
and
so
the
only
change
that
we
will
see
that
we
will
actually
benefit
from
is.
B
We
won't
have
to
make
scaling
decisions,
one
server
at
a
time
we
can
make
scaling
decisions
much
more
granularly,
because
we
don't
have
to
buy
an
entire
server
instance.
At
a
time
like
we
currently
do
with
app
service,
but
here's
some
settings
you
want
to
think
about
because
normally
a
app
settings
deployment
starts
out
with
the
free
tier
and
then
you
upscale
it.
B
Server
side
went
way
too
far,
and
so
you
also
wanna
have
your
web
sockets
turned
to
on
the
free
tier
does
not
support
websockets,
so
you
want
to
intentionally
turn
web
sockets
on
if
you're,
using
blazer
server
side,
because
it's
using
a
built-in
signalr
hub
which
connects
with
websockets
and
if
it's
turned
off
it'll
use,
javascript
long
polling,
which
you
know
you're
wasting
half
of
your
cpu
just
because
javascript
long
polling
takes
so
long
and
then
you
want
to
have
arr
affinity
turned
on
because
as
soon
as
you
scale
out
and
add
your
second
web
server
instance.
B
If
you
don't
have
that
sticky
sessions
turned
on,
then
blazer
server
side
is
going
to
completely
break
because
it's
going
to
send
users
round
robin
or
based
on
load,
whereas
you
want
a
user
sent
back
to
the
same
server
instance
that
they
started
their
session
on,
because
that's
where
their
memory
is.
Okay,
all
right.
So
I
just
wanted
to
highlight
a
few
of
those,
the
sample
solution
structure
for
a
good,
blazer
application.
B
I
wanted
to
just
to
show
you
one.
This
one
also
uses
the
onion
architecture,
visual
studio,
solution
structure
for
those
who,
if
you,
if
you've,
never
heard
of
onion
architecture,
just
do
an
internet
search.
There's
tons
of
content
on
that.
It's
an
architectural
pattern
that
I
first
wrote
about
in
2009,
it's
been
cited
in
in
several
books
and
and
whatnot,
but
you'll
know,
you'll,
know
it
because
there's
a
project
called
core
and
that's
the
biggest
project
in
the
visual
studio
solution.
It
doesn't
reference,
hardly
any
nuget
packages.
B
It
is
just
your
code,
just
your
business
logic
code,
your
core
entities
and
the
code
that
makes
your
app
unique
everything
else.
Just
about
is
adapter
code
in
some
sort,
and
you
can
see
you
know
core
dot
messages.
If
we
have
some
some
messages
that
are
shared
with
you
know
in
service
bus
or
azure
service
bus,
we
have
data
access
that
has
that
big
entity
framework
dependency.
Where
we
have
to
know
about
you
know
database
types.
We
have
a
database
project
for
sql
server
database
migrations.
B
B
Okay,
let's
talk
about
memory
management
and
I
want
to
talk
about
scopes
in
the
built-in
inversion
of
control
container,
the
the
dependency
resolver,
so
blazer
uses
the
regular
dependency
injection
container.
That's
built
into
net
six,
which
kind
of
came
from
from
asp.net
core,
but
the
difference
is
how
the
how
the
the
url
requests
happen.
Let's
talk
about
blazer
server
side,
first,
so
no
matter
how
many
times
someone
clicks
around
and
blazer
server
side.
B
There
is
one
web
request
all
right!
That's
key!
So
well,
we'll
come
back
to
that.
If
you
mark
an
object
as
singleton,
no
matter
how
many
times
you
ask
for
its
type
you're
going
to
get
the
same
you're
going
to
get
the
same
instance
of
the
object
that
was
created
except
only
global
to
the
machine.
Okay,
so
singleton
is
one
per
machine
when
you
scale
out
and
have
multiple
web
server
instances
you're
going
to
get
one
per
blazer
server
side
process,
which
is
one
per
web
server,
one
per
machine?
Okay.
B
B
Now,
if
you're
doing
a
web
api
controller
for
a
web
service,
then
no
matter
you
know
during
during
the
processing
of
any
code
in
that
web
service
you're,
going
to
get
the
same
instance
that
you
asked
for
and
then
the
next
time
that
that
web
service
is
called,
and
you
ask
for
that
same
type,
you're,
going
to
get
a
different
instance.
That's
scoped!
B
B
If
you
only
have
one
web
server
running,
then
you're
going
to
witness
the
same
behavior
with
scoped
and
singleton,
because
blazer
server
side
only
has
one
web
request.
So
it's
going
to
appear
like
it's
erroneously
behaving
like
a
singleton,
but
that's
just
because
the
architecture
blazer
server
side,
transient
you're,
going
to
get
a
new
object
every
time.
Now,
let's
look
at
web
assembly
for
singleton,
I
mentioned
for
webassem
for
blazer
server
side.
B
If
you
have
the
same
application
as
web
assembly-
and
you
have
five
web
servers,
but
you
have
just
tons
of
people
connected
every
single
connected
user
is
running
a
different
instance
of
your
application
in
their
web
browser.
So
singleton
means
scoped
to
the
process.
The
process
lives
in
the
user's
web
browser,
so
every
user
is
going
to
end
up
creating
an
instance
of
that
object.
Also,
scoped
is
the
life
of
a
single
web
request.
Well
in
web
assembly,
there
is
one
web
request,
which
is
to
load
the
application
and
then
there's
no
other
web
requests.
B
It's
all
running
in
the
browser,
so
scoped
and
singleton
operate
exactly
the
same
inside
a
webassembly
process,
no
matter
how
many
web
servers
you're
scaled
out,
then
of
course
transient
you're
going
to
get
a
new
object
every
time.
Okay,
so
I
wanted
to
go
over
those
also
with
blazer
webassembly,
there's,
no
concept
of
memory
cleanup
or
session
abandonment.
B
As
long
as
that
browser
is
active,
it's
consuming
memory,
but
it's
consuming
memory
on
the
user's
computer,
blazer
server
side
is
consuming
memory
on
your
server
and
if
a
user
goes
away,
then
there's
this
little
countdown
for
that
user.
That
starts
up
and
there's
a
three
minute
timeout
and
after
that,
it
it
kind
of
clears
everything
for
garbage
collection.
B
But
if
a
lot
of
people
use
use
their
phone
to
to
use
the
blazer
applications
and
if
it's
a
blazer
server
side
application,
you
know
they'll
put
the
phone
away
in
their
pocket
and
then
they'll
open
it
back
up
and
the
browser
the
javascript
client,
the
blazer
javascript
plan
is
actually
pretty
smart.
It
tries
to
link
back
up
with
the
same
session
and
oftentimes
it's
successful,
so
memory
for
a
user
session
sticks
around
for
three
minutes.
Now
that
is
configurable.
B
The
normal
usage
pattern
is
for
a
anonymous
user
to
find
something
in
a
search
engine
to
click
over
to
it,
to
read
it
and
then
go
away
in
that
case,
you're
creating
a
you're,
creating
a
full
user
session
for
that
particular
user,
which
is
going
to
allocate
some
memory
on
the
server.
And
it's
going
to
hold
that
memory
for
three
minutes
now
you
could
allocate
it
down
to
zero
and
and
that's
fine
but
you're,
still
you're
allocating
a
reasonable
chunk
of
memory
for
that
session
and
then
having
to
clean
it
up.
B
And
so,
if
you
have,
if
you
have
100
bounce
rate,
where
someone's
just
coming
looking
at
it
and
going
away
you're,
probably
going
to
be
better
served
just
using
using
razor
pages
using
aspin
and
nbc.
If
you
need
something
dynamic,
consider
using
cons
if
you
need
something
dynamic
in
part
of
the
page,
you
can
make
part
of
the
page
a
webassembly
application
and
make
it
dynamic
and
only
the
first
time
they
come
to
your
site.
They'll
they'll
cache
those
assemblies.
B
Now,
if
you
have,
if
you
have
people
who
come
to
your
site
and
then
they
never
come
back
well,
you
got
to
think
about
that
as
well,
because
bandwidth
all
right.
So
if
you're
using
entity
framework
there
is,
there
is
a
bug
that
generated
a
you
know
a
bit
of
explicit
guidance
from
microsoft
for
the
db
context
for
entity
framework,
because
if
you're
now
entity
framework
originally
is
only
used
in
blazer
server
side
because
you're
on
the
server,
but
with
the
introduction
of
the
sqlite
database
able
to
be
used
in
the
browser.
B
Well
now
you
can
just
use
entity
framework
in
the
browser
against
its
local
instance
of
sql
lite.
Now
you're
not
going
to
have
your
entire
business
database
in
that.
But
if
you
want
to
use
the
same
programming
model
for
storing
a
little,
you
know
a
smaller
set
of
data
just
to
be
able
to
work
with,
then
then
you
might
have
a
db
context
in
webassembly,
but
you
want
to
make
sure
that
you
don't
use
the
same.
You
know
add
db
context
under
the
covers.
B
It's
just
calling
ad
scoped
and
so
that's
going
to
erroneously
use
the
same
db
context
for
multiple
different
users.
Database
requests
and
that's
not
what
you
want.
So
there
is
a
pattern
for
creating
explicit
factory
to
handle
that,
and
so
I
encourage
you
to
use
it
all
right.
Let's
jump
to
hub
and
spoke
patterns.
B
There
was
a
significant
period
of
time
where
a
lot
of
programmers
in
the
industry
were
doing
page-based
web
applications.
They
were
doing
stateless
web
applications.
I
mean,
if
you
think,
about
it,
going
from
shoot
going
from
2004
all
the
way
up
to
what
2015.
B
If
you
said,
oh,
I'm
creating
an
app
an
application,
a
lot
of
people
just
assume
you
were
creating
a
web
application
and
if
you
said
I
am
creating
a
web
application,
they
would
just
assume
that
it
was
a
stateless
web
application
and
most
of
the
time,
they'd
be
right,
and
what
that
meant
is.
That
is
that
we
had
effectively
transaction
script
architecture
pattern
where
we'd
have
top
down
executed
logic.
B
You
can
do
so
much
more.
If
you
have
a
native
application
running
on
the
computer
and
it
can
have
memory,
it
can
save
stuff
and-
and
you
know
old
timers
like
yeah,
you
can.
We
did
that
and
and
so
blazer
it
kind
of,
brings
that
back,
but
guess
what
it's
a
native
application
that
can
save
and
have
state,
but
you
can
launch
it
from
a
url.
That's
why
everybody's
so
excited
everybody
that
understands
html
and
css.
B
Besides
the
size,
c,
sharp,
really
html
and
css
say
man,
I
don't
have
to
use
javascript,
which
is
a
terrible
language.
I
mean
even
the
experts
in
javascript
write
books
on
the
amount
of
the
javascript
language
to
avoid
and
have
a
teeny
tiny
book
called
javascript,
the
good
parts
and
it's
a
really
tiny
book.
So
even
the
javascript
people
don't
really
like
writing
javascript
and
google
with
google
angular.
That's
why
you
know
they
adopted
microsoft's,
typescript
and
there's
so
many
anyway
I'll
get
off
that
soapbox.
B
But
with
a
native
application
you
want
to
implement
some
type
of
hub
and
spoke
pattern.
If
you
don't,
then
you're
missing
a
pinch
point
and
you're
going
to
write
so
much
code.
Let's
say
you
have
an
application
with
a
hundred
screens
each
with
you
know
a
couple
of
buttons.
B
And
so
what
you
see
on
the
screen
is
a
query
object
and
it
just
because
of
the
syntax,
it's
using
nested
classes,
so
new
auction
entry,
query
dot
by
id
well
buy
id,
is
a
inner
class
of
auction.
That's
just
a
syntactic
trick
that
this
particular
application
happened
to
use
and
it
sends
it
down
the
bus
which
routes
it
to
a
handler
class
that
can
actually
run
the
query
with
entity
framework
and
then,
when
that
happens,
we
can
also
notify
and
send
events
that
the
entity
was
refreshed.
B
If
you
look
at
the
bus
implementation
in
the
car
auction
application,
you'll
see
it's
very,
very
simple
and
it
actually
wraps
the
mediator
library,
which
uses
dependency,
the
dependency
injection
container
to
create
handlers,
and
it's
actually
pretty
simple.
But
then
you
have
one
class,
this
bus
class,
which
can
see
literally
every
command
every
query
that's
going
on
in
the
entire
application,
so
you
can
do
cross-cutting
concerns.
B
What's
interesting.
With
with
that
is
look
at
this
publish
method.
We
after
we
do
mediator.publish
and
route
it
to
the
right
handlers.
Then
we
can
also
do
interesting
things
like
broadcast
it
across
all
the
users
in
the
car
auction
application.
B
One
one
interesting
pattern
that
really
jumped
off
having
one
spot
is
to
record
custom
events.
Where
we
take
those
queries,
we
take
those
commands.
We
take
those
events.
We
use
the
name
of
the
type
to
create
a
custom
event
and
application
insights
and
you'll
see
later
on
in
the
presentation.
The
interesting
graphs
that
that
allows
us
that's
allowed
us
to
do
all
right
also
consider
consider
this.
It's
not.
B
To
ask
the
server
a
very
specific
question:
you
give
us
the
weather
forecast
and
the
pattern
that's
given
is
that
every
time
the
web
app
the
webassembly
application
needs
to
call
back
to
the
server
you
would
create
another
web
api
controller
well
fast
forward
to
an
application.
Now
you
got
100
screens
each
with
you
know
two
buttons
or
each
with
two
things.
You
load
something,
and
then
you
allow
the
user
to
click.
Something
do
some
type
of
transaction.
B
So
now
every
screen
100
of
them,
have
two
things
that
it
needs
to
call
back
to
the
server
for
so
now,
we're
left
with
a
situation
where
we
have
200
web
services.
Now
I'm
ignore
how
you
might
group
them
between
you
know
and
have
multiple
on
the
same
web
api
controller.
I
don't
care
about
that.
You
still
have
200
web
services
for
a
application.
That's
not
not
public
you're,
not
you're,
not
sharing
these
http
apis
with
the
world.
This
is
just
for
your
webassembly
application.
B
Architecturally,
you
don't
care
about
these
web
services,
you're
not
going
to
layer
on
a
swagger
ui
you're
not
going
to
make
them
discoverable
you're,
not
going
to
manage
the
contracts
and
versioning
of
them,
because
the
only
client
is
the
other
project
literally
inside
the
same
visual
studio
solution.
So
there's
no
need
to
do
web
service.
Versioning!
There's
no
need
to
do
swagger.
In
fact,
there's
no
need
to
have
200
web
services.
When
you
have
that
situation
and-
and
you
have
your
webassembly
application
talking
back
to
your
server,
you
only
need
one
web
service.
B
B
Application
extends
across
processes
across
servers
across
computers,
and
if
you
do
it
that
way,
then
a
lot
of
other
things
fall
into
place
really
really
nicely
and
and
only
managing
one
web
service.
That
can
receive
any
type
of
queries
that
you
have
any
type
of
commands
that
you
have.
It's
really
easy
you
can.
B
You
can
just
serialize
the
body
of
that
with
json
and
deserialize
it
and
you
get
it
across
the
wire
and
literally
use
the
same
patterns
that
you
already
use
with
cues
and
topics
and
subscriptions
with
azure
service,
bus
or
rabbitmq,
and
also
signal
r.
You
take
some
type
of
object
and
you
serialize
it
you
throw
it
across
a
q
or
throw
it
across
signal
r
and
it's
got
to
be
serialized
on
the
wire
and,
on
the
other,
end
it's
deserialized.
B
But
if
you
have
200
different
message
types
you
don't
have
to
have
200
cues
in
azure
service
bus.
You
could
send
them
all
down
one
queue.
So
that's
the
difference
between
number
of
number
of
contracts
or
message,
types
and
number
of
unique
transports
in
in
web
services.
You
only
need
one.
You
only
need
one
transport
and
for
an
unlimited
number
of
of
message,
types
all
right.
Let's
jump
into
the
ui,
not
not
the
whole
application,
but
just
the
ui
and
let's
dive
into
eventing
your
blazer
ui
is
stateful.
B
It
would
change
the
mouse
cursor
from
waiting
back
to
the
pointer
now
most
of
the
time
it
was
this
tiny
little
quick
blip
because
it
didn't
take
long
at
all,
but
the
times
where
we
were
calling
over
to
another
server-
and
there
was
even
you
know,
half
a
second
that
we
were
waiting.
You
had
the
hourglass
cursor,
and
so
the
user
immediately
knew
that
oh
something's
happening
okay,
I
I
I
don't
need
to
click
on
something
else.
B
Something's
happening
do
that
in
your
blazer
applications,
because
if
you
click
on
something
and
the
user's
expecting
something
to
happen
and
you're
processing,
but
you
give
the
user
no
feedback
whatsoever
that
their
click
even
registered.
Well,
they're
going
to
click
again
because
they're
concerned
they're
confused,
alright,
also
factor
your
screens
into
many
components.
B
B
Don't
worry
about
that
if
you
do
get
into
a
situation
where
you
have
to
do
some
profiling,
and
that
is
a
factor,
then
you
have
a
very
unique
situation
and
second,
you
factor
screens
into
components
not
for
the
software's
sake,
but
for
your
sake,
so
that
you
can
actually
understand
how
many
different
things
this
screen
is
doing
and
so
logically
map
out.
B
What's
on
your
screens
and
factor
every
individual
thing
into
a
different
component,
you
know
every
logical
thing
if
a
particular
part
of
the
screen
changes
for
a
different
reason,
it
probably
needs
to
be
its
own
component,
all
right.
So
let's
talk
about
ui
eventing
in
this
in
this
particular
sample.
B
This
is
this:
is
part
of
the
the
car
auction
application
and
notice
that
at
the
top
we
have
a
sub
component
called
refresh
timer,
okay,
refresh
timer,
and
I'm
going
to
jump
into
refresh
timer,
and
this
is
the
entirety
of
the
refresh
timer
component
notice
that
there
are.
There
is
no
html
in
this
component.
Not
a
single
html
tag
doesn't
need
it.
B
This
component
is
alive
if
it's
on
a
particular
screen
and
its
only
responsibility
is
to
wait
a
certain
number
of
seconds
as
configured
by
whatever
you
put
in
the
app
settings
file
and
fire
off
a
refresh
timer
triggered
event
every
some
number
of
seconds.
You
know
whether
it's
5
seconds
10
seconds
or
whatnot,
and
just
fire
off
an
event
that
says
hey
re
refresh,
because
there
are
some
instances
where
you
know
something
changed
and
it
needs
to
needs
to
be
refreshed,
along
with
the
changes
of
pricing
that
are
forcibly
pushed
all
right.
B
B
This
this
assumes
that
it's
using
a
ui
bus
implementation,
which,
by
the
way,
there's
there's
a
library,
called
blazer,
nvc
I'll,
show
you
next,
which
you
don't
have
to
make
your
own,
or
you
can
just
use
it
as
a
reference.
B
But
this
is
ui
eventing,
and
so
all
you
have
to
do
is
implement
the
interface
and
then,
of
course,
you
have
to
implement
a
method.
That's
the
handle
method,
so
we
see
refresh
timer
triggered.
All
we
have
to
do
is
call
whatever
code.
We
want
to
call.
So
if
it's
oh,
let
me
refresh
the
entries
or
do
whatever
you
want
to
do,
and
you
can
be
an
eye
listener
of
any
number
of
ui
events.
B
So
that
is
a
really
empowering
empowering
pattern
to
use,
because
you
are
going
to
segment
your
your
screens
into
multiple
components
and
it's
often
there's
tons
of
questions
on
the
internet
with
blazer
of
how
to
do.
Communication
between
parent
and
child
components
do
not
think
of
the
relationship
as
parent
and
child.
B
If
you
do
that,
you're
going
to
create
coupled
code,
that's
really
hard
to
maintain,
because
what
happens
is
yeah,
okay,
parent
to
child,
but
wait
a
minute
hold
on
and
the
way
it's
structured,
the
the
master
page
or
the
layout,
the
layout's
kind
of
a
parent
of
the
parents,
and
we
don't
have
a
direct
link
there
and
the
parent
that
has
the
whole
screen
or
within
the
master
page
area,
is
going
to
have
a
child,
but
wait
a
minute
that
child's
also
going
to
have
a
child
and
that
child
is
going
to
have
a
child
and
so
that
way
of
thinking
quickly
breaks
down.
B
Instead,
you
need
to
have
any
number
of
components
that
are
alive
register
for
listing
as
a
listener
on
the
bus
for
that
screen,
and
then
any
of
them
can
send
an
event
through
that
bus
and
all
of
the
components
on
the
screen
will
have
a
chance
to
receive
that
in
their
handle
method.
They
can
do
something.
That
is
how
you
communicate
between
components
on
a
particular
screen.
Don't
try
to
do
parent
child
communication.
It
just
doesn't
work
now,
some
somebody's
going
to
say.
Oh
yeah,
I
got
it
to
work.
B
What
I'm
saying
is
when
you
get
to
a
100
screen,
applications
all
decomposed
it
from
from
a
practical,
maintainable
perspective
across
a
multi-developer
software
team.
It
doesn't
work
okay,
so
blazer
mvc
is
a
library
that
I
published
just
to
give
some
to
give
some
samples
on
separating
your
controller
logic
from
the
layout
from
the
layout.
In
the
view,
microsoft,
kind
of
bundles
them
together,
every
generation
of
technology
we've
had
the
same
discussion.
How
do
I
separate
the
logic
that
makes
decisions
from
the
logic
that
makes
it
pretty?
B
And
you
know,
aspen
at
nbc
was
a
response
from
from
web
forms.
Where
hey
there
was
classes
that
decided
what
to
do,
and
then
there
was
other
classes,
the
views
that
decided
how
it
should
look
well
in
blazer
they
gave
us,
you
know
they
gave
us
a
sample
which
has
them
jumbled
together
in
the
same
file
again
now.
Yes,
you
can
use
code
behind
files
and
all
that,
but
it's
still
compiled
into
a
single
object
that
that
shares
the
same
memory
at
run
time.
B
This
is
this
is
segmented
into
a
controller
and
a
view,
and
this
is
what
it
looks
like
refactored.
You
have
a
class
that
now
owns
the
route,
slash
counter
and
it
it
responds
to
the
events
it
does
the
incrementing,
whatever
logic
is
appropriate
and
then
the
view
only
is
what
it
looks
like
and
the
only
c
sharp
in
the
view
is
literally
just
properties
so
that
the
controller
can
tell
the
view
what
to
do.
The
view
doesn't
decide.
You
know
what
it
what
it
does
on
its
own.
B
All
right.
Let's
see
here.
B
Okay,
broadcasted
events,
so
I
talked
about
ui
events.
I
touched
on
broadcasting
in
the
bus,
but
this
is
this
is
a
sample
of
how
you
can
do
it.
If
you
have
a
broadcaster-
and
you
hook
it
into
your
main
main
bus
and
send
everything
to
it,
the
broadcaster
can
have
and
your
bus
could
do
it
too,
but
it's
oftentimes
easier
for
the
broadcaster
to
to
control
how
to
broadcast
it
and
oftentimes.
B
You
will
want
this
to
be
in
a
separate
project
that
knows
about
signalr,
because
you
do
not
want
a
signalr
reference
in
your
core
project
at
all.
You
want
to
keep
all
those
libraries
off
to
the
side,
and
so
you
need
to
use
dependency
inversion
to
have
an
interface
and
then
a
a
class
in
a
different
project
that
references,
so
you
can
see
we're
using
the
hubcontext.clients.group.
B
This
is
how
we
only
send
real-time
push
notifications
to
clients
that
are
in
a
particular
group
in
a
car
auction.
We
don't
want
to
send
pricing
updates
to
people
who
are
currently
looking
at
an
auction
in
a
different
state.
We
we
only
want
to
push
the
price
updates
to
the
people
who
are
looking
at
the
auction
that
just
had
the
price
updated.
So
that's
that's
one
example
all
right.
Let
me
jump
into
unit
testing
and
integration
testing
blazer
components.
B
I
did
there
is
a
azure
devops
podcast
on
b
unit,
and
so
you
can
look
that
up
the
author
of
b
unit
but
b
unit
is
a
library
that
works
really
well
with
with
in-unit
tests
x
unit
tests,
and
it
allows
you
to
create
a
blazer
component
in
memory
in
a
unit
test
and
tell
it
what
to
do
force
it
through
its
particular
life
cycles
and
then
interrogate
the
dom
with
css
selectors
and
make
sure
that
elements
are
there
or
elements
are
not
there.
B
And
so,
if
you
are
not
doing
unit
testing
for
your
actual
components
for
those
classes,
then
you
can
use
b
in
it,
and
this
is
generally
what
it
looks
like
for
your
full
system.
Testing
selenium,
is
still
what
you
want
to
use.
Now
there
is
playwright
that
microsoft
is,
is
pushing
that.
I
think
it
has
the
potential
to
unseat
selenium,
but
selenium
has
been
kind
of
the
go-to
for
over
a
decade
for
any
kind
of
web
application
in
c
sharp.
B
But
this
is
what
a
full
system
test
using
selenium
looks
like
and
literally
you're
you're,
just
telling
it
you
know,
navigate
to
auction
there's
these
are
helper
methods.
You
don't
want
to
have
any
selenium
syntax
in
your
tests.
You
want
them
to
read
like
english
and
call
helper
methods,
but
one
thing
I
want
to
call
your
attention
to
you
see
how
there's
multiple
calls
to
seleniumtestdriver.takescreenshot
with
a
name
every
single
time.
You
do
a
particular
task
in
your
full
system
test
with
blazer.
B
You
want
to
take
a
screenshot
and
I'll
show
you
a
little
bit
later
how
those
how
those
help
you.
B
All
right
in
full
system
tests,
you
also
want
to
do
some
common
setups.
You
want
to
operate
your
data
layer
and
push
some
things
interactively
push
data
into
the
database.
You
don't
want
to
have
this
golden
copy
of
test
data.
You
want
to
have
your
test
suite,
set
up
the
data
that
your
tests
need,
and
so
that's
the
way
you
want
to
run
and,
of
course,
every
test
you
need
to
separate
into
arrange
act,
assert
all
right,
but
let
me,
let's
see,
I'm
going
to
jump
to
jump
to
the.
B
Jump
to
operations
all
right,
blazer
server
side
is
going
to
use
more
memory.
More
cpu,
okay,
blazer
server
side
benefits
from
low
latency.
Because
of
how
many
times
it
calls
back
to
the
server.
With
these
tiny
little
messages
for
blazer
server
side,
you
want
to
use
the
v3
instances
of
of
web
of
servers.
B
You
don't
want
to
use
v2
v3
came
out
last
november
and
they
doubled
the
horsepower
for
the
same
cost,
and
so
you
know
p1
v3,
p1,
v
or
basically
p1
to
p3
v3,
the
p3.
You
know
it's
got
32
gigs
of
memory,
eight
cpus,
it's
kind
of
a
beast:
it's
also
a
thousand
dollars
a
month.
P1
v3
is
the
smallest
recommended
server
that
the
azure
team
recommends.
You
run
a
blazer
server
side
app
on
okay
or
its
equivalent
is
p2
v2.
B
Now,
if
you're
using
a
webassembly
app,
you
can
run
it
on
a
tiny
web
server,
because
that
web
server
is
only
surfacing
web
services
and
if
those
web
services
are
small
enough,
then
then
really
it's
just
a
it's
tiny.
All
the
processing
is
on
the
client's
machine,
so
very
different.
Now
for
monitoring.
B
If
you're
monitoring
a
web
service
application
behind
a
webassembly
application,
all
the
same
stuff
that
you
know
about
how
to
how
to
monitor
those
applies,
if
you're
monitoring
a
blazer
server
side
application,
you
want
to
look
at
two
metrics
right
away,
and
you
add
these
as
the
first
ones
on
your
on
your
application,
insights,
dashboard.
You
want
to
look
at
the
server
response
time.
You
want
to
look
at
the
average
receiving
response
time.
You
want
your
server
response
time
to
stay
under
10,
milliseconds
and
you're
receiving
response
time
to
stay
under
100
milliseconds.
B
We
found
that
if
you
stay
under
those
thresholds,
no
matter
what
it's
doing,
the
users
cannot
tell
any
discernible
delay
whatsoever.
So
those
are
the
thresholds
that
we
found
out
all
right
and
then
finally,
I
told
you,
I
would
show
you
what
factoring
everything
into
commands
and
queries
can
do
for
you
in
application
insights.
B
This
is
a
graph
where,
by
pushing
everything
as
a
custom
event
into
application
insights,
you
literally
can
see
the
type
names
of
your
commands
and
queries
in
the
drop
down
in
the
filters
in
the
graphs,
and
you
can
have
application
insights
plot
them
on
graphs
and
you
could,
like
you
say,
submit
new
bid
command
now.
I
have
five
of
them
selected
here,
but
you
could
say
how
often
are
people
clicking
this
particular
button
that
causes
the
application
to
do
this
particular
transaction
type
and
application
insights
will
gladly
give
you
a
graph
on
it.
B
Then
the
little
green
check
mark
on
the
top.
That's
the
azure
pipelines,
integration.
That
tells
you
when
that,
when
that
application
was
deployed
to
production
or
the
environment
that
you're
paying
attention
to
so
you
can
you
can
surface
differences
and
metrics
before
and
after
you
did
a
particular
deployment
to
that
environment
because
oftentimes,
you
know,
maybe
we
want
to
change
a
particular
metric
and
you
can
add
timings
and
all
that.
So
that's
that's
really
interesting.
B
All
right.
So
to
recap,
a
lot
of
information.
My
email
address
is
on
the
screen.
If
you
want
the
poster,
if
you
want
the
book,
if
you
have
any
questions,
just
send
me
an
email,
I
love
to
you
know,
go
back
and
forth
and
get
to
know
people
that
I
haven't
met
and
so
I'll
kind
of
leave
this
slide
up
while
we're,
while
we're
doing
q
and
a.
A
A
The
the
hope
pattern
that
we
have
everything
in
just
one
hub,
that's
something
that
I'm
looking
forward
to
finally
completely
implement.
So
I
think
that
I
talked
with
you
about.
I
think
that
at
some
point,
one
of
the
things
that
I
want
to
do
for
the
community
is
put
a
sample
with
all
these
recommendations
that
are
really
good.
The
the
controllers,
the
whole
pattern,
the
circuit
tracking
and
put
everything
out
there
in
just
a
sample,
so
people
can
go
from
there
and
just
use
it.
A
I
think
that
the
the
controller
gives
you
a
really
weight
the
copper
weight
to
handle
your
application
so,
and
I
definitely
will
be
sending
you
an
email
to
get
the
hd
definition
of
the
devops
completely
picture
of
all
those
steps,
because
that's
really
really
nice
information.
So
we
have
a
question
from
hoje.
That
is
for
the
nbc
pattern.
Do
we
need
an
external
library,
and
I
think
that
you
presented
the
newest
package
that.
B
Yes,
yes,
but
I'll
show
you.
If
I
I
mean
do
you
need
external
library?
Yes,
just
search
for
blazer
mvc
on
nuget,
but
also,
let's
see
nuget.org
blazer
mvc.
You
can
also
go
to
github
and
just
snag
the
code
and
up
and
just
put
the
code
in
directly.
If
you
want
to
laser
nbc.
B
It's
I
mean
if,
if,
if
you're,
in
a
situation
where
getting
new
libraries
approved
is
a
problem,
I
mean
you
can
just
snag
the
code
and
you
know
put
a
little
license
comment
at
the
top
and
it's
not
a
tremendous
amount
of
code.
I
think
that
the
the
one
tricky
part-
and
this
is
you-
don't
want
to
figure
out
how
to
implement
this
yourself
is,
is
around
render
fragments,
because
the
controller
takes
the
view
and
makes
the
view
a
child.
B
So
the
controller
doesn't
have
any
visual
elements,
but
it
has
control
and
it
executes
first
and
then
it
decides
what
view
to
use
and
when
to
use
the
view.
So
it
totally
wraps
the
view
and
the
view
becomes
the
visual
elements,
and
so
we
use
the
render,
fragments
and
and
the
the
render
tree
builder
to
take
the
view
and
do
the
embedding.
So
that's
a
little
bit
of
tricky
code
that
you
get
for
free
by
using
the
library.
But
do
you
have
to
use
this
library?
B
No,
you
could
go
and
learn
how
this
code
works
and
kind
of
adapt
it
and
change
it.
But
I
like
I
like
libraries,
so
I
don't
think
about
it,
but
there's
the
code,
so
you
can
kind
of
see
it
for
yourself.
B
A
The
other
thing
that
I
think
that
it
was
really
good
that
you
mentioned
is,
I
have
seen
a
lot
of
new
devs,
starting
with
the
free
tire
of
devops
of
azure
and
then
when
they
start
doing
a
production
application.
They
forget
that
the
freebase
and
it's
a
little
bit,
that
the
free
version
doesn't
have
workshops
on
and
then
just
by.
Turning
those
on,
they
see
a
huge
performance
improvement
in
their
application.
A
Yep
yep
all
right
guys
if
you
have
any
any
more
questions.
This
is
the
moment.
I'm
really
excited
about
this
talk.
I
think
that
we
will
be
recommending
like
one
of
the
things
that
I
one
of
the
recommendations
that
we
got
from.
You
is
like
everyone
in
our
company
that
started
working
with
us.
We
made
them
watch
blazer,
train,
beginning
to
end
after
that
they
are
good
to
all
the
start
developing.
So
I
think
that
we're
going
to
add
this
video
to
that
training
materials
through
all
our
new
devs.
B
A
B
So
I've
presented
exactly
one
talk
on
on
that.
I
just
I
just
touched
kind
of
described
it
here
and
I
don't
believe
that
that
code
is
public
just
yet.
I
intend
to
so
whoever's
interested
just
send
me
an
email
follow
up
with
me
because
it's
it's
on
my
to-do
list.
A
A
Okay,
guys,
if
there
is
no
any
more
questions,
I
won't
take
more
time
from
jeffrey.
I
really
appreciate
he
taking
his
time
off
thursday
night
to
talk
all
about
us
without
blazer,
but
I
have
to
say
like
blazer
right
now
is
the
the
the
new
kid
in
college,
but
it
comes
with
so
many
good
things,
so
I'm
really
excited
to
be
learning
more
about
it.
B
Well
I'll,
I
will
mention,
since
you
guys
have
done
so
much
content
around
xamarin
and
then
maui
and
whatnot.
We
have.
We
have
proven
architectural
prototypes,
that
blazer
embedded
inside
a
wpf
application
is
is
for
real.
Microsoft
has
talked
about
it.
I'm
sure
that
they'll
talk
about
it
more
at
build,
it
is
for
real,
it
works.
It's
it
imagine
imagine
this,
and
so
many
web
applications
would
benefit
from
this.
B
You
know
dropbox
and
google
drive
and
onedrive,
and
all
these
little
applications
have
their
system
tray
applications,
that's
that's
where
they
live,
and
if
you
click,
if
you
click
on
the
icon
in
system,
tray,
they'll
pop
up
a
little
mini
screen
or
a
little
menu
well
out
of
the
box,
you
can
create
a
little
tiny,
wpf
application
and
the
only
thing
wpf
about
it
is
the
icon
in
the
system
tray
and
then
a
little
bit
of
code
that
routes
notifications
to
the
windows
action
center.
B
So
you
have
windows,
notifications,
windows,
pop-ups,
but
if
you
double
click
on
it
it
is.
It
is
automatic
where
you
can
make
every
screen
in
that
application,
a
blazer
screen,
and
it's
not
blazer
web
assembly.
It's
not
blazer
server
side
when
you
put
it
in
wpf,
it's
blazer
native,
it's
running
as
a
windows
application.
So
if
you
were,
if
you
were
an
administrator,
yes,
you
could
format,
you
know,
or
you
can't
format
your
own
c
drive.
You
could
format
a
d
drive
or
something
you
know
it's
native
c.
Sharp.
B
Also
maui,
tooling,
is
not
at
prime
time,
but
the
maui
run
time
is
is
real.
I
mean
it's
work,
it's
working
great,
the
the
emulators
inside
visual
studio.
They
are
still
working
out
bugs,
but
the
the
vision-
and
I
really
believe
that
that
they're
getting
this
right,
that
with
maui
we
get
all
the
power
we
inherit
all
the
power
of
xamarin
to
create
android
and
ios
native
applications.
B
But
every
bit
of
the
user
interface
can
be
a
blazer
component.
Therefore
we
get
a
native
application,
but
anybody
that
knows
how
to
do
html
and
css
and
laser
components
now
they're
a
mobile
developer
and
it's
it's
real,
and
so,
when
microsoft,
you
know
pushes
it
out
as
ga
the
blazer
ui,
the
blazer
application
mark.
My
words
is
the
new
normal
net
application
for
wherever
your
application
is
running.
A
I
completely
agree,
and
if
you
see
the
new
templates
from
the
microsoft
teams
are
in
place,
if
you
see
the
blazer
in
maui,
that's
not
running
web
assembly,
that's
songs
interrupt
similar
to
blazer
server
that
they
are
doing
to
javascript.
If
you
see
the
blazer
webview
in
netcons,
they
throw
it
out
with
wind
pumps,
and
now
you
are
just
proving
to
us
that
you
did
it
on
wpf
blazer
review.
I
saw
someone
in
the
community
that
they
throw
some
angular
and
it
took
the
anger.
A
So
everyone
who
knows
some
html,
css
and
know
how
to
blaze
or
component
model
work
will
be
able
to
do,
as
you
say,
every
spectrum
of
the
net
development.
That's
just
like.
I
get
goosebumps
and
we
actually
put
it
on
electrum,
so
we
actually
did
an
electron
application
with
blazers.
So,
basically,
if
you
think
about
that,
it's
web
desktop
and
mobile
everywhere,
yeah.
B
B
They've
done
a
lot
of
little
screen,
add-ins
that
run
little
bits
of
javascript
ajax
and
do
all
kinds
of
stuff
and
we're
in
the
kind
of
architectural
planning
stage,
but
blazer
can
run
anywhere
that
you
can
do
modern,
javascript
and
server
callbacks,
so
that
we're
in
the
planning
stages
for
using
little
bits
of
blazer
inside
this
really
really
old
access
application,
because
architecturally
you
just
need
to
be
able
to
run
a
reasonably
modern
javascript,
that's
kind
of
the
requirement
to
be
able
to
run
a
little
piece
of
blazer
in
any
kind
of
existing
user
interface.
A
Nice,
I
just
want
to
mention
two
more
things,
so
I
have
seen
client
of
us
using
mpc
with
laser
components
already
and
it's
not
hard
at
all,
and
I
have
seen
the
other
way
I
have
seen
angular
applications
starting
to
with
to
migrate
to
laser,
but
they
don't
have
to
migrate
at
once.
They
are
migrating
little
components
by
little
component
and
I
think
that
microsoft
show
an
example
that
it
was
a
pudu
list
where
the
police
was
in
angular,
but
every
to
do
iron
was
on
blazer.
So
what's
this,
that
is
crazy
thing.
A
So
jeffrey
we
have
someone
else
in
the
in
the
middle
of
asking
for
your
twitter,
a
hundred.
So
if
you
can
show
that
one,
so
they
can
have
your
information.
Yes,
for
sure
sure
thing:
okay,.
A
A
Okay,
thank
everyone
for
joining
up.
We're
gonna
see
you
next
month
next
month,
we're
gonna
try
to
talk
about
avalonia,
and
hopefully
we
are
able
to
get
jeffrey
back
in
the
couple
months
to
see
what
is
the
state
of
a
blazer
with
net
sharing
and
everything
that
is
coming,
that
I
think
that
is
really
promising.