Running Blazor in production, lessons learned - Jimmy Engström - NDC London 2023

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
all right welcome to this talk about running Blazer in production and the lessons learned so some people love Blazer and let's just face it some haven't tried it yet so how many of you have tried Blazer before almost everyone okay how many uh wants to use Blazer so how is that not more so there are people that tried Blazer that don't that don't want to use okay so how many of you are a little bit unsure about place right what what is this stuff I don't know yeah a couple of you okay awesome my name is Jimmy angstrom I'm a Microsoft MVP in um developer Technologies I just switched areas and I've been we've been running Blaze reproductions since well seven days after it's release I run a podcast called cold enough to work together with my lovely wife and we also do a stream on Twitch so if you want to see us code Blazer stuff and interview some awesome guests please check that out we're actually building a call for paper site right now with using Blazer and Raven DB I've written a book about Placer and I'm currently writing a second edition which will come out in March I think around there and these are the only two Blazer books that has raccoons on the cover it's important okay we're here to talk about Blazer let's um let's go back to 2017. when Steve Sanderson had a web assembly talk on uh at NDC Oslo and he thought you know what it would be kind of cool to show something something like running.net in the web browser wouldn't that be kind of a cool demo so when it takes the stage he has working Visual Studio support he has even the name Blazer which is not a lot of names stick around for that long so even the name Blazer and he had running C sharp code inside of the browser he took an open source project of the.net runtime compiled that webassembly and then ran the.net dlls right there in the web browser that's kind of cool so why is Blazer awesome well I saw a Reddit post um that kind of embodied and and really got that message across it said this feels like cheating I feel like I'm getting away with something and it shouldn't be this easy to build sites how many feel the same okay yeah a bunch of you and I mean me included I'm not that comfortable with writing JavaScript I I don't like switching between JavaScript and typescript but the nice thing with blazer here is that I don't have to there's no extra framework I need to download and I don't need any extra skills like angular or react so for me this like it's like the perfect solution now I read somewhere that glazers for developers that don't want to learn new things and for me that is not the case I love learning new things but I to be fair I kind of tend to stay in the C sharp stack but there's a saying that Misfortune never comes alone and for me that Misfortune is npm webpack the typescript JavaScript power angle you know all these other technologies that I need to be the best at to be able to do work basically so for me Blazers removing clutter making me focus on what I need to do and well that's where Blazer comes in I got a um a friend request on Facebook and since I'm out talking at conferences like this I'm sure I probably met this person so he said so um are you um working with laser um yeah yeah I am someone perhaps talking saw my talk or some read my book or whatever so I thought yeah yeah yeah yeah yes I I I'm I'm working with bison never going to be a thing that's good to know I just invested my half my life basically here so that's good to know but but I asked him what why do why do you think why isn't this this is going why is this not going to be a thing well they said well it's never going to be danger react well kind of not the point it's kind of more getting letting us as C shop developers do interactive websites with the knowledge we already have without content context switching and all of that I mean there can be more than one Spa framework it's This Is Not Highlander this is technology right and Blazer isn't really just another framework it's part of.net and s.net developers I'm assuming most of you are dot-net Developers yeah huh there's no reason not to think about Blazer try Blazer out because it's a very mature technology at this point we're still kind of saying like Blazers in Microsoft new technology for small framework well it's three years old now there's a lot of framework that doesn't reach three years so it I don't know is it still new I am teach at a school uh a um accelerating Excel I've been trying to say that word for so long and I never managed to say that accelerated learning there we go too much caffeine so basically we have a someone that have never seen a code at all they come in they they get get to be become a developer in 12 weeks basically I mean they're not senior developers but they are developers in in the 12 weeks so I asked them so um would you like me to um to come in and teach Blazer I would love to do that and they're no no no no one is asking about Blazer no we have we have people asking for angle we have people asking for a react they do teach asb.net of course but no one is asking for Blazer and that's kind of the point they're asking for asp.net Blazers part of asp.net it should be in there but Blazer has another problem and that is we can run Blazer on so many things we can run it on the server we can run it in webassembly and now we can run it in Blazer hybrid with docket Maui and this leads into kind of naming and naming problem because we're saying that we're using Blazer but what part of Blazer are we using I'm contacted contacted a um podcast and I said you know what I I would be happy to be a guest on your podcast we can talk about Blazer talk about all these really cool Technologies and the reply was well we just talked about webassembly so when we don't want another web assembly talk or or a guest I'm like but that's just one way of running Blazer we can we can run it on so much more but okay so last year at the NDC London we recorded a podcast with Steve Sanderson and I I asked him so what kind of Trends are you seeing are you seeing the same because when I talk to companies companies say that well we're using Blazer server not a lot of companies are investing web in webassembly that I've talked to so I asked him do you see the same Trends is this happening with the people you talk to as well and he said yeah most people or most companies are running places server now to be fair Blazer server was around was around like a year before webassembly I think so it has a little bit of overhead start and webassembly is growing really fast so it's not really like saying like you should invest in places where you should invest in Blazer webassembly but a lot of these talks talks like this books blog posts within they talk about very heavily about webassembly like that's the only option but it's not we also have Blazer server so let's dive in and just figure out where all of these different Technologies comes in so we have Blazer server let's start with that so we have the server and on the server we have eraser components then we have Blazer so Blazer is taking whatever the the razor components it's it's outputting and put them into a rendered tree okay so it knows what what what's going on and what what kind of elements we have so let's say that we have an H1 and a button because why not and then we have the browser and on the browser side we have Dom we have a little bit of piece of JavaScript which is responsible to set up a signal or connection to the server so there are some downsides and we're going to come back to that in a minute so the render tree knows what it actually has sent over so it's just going to send if in this case we don't have anything in the Dom we're going to send over the H1 the button and the JavaScript is then going to take the Dom awesome so let's say that I click the button that request or that that trigger will go over the JavaScript all the signalr up to the razor components it's going to execute some kind of code which is then going to update the Dom or sorry the render Tree in this case it's a very subtle change I change Blazer rules to an S instead of a z Blaise is then going to push only that change over to the JavaScript and then update it on this is not entirely true because it actually I think it's three requests happening it's it's one that says the button click the um the data back and then an acknowledgment saying okay I got that and it's not sending the actual H1 tag and all of that but in in general it sends the update to the server so when it comes to webassembly we need to understand how JavaScript works just a little bit so what happens is that we downloaded JavaScript we pause the JavaScript either from a file or from inline and then it's going to get compiled and then the jit interpreter is going to run the code with webassembly we kind of bypass some of those steps because the digit interpreter can run webassembly right there so what Microsoft did was that they took the mono runtime compile that to.net or sorry to webassembly to.net.wassem and then that webassembly code is running our dlls and the framework dlls right there in the web browser so when I realized this I I cannot it's one it's running the same it's running the whole runtime inside the browser that that felt a little bit wrong to me but then I realized that if you just say it another way it's running the whole run time inside of the browser that is kind of cool but what we also can do is we can with Darkness six we got ahead of time compilation so basically we can remove the dlls and put everything and compile everything to webassembly now the downside is of course that the webassembly file is going to be a lot larger but it's going to load and execute things super super fast really really fast so back to the server This Is How They place a server worked webassembly the only changing the the waiver hosting things now everything lives inside of the browser the dotnet.wassm is running on razor components running Blazer creating the render tree we have still have the Dom but still have a little piece of JavaScript but instead of signalr we're getting JavaScript interrupts because as of now webassembly don't have access direct access to the Dom so that's what's happening so it's it's in how they're it's working just where it's running that's differs so what about Blazer hybrid well so let's have webassembled as a starting point so four.net malware or Blazer hybrid we now we can now run inside of iOS Android Mac OS windows and even Tyson it's running inside of dotnet Maui we have.net.net for iOS or net for Android running our racer components this is the same dlls that I'm we've been talking about till we've got Blazer we still have a render free we can combine native components together with with web or Dom elements so here's where things get really cool so with the same racer components the same razor component Library we can reach Blazer server a Blazer web assembly through the web using.net Maui we can reach iOS Android Mac OS Tyson and windows and using web View we can even use win forms or WPF so we can use all of these things together with our Blazer libraries it's kind of cool huh I see people nodding it's about what about this this is kind of the the promise right no more JavaScript I would say this is a kind of a little bit of a myth but it depends on where you're coming from so if you're coming from MVC and you're coming from race pages it might be a little bit more JavaScript than you were used to because especially in the beginning with the darkness 5 for example there were some things that we needed JavaScript to do for one example is changing the page title that they fixed at thank God but there are some things we still need JavaScript to access native resources native Bluetooth for example so it's not entirely true that we we never need to see JavaScript but the Blazer Community is quite large so chances are that someone has built it what we need already so we went into production seven days after Blazer was General availability and we felt that there were some things that were missing so we've built our own grid component which meant that we needed a little bit of JavaScript in there so I've written I I usually say that when I started started working with started working with blazer I have never written as much JavaScript as when I started working with replacer so this is definitely not true for me but it can be for many people now the really cool thing is that it's still possible to use JavaScript so if you have your like you have your favorite JavaScript framework you have or components or something like that you can still do that you can still do JavaScript interrupts now I would perhaps not recommend mixing languages and but it is possible because with dotnet 7 we got something called Web components and this works both ways so this means that I can bring in angular or react or actually it's it's a complete another technology but web components into JavaScript web components I should say into our Blazer project as well as create Blazer components that I can use in my JavaScript libraries so if we're kind of porting something we're moving towards hey we might be moving towards angular or react or we're moving towards Blazer we can use all these Technologies together again I'm not sure that I recommend it but it is possible I would probably use it in in like in a transition phase but I kind of like that it's possible so I did a video on Tick Tock and I said is uh Blazer production ready and basically said yes and I got comments so there was a guy that had some really great feedback so he said no it's not gonna be a thing it's it's I'm gonna lose I think he used 70 percent of of all the things in angular moving to Blazer and I'm like yeah is that is that really good thing um I have done very little with angular I've definitely done almost a little bit more in react but still I don't know that space so I was a little bit curious so what are the things that you're missing what are those 70 that just goes away so one of the things was angular material so I I try to look this up what is it how does it work do we have it and yes we do we have math Blazer and we have mud Blazer so both of those are I don't know if they're equivalent but it's it's something in the same lines angular Flex there's an open source project called flexor which works great for Blazer we have angular animation and we used to have something called Blazer animate but it's now part of Blazer eyes so we still have that perhaps not as good I don't know but it's still there unit testing was one of the things that I I was really we've had that from from the start Eagle Hansen here here made an awesome framework for testing your blazing components that doesn't spin up a a web browser and all of that you can really test it without it it's super easy and super good and if you are what if you didn't see Eagles uh session uh this Wednesday right and you should definitely check that out because it was really great rounding foreign we have that that's that's kind of a base thing thing apparently you need to add that to angler or something I don't know HTTP well they have that too directives uh we don't have that I'm not entirely sure uh what the benefits are perhaps you know but and the last one was pipes and as from what I understand is it's like formatting for formatting text and things like that we kind of have that in.net but not as not as easy perhaps but we do have that okay so one of the questions I get a lot is should we write our code in the racer file or in code behind so what are you doing eraser file code behind it's about 50 50. okay so when Blazer came out it was a lot of things the main examples was to write in the race of file and I sat off and I said you know what I'm I don't like this I'm gonna go code behind because that's what I'm used to separation separation of concerns and all of that and then I said to myself if Microsoft says we should use eraser files or they didn't really do that but they well in all their samples they they used racer you know what I'm gonna try it I'm gonna give I'm gonna give it a couple weeks I'm gonna try and the fact that I don't have to context switch or or switch files and and just work in the same file some people say yeah but but having all that code inside of it with their markup then you should probably move that into a service or something like that anyways because you want it to be testable and stuff like that but I would encourage you those of you who are running code behind try to run it in in racer file because what happens is that it's going to take the race of files it's going to convert that to c-sharp code it's going to take your code behind mash them together and then compile it so it's kind of not any separations anyways so it's just a mental separation in this case so it boosted our productivity a lot question I get a lot so hi Jimmy um we are just about to start with blazer what component Library should you use well file new um I'm all for like trying out you need to understand the components how they work how to work with components before you get into a component Library now having said that there are a lot of vendors that invest time and money into components we have progress Dev Express syncfusion RADS and Blazer eyes matte Blazer mud Blazer and the bottom one is the grid that I did so that's open source if you wanted to check that out it might be a a good example to show that to show how I mean a grid is fairly Advanced control so you can see how how you could build that from scratch if you want to now building a component library is not a good idea I mean there's a lot of awesome people doing this for a living in our case we had we had a couple of special things that we needed we needed sorting well that's kind of a given we needed a sign highlighting so we wanted positive numbers wanted we we wanted them to be blue and negative numbers wanted to be wanted to be read for example and instead of having that as a special column renderer or whatever it was super easy for us to just highlight sine equals true and we were done we also had a different um we wanted people to use it on the the um on the web on on a computer or I am a tablet and we wanted people to be able to use it on the phone so we built in functionality to remove columns so if the the size um if the size gets smaller we can remove some columns and put them beneath I haven't seen that in at least in a lot of different vendors I'm sure they're out there but that was one of the things we needed but back then when we started this there were none of those kinds of functionalities but you should you should make your own components I'm not saying that you should make your own grid but I'm saying that everything you build should be in a component now in the um web form days and stuff like that building component libraries or components was kind of tricky but with blazer that's the kind of things you need to think about because everything is components so think it think in a component-centric way can this code be reused am I writing the same code twice for some reason and the real benefit is to have the whole team do the same things so what we did was that we created our own button so I never understood why we should do it and own but I mean it's kind of simple to do that right but in this case this is this is using this is just a HTML button it's using the BTN and BTM primary this is from bootstrap so we are saving a customer is that a primary button or is it a a success button we were deleting a customer with doing something dangerous is it dangerous is is it not as dangerous to do that could be used to primary it anyway so instead of having like all these things that we need to remember and or the whole team needs to remember that we created our own component so we're basically saying that we're just happy we have an enum if it's a default button then it's going to use the BTN primary if it is a save button we're going to use the BTM primary again if it's cancel button it's a danger button because canceling stuff is dangerous and if it's a delete button same thing there so by doing this kind of abstraction we not only help ourselves because we know that we're saving something we don't need to remember if it's primary danger success whatever if you're changing from from bootstrap I'm gonna need to change this one when we upgraded um from bootstrap for something to five there were some changes that happened only one place to chase it was saved a lot of time so here comes my advice components everywhere build components build reusable components try to um build helper components like the one I just showed you that doesn't add any functionality but it adds an abstraction layer that makes it easier to understand and to follow my boss came to me and he said okay I know we just jumped on Blazer but is this something that Microsoft is going to abandon next week and I'm like I don't know I hope not but I mean they're investing real a lot of time into that and you saw the list of the component vendors and that's probably just half the list but I get that question a lot does companies use Blazer I would not be able to mention any companies that are using angular react because companies are not talking about that obviously the maintainers Google and Twitter and stuff like that but I would not be able to tell you if what technology they're using but I can't tell you this that big Swedish companies I'm not allowed to say what company are using License Day in internally you know using places server and we're talking about the Swedish company that you all have heard of that's the level of Swedish company we're talking about and I had a lot of friends working in a consultant consultancy business and they are using Blazer they have lots of customers using Blazer I did a workshop for a consultant's agency and then they have like 10 different customers that are using Blazer so yes people and companies are using Blazer they're not talking about it though so let's compare the different Technologies so I I've decided to compare Blazer server with blazer web assembly because these are the two web Technologies it's kind of comparing Blazer hybrid into this doesn't make sense to me so the first thing with blazer server is that it has a fast startup doesn't have anything to download it's just a small JavaScript and you're running it you can use the full server capabilities so that means that you can you can get to databases you can get to the file system or whatever you want to do the browser support at least was a little bit better with blazer server I'm not sure actually how how what it is with docket seven but it was a little bit a little bit more versions had support for that your code is safe it's running on the server you can't decompile it unless you have access to the server and this is a little bit controversial perhaps but I really like the fact that you can call the database directly you don't need an API or a web API I should say you should definitely do it in API thing but not a web API so the bad things is that you need a constant connection with signalr I saw a demo from Steve Sanderson on on Twitter I believe or YouTube it was on YouTube where it showed some of the things that are coming in.net 8 and some of these things are actually um they have solutions for some of these things coming up doesn't have an offline support because of the first rule you need a constant connection it does have a little bit of higher latency because it when you click a button it goes back to the server the server renders everything and push that back to the client we have never heard that Blazer is slow because of Blazer we have had server problems on slow databases and all of that but never for the reason that it's we're running Blazer server since everything is on the server we have usage States we have um the connections and all of that stuff and they run the tree and everything it does have a higher server low and it requires asb.net on the server I don't know if that's bad but it does so for webassembly you can definitely do a pwa which is kind of nice you can run it anywhere so you can run it on GitHub Pages you can run it on Azure web Azure static web apps you can run it from a file share which is kind of nice you don't need to do any round trips to the server we have ahead of time compilation which I mentioned in the beginning so we have we can speed things up it's insanely fast it does have a large footprint and we will get back to that in a bit as well you need an API you can can't do direct database access and again it's controversial you might like that you might not like that but your code is not safe it's dotnet dlls they can be decompiled quite easily but that's kind of the thing that all JavaScript developers had had for years so it's not a new thing but if you're coming from MVC and abrasive page of world you kind of need to think about where are my logic can I have it on the client is the secret in any way so let's talk a little bit more about the server so I mentioned that the server load goes up a little bit so when it comes to memory consumption what's happening is that it's saving all the state on the server for all the users that it's connected to the server when let's say the database goes down for for some kind of Reason what do the people do then what do the users do well let's start pressing F5 frantically ask me how I know and what happens then is that the the signal or connection is going to be disconnected it's going to reload the page you're going to hook up another connection and the old one is going to be there for by default of three minutes taking up space and then when they do that like come on come on it's like a million connections right there um so the advice here is to add a refresh button now since the in our case the SQL server was down it wouldn't help but don't let your users press F5 try to add a refresh button with oh I'm going to press that button it's going to refresh and everything is is awesome don't mix Blazer non-blazer Pages we did that in the beginning so what happened is that you can do the same logic you have a a Blazer page or a Blazer component which is routed through all through Blazer you move to an MBC page or a racer page it's going to disconnect that and you're going to reload the the site it's going to disconnect the the connection and when you move back it's going to connect again so try not to mix different Technologies even though it is possible but you need to think about that a little bit now the really cool thing with blazer was that we got a completely different kind of feedback because they said hey nothing is happening I pressed the button and things happening we're like yeah you save the same thing seven times that's what happened because we didn't think about because with MVC and racer Pages the whole page reloaded they understood that something happened when I pressed the button but with blazer when I pressed the button nothing happened because it didn't reload the whole page it did stuff but it didn't reload the whole page and so that was the first kind of realization that oh this is kind of cool this is an interactive website now the second thing that happened was that okay so I'm updating something in this completely different system that we're syncing into our database but this completely different system why do I have to up why do I need to update this page so our user kind of get used to everything happening with with signalr we we could push changes into the web browser and they were like we want this this is what why do we have to really why do we have to press the refresh button and that kind of like blew my mind because that change was we're talking about weeks until they kind of demanded that the UI should update directly which is kind of cool so the advice here is make sure you notify the user tell the user that something happened I I this post is saved or whatever it may be the development speed using Blazer compared to in our case MVC saved our project I would say we were doing a very huge um chains of the back office system and there were other companies that were doing the same change we were six developers I think and they had 10 more resources and we were done before them because we didn't context switch we stayed in Blazer we were productive in Blazer and in some cases it was even faster to actually move the functionality to Blazer rather than fix the problem in MVC which is kind of cool so one of the things that also hear is is Blazer server slow well we talked about that we touched on that subject and we never got that feedback if you have really bad connection that would probably be be a problem but if we have I mean the connection here the connection in Sweden it it works now I got um I was at the conference in Sweden I was talking to a couple guys that came up to me and said so we're thinking about doing places server police advices and they had two things that they needed they needed it had to work offline and it had to work with millions of users now these two things are the two things the top two things that Blazer server can't do or is really bad at at least can't do offline and millions of users is definitely gonna be a lots of load on the server so I explained well you should definitely go with webassembly in that case so Blazer service not for everyone so what about webassembly so let's talk about the specific things footprint or the loading time I am I went on on Facebook and I asked so um what kind of questions would you like to have answered and that was one of the top questions that the footprint all of these dlls that needs to get downloaded that's like one megabyte of of of webassembly stuff right so I thought you know what I want to know what other sites do well is this really a problem so Facebook has 16 megabytes of JavaScript compared to the the web assembly runtime which is around one megabyte 16 that's 16 times more right Pinterest has a little bit more than six megabytes YouTube four megabytes Twitter has a little bit more than three megabytes stack over for 1.5 Apple's home page a little bit more than one and Blazer comes out the the Blazer demo site I should say comes in at 1.2 back then I think it's even lower now so when we're talking about the footprint like oh it's one megabyte that is not really a problem what is a problem is a loading time because it takes a little bit of time to spin everything up again ahead of time compilation will help so what can we do well we can add a progress bar because as long as you're telling your customers that something is happening it's fine in the dotnet 7 template the new one they added it added a progress bar for us so that's kind of we got that one we can use server pre-render so we can use Blazer server rendering everything for us pushing that to the web browser and then when webassembly is finished loading it will just switch out we can use Mr sakamoto's pre-render which is taking our site when we are publishing it rendering everything and then adds it to the webassembly so it it's perfect for seos but it's not good for um for dynamic content but that's an option or we can do ahead of time compilation which is going to load a whole it's footprint is bigger the load time is smaller so depending on where where you are I guess so we are in the UK and I just have to show you one of my projects that I've been working on it's called Zed Xbox and there's a story behind that I when I was seven years old my parents got me my first computer at ZX Spectrum and one of the things that I I I thought that this was super cool so I started making a emulator for the Xbox that's where the Xbox comes from and this has kind of become my hello world so every new technology I encounter I have a hololens one I have um a Dartmouth micro framework one so every new technology I encounter I kind of can I implement it can I Implement my C C sharp Spectrum emulator in that new technology so I want to show you spoilers I could so here it is so if you want to try it out and no you can't see that Let's uh let's actually do it like this there we go awesome so I started off with a 48k and then the 128k and this is running a Blazer web assembly and it's running ahead of time compiled so let's let's just reload the page and see the time it takes boom again everything is already downloaded so the first download was what took a little bit of time but this is the experience when you go back to the site the second time boom pretty fast and this is not the the out of the box really really simple demo so let's uh let's kick it off let's see if we can do something before I load magic minor I want to I just want to say that so I I did a lot of Windows Phone development on Windows 8 development so I did a lot of games for a company here in the UK called um ultimate no Elite sorry Elite not ultimate ultimate is my favorite company though and I have yet to this day never beaten the first level on manic Miner has anyone done that no one oh one it's always one I cannot for the life of me beat the first level let's kick it off let's see here there we go and it does have sound I have muted it because it's kind of annoying see if I can unmute it can you hear it back let's let's mute that and uh it's obvious I can move around let's see if I can figure out the keys here oh there we go and I can move around and jump and stuff and die one day one day should beat this all right let's jump back there we go so do we have any questions yes so the question is uh what is the approach when doing server pre-render and then switch into webassembly it is super simple uh one one of the things that if you if you just do it basically what you need to do is you need to say that the first you need to change the index HTML to eraser page when you add the tag for for the um for the Blazer part of the site you need to say server pre-rendered or something like that so just doing that will will basically do what you need the problem is that what what is going to happen is that it's going to load the server side and when the web assembly is done it's going to do a request again and do load everything again but there is something called Preserve oh I should know this uh preserved state or something like that that will you can just add that to the racer page and add a little bit you need to rewrite the code just a little bit what happens is that it's going to take the state of the component it's going to render that in base64 on the page and when webassembly starts up it's going to take that state load that state and it's not going to load the same data twice so it's pretty straightforward but you need to you need to change the code just a little bit customers yes sorry once again every 30 seconds is that I would talk in Blazer server or Blazer web suddenly uh so the question is if we have lots of rows in a in a grid and they're grouped and we're going to update it uh in in a fairly fast pace it's doable well it's it's not less doable in in with any other technology when it comes to pushing from the server I would not recommend doing a lot of push-up data because it takes resources when it comes to webassembly we're probably talking about pulling the information more where you can Implement signalr and do that but um there are also built-in functionality which is called virtualize which is basically going to take that grid and only render those rows that are visible inside of of the screen and render like a div above underneath above and beneath above and beneath um so that you can so it looks correct but it's only renders part of it but absolutely it's it's possible it I I see no no problem with that with the technology in itself yes [Music] so the question is is there coming something that solves the problem with with blazer server basically when we push an update you will uh the connection is going to get killed off and well you're going to lose the state not that I know of um it's really a problem so there are two things happening so one of the things that is that the user is going to get kicked off and and you're going to create a new session or a new connection the other thing is that you're going to be down for I think I've timed it to seven seconds or something like that when we're we're publishing something in production but as far as I know you know still still gonna need the connection yes so the problem is that when you push an update to the application the application would certainly need to be reloaded anyway what you could do is you could look into Technologies like [Music] for example so that the existing apps that are active right now they keep running until they use an alcohol and then the next time they come in they will go to the new version of that so Eagle added for for the people at home you can use app slots to um to basically publish your new site and then make your users switch over to the new one any other question yes doing I think there are some tree shaking in in happening when you're when you're compiling to iot but I'm I'm not entirely uh yes yes thank you any other questions if you have any more questions please come up to me I have stickers and so just to summarize should we go all in Blazer well I'm going to give you the Microsoft answer it depends it depends on on what you're doing that your teams and stuff like that is it production ready yes should you invest time in it yes will it replace angular reactive View for some people yes so please and hit me up and talk to me if you want to and I'll be happy to answer any questions you may have thank you so much [Applause]
Info
Channel: NDC Conferences
Views: 17,519
Rating: undefined out of 5
Keywords: .NET, Web, Blazor, Jimmy Engström, C#, Developer, NDC, Conferences, 2023, Live, Fun, London
Id: bZdYpYQb958
Channel Id: undefined
Length: 56min 32sec (3392 seconds)
Published: Fri May 19 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.