Here’s what’s new in this release for ASP.NET Core:
Partial class support for Razor components
Pass parameters to top-level components
Support for shared queues in HttpSysServer
Breaking changes for SameSite cookies
Alongside this .NET Core 3.1 Preview 1 release, we’ve also released a Blazor WebAssembly update, which now requires .NET Core 3.1. To use Blazor WebAssembly you will need to install .NET Core 3.1 Preview 1 as well as the latest preview of Visual Studio.
See the release notes for additional details and known issues.
If you’re on Windows using Visual Studio, for the best experience we recommend installing the latest preview of Visual Studio 2019 16.4. Installing Visual Studio 2019 16.4 will also install .NET Core 3.1 Preview 1, so you don’t need to separately install it. For Blazor development with .NET Core 3.1, Visual Studio 2019 16.4 is required.
To install the latest Blazor WebAssembly template run the following command:
dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview1.19508.20
Upgrade an existing project
To upgrade an existing ASP.NET Core 3.0 project to 3.1 Preview 1:
Update any projects targeting netcoreapp3.0 to target netcoreapp3.1
Update all Microsoft.AspNetCore.* package references to 3.1.0-preview1.19506.1
That’s it! You should now be all set to use .NET Core 3.1 Preview 1!
Partial class support for Razor components
Razor components are now generated as partial classes. You can author the code for a Razor component using a code-behind file defined as a partial class instead of defining all the code for the component in a single file.
For example, instead of defining the default Counter component with an @code block, like this:
namespace BlazorApp1.Pages
{ public partial class Counter { int currentCount = 0; void IncrementCount() { currentCount++; } }
}
Pass parameters to top-level components
Blazor Server apps can now pass parameters to top-level components during the initial render. Previously you could only pass parameters to a top-level component with RenderMode.Static. With this release, both RenderMode.Server and RenderModel.ServerPrerendered are now supported. Any specified parameter values are serialized as JSON and included in the initial response.
For example, you could prerender a Counter component with a specific current count like this:
@(await Html.RenderComponentAsync<Counter>(RenderMode.ServerPrerendered, new { CurrentCount = 123 }))
Support for shared queues in HttpSysServer
In addition to the existing behavior where HttpSysServer created anonymous request queues, we’ve added to ability to create or attach to an existing named HTTP.sys request queue. This should enable scenarios where the HTTP.Sys controller process that owns the queue is independent to the listener process making it possible to preserve existing connections and enqueued requests between across listener process restarts.
This release updates the behavior of SameSite cookies in ASP.NET Core to conform to the latest standards being enforced by browsers. For details on these changes and their impact on existing apps see https://github.com/aspnet/Announcements/issues/390.
Give feedback
We hope you enjoy the new features in this preview release of ASP.NET Core! Please let us know what you think by filing issues on GitHub.
Nowadays, business networks often use a VPN (virtual private network) for secure communications with workers. However, the protocols used can sometimes make performance slow. If you can reach reach a host on the remote network with SSH, you could set up port forwarding. But this can be painful, especially if you need to work with many hosts on that network. Enter sshuttle — which lets you set up a quick and dirty VPN with just SSH access. Read on for more information on how to use it.
The sshuttle application was designed for exactly the kind of scenario described above. The only requirement on the remote side is that the host must have Python available. This is because sshuttle constructs and runs some Python source code to help transmit data.
Installing sshuttle
The sshuttle application is packaged in the official repositories, so it’s easy to install. Open a terminal and use the following command with sudo:
$ sudo dnf install sshuttle
Once installed, you may find the manual page interesting:
$ man sshuttle
Setting up the VPN
The simplest case is just to forward all traffic to the remote network. This isn’t necessarily a crazy idea, especially if you’re not on a trusted local network like your own home. Use the -r switch with the SSH username and the remote host name:
$ sshuttle -r username@remotehost 0.0.0.0/0
However, you may want to restrict the VPN to specific subnets rather than all network traffic. (A complete discussion of subnets is outside the scope of this article, but you can read more here on Wikipedia.) Let’s say your office internally uses the reserved Class A subnet 10.0.0.0 and the reserved Class B subnet 172.16.0.0. The command above becomes:
This works great for working with hosts on the remote network by IP address. But what if your office is a large network with lots of hosts? Names are probably much more convenient — maybe even required. Never fear, sshuttle can also forward DNS queries to the office with the –dns switch:
To run sshuttle like a daemon, add the -D switch. This also will send log information to the systemd journal via its syslog compatibility.
Depending on the capabilities of your system and the remote system, you can use sshuttle for an IPv6 based VPN. You can also set up configuration files and integrate it with your system startup if desired. If you want to read even more about sshuttle and how it works, check out the official documentation. For a look at the code, head over to the GitHub page.
Posted by: xSicKxBot - 10-23-2019, 09:05 AM - Forum: Lounge
- No Replies
Free Call Of Duty: Modern Warfare PS4 Theme Available Now
We're now just days away from the release of Call of Duty: Modern Warfare, the highly anticipated first-person shooter and soft reboot of the popular Modern Warfare series. If you've already secured your pre-order, pre-loaded the game on PS4, and are counting down the hours until the game officially goes live at 6 PM PT / 9 PM ET on October 24, you'll probably be interested in this nice freebie. A brand-new Call of Duty: Modern Warfare dynamic theme is available to download from the PlayStation Store starting today, and it's completely free.
The "Going Dark" theme is, as the name implies, quite dark, with a mostly black background and quiet, suspenseful music. The icons on the screen look a bit translucent, and the background features the series' signature blue, radar-like waves. You can check it out in the video below.
Two other new PS4 themes are free right now, so you might as well snag all three at the same time. The first is a custom Mortal Kombat 11 theme designed by community artist BossLogic and features two different art designs inspired by the acclaimed fighting game. The second is a gorgeous theme inspired by Destiny Connect: Tick-Tock Travelers, an RPG about a girl named Sherry who must save her town from being frozen in time. This particular theme is available free for a limited time--you have until November 5 to claim it for yourself. Destiny Connect: Tick-Tock Travelers is now available to play, too; it released on PS4 and Nintendo Switch October 22.
There are also quite a few sales going on in the PlayStation Store right now, including its annual Halloween sale on some of the best and spookiest horror games on PS4 and an Ubisoft publisher sale with deals on Rainbow Six Siege, Assassin's Creed Odyssey, and more.
rideOS, a technology platform designed to accelerate the safe, global rollout of next-generation transportation fleets, today launched its new Ridehail Platform — including a Ridehail API and open-source mobile apps. The Ridehail API offers an easy way for automotive original equipment manufacturers (OEMs), autonomous vehicle (AV) companies, and transportation network companies (TNCs) to create and manage their own ridehailing network using rideOS’ underlying technology. (Yahoo!)
Découvrez l'intégralité du pack dans les photos ci-dessous et collez basket converse enfant Sneaker News au cas où un magasin américain en aurait en stock. L'Ace Hotel a ouvert ses portes en 1999 à Seattle, les bras grands ouverts, pour les musiciens, les créatifs et autres aujourd'hui. Avec trois sites aux États-Unis, Ace est considéré comme l un des leaders des établissements américains progressistes voués à la culture et à la protection des arts. Converse a reconnu la mission et le statut croissant de l Ace Hotel et a créé une coloration spéciale de La Converse All-Star Bosey de Chuck Taylor: la tige est en toile cirée olive tranchante avec un capuchon en gomme caoutchoutée avec des rainures Bosey pour un appel d inspiration militaire.
La Air Jordan 1, bien sûr, est la première chaussure de Michael avec Nike, tandis que la Air Jordan 11 est le plus populaire des modèles Air Jordan de tous les temps. Restez à l'affût des nouveautés. Il existe une récompense, des détails incorrects et des questions laissées sans réponse. Jusqu à présent, les conversations entre Converse Fast Break basket converse homme Low et Air Jordan 2 célébrant les débuts de la carrière de Michael Jordan, mais au moins, personne ne peut prétendre qu elles ont l air bien ensemble. Air Jordan 2 a tort: Michael Jordan portait cette version spéciale en PE de la chaussure avec une languette de talon Carolina Blue pour un match d'anciens élèves le 6 basket style converse septembre 1986, et non pas un deuxième match d'anciens élèves contre UCLA à la date indiquée.
Des images de chaussures Jordan Converse circulent sur Internet depuis un certain temps et on ne sait toujours pas si elles seront publiées, mais maintenant, nous avons quelques images de ce qui serait, selon la rumeur, la troisième chaussure de l édition originale de Defining Moments qui n a abouti qu à inclure La troisième chaussure de ce groupe était censée être cette chaussure de basket-ball Converse semblable à celle que portait MJ quand il a réussi "le coup" contre Georgetown lors de la finale de la NCAA en 1982, alors qu'il n'était qu'un étudiant de première année. Celles-ci ont fini par être abandonnées par chaussure converse enfant le DMP et maintenant, le seul endroit où vous pourrez peut-être trouver une paire d'échantillons est eBay.
Aloha Rag est l'auteur de deux collaborations différentes entre Jack Purcell et Converse, et nous voyons aujourd'hui la troisième offre à la fois: le modèle AR SR SR X X Converse que nous vous avons présenté en février est rejoint par un nouveau Auckland Racer, tous deux d'excellente qualité. Le cuir professionnel rappelle vaguement ce à quoi on peut s attendre d un mashup Supreme SB Nike Dunk High Blazer de Nike x (un timing intéressant après l édition Stussy), et le Auckland Racer remporte le concours de nouveauté avec un maquillage rouge rustique Qui est la construction de chèvre africaine est le seul que nous ayons vu de ce type.
Cliquez dessus pour voir plus de cette toile bleue tonale et de dessus en cuir craquelé et cherchez-les maintenant directement à Aloha Rag, et chez Converse First String le 15 juillet. La boutique hawaïenne Aloha Rag se réunit avec Converse pour célébrer son 20e anniversaire avec style Commémoration de cette année charnière avec un Jack Purcell Zipper spécial Nous avons vu beaucoup de grands Jack Purcell récemment et celui-ci ne fait pas exception, avec une tige en tissu qui ressemble beaucoup au récent Converse Jack Purcell LTT Ox Chambray La fermeture à glissière sous les lacets, associée à un bouton en métal à l'arrière, leur confère une sensation rebelle qui contraste avec le look raffiné de la basket.
Il convient également de noter les dentelles rouges, blanches et bleues, qui reprennent le thème américain récemment chaussure converse homme présenté par Converse. Cliquez sur le saut pour visionner la prévisualisation vidéo de Aloha Rag x Converse, Jack Purcell Zipper, salut.Avec Yoon de AMBUSH Après le lancement de sa nouvelle capsule chez Nike, la designer aux multiples facettes se prépare pour un autre travail collaboratif centré sur l'emblématique Chuck Taylor, accompagné d'une série de vêtements - qui s'aligne fortement sur le style hors du commun que la chaussure présente. - l arrangement tout blanc est tout à fait nouveau pour l humble Chuck Taylor, soulève ses rousseurs et élargit son capuchon à des proportions à la fois agréables et comiques.
ÿþThis is countered by a classic EVA midsole adidas alphabounce men with dynamic tooling and a two-tone palette, finished with a durable tricolor rubber outsole. For its colorway, the latest outing of the Yung 1 sneaker assumes a classic Collegiate Navy/Red/White colorway inspired by a 90s running model from the adidas archive. Trefoil branding on the tongue adds the finishing touch, culminating in a bold retro-inspired runner that places classic millennial design language into a clean new context. The adidas Yung-1 is releasing in a bright hi-res orange and it's a style that updates the classic Falcon Dorf silhouette from 1997.
The adidas ZX 10000C is the long awaited answer to many collectors question what happened after ZX 9000?' The ZX 10000 C retains the Torsion system that remains a proud part of adidas' performance capabilities to this day, in a shoe that at first glance reads like a never before seen model from the adidas alphabounce review original ZX archives that has only just been unearthed. Its aqua, orange and neutral coloring inspires nostalgia for a very specific era of performance footwear, utilized across a diverse blend of natural and technical fabrications that include mesh underlays, webbed Three Stripes, premium suede overlays and reinforced TPU on the ghilly adidas alphabounce shoes and heel.
Initially slotted for a March arrival, the adidas ZX 4000 4D Black Onix has now received an updated release date that is slated for next week. Covered in a theme of Core Black/Clear Onix with pops of red/green for the tongues, the style is a modernized design of the '90s adidas ZX 4000 runner with a mixed material upper consisting of mesh and suede overlays. The highlight consist of the model's new 4D sole colored in mint green to top off the style.This adidas ZX 4000 4D takes inspiration from the Kelvin temperature scale to highlight the contrast between modern adidas alphabounce women's mechanical production and traditional craftsmanship in footwear manufacturing.
The adidas ZX 4000 4D Carbon is the next colorway of the new silhouette, and it's dropping this spring. The style is a modernized iteration of the '90s adidas ZX 4000 runner with a mixed material upper consisting of mesh and suede overlays. A combination of black, carbon, neon yellow, and teal accents are used throughout, while the highlight is the model's new 4D sole colored in mint green to complete the style.The adidas ZX 4000 4D made its debut in a White Grey Linen Green colorway this week, and it's coming in a new Carbon theme next.
Composed of suede, mesh, and leather, the runner trades between a variety of tones, including brown, black, grey, and red. Meanwhile, a white midsole and black outsole sit below, completing the sneaker's look.Adidas does it again bringing us another spin on the Adidas Originals ZX 8000 Boost . The "Semi Solar Red" offers vibrant hues of red that are sure to capture the eye of those who over looked the "Core Black" and Hawaiian inspired flavors. The ZX Boost being one of Adidas coziest models, is glazed in the "Semi Solar Red" along its' two toned upper paired with a adidas baby shoes black toe box.
Shop adidas ZX 930 x EQT Never Made Triple WhiteThe adidas Originals ZX Flux has truly had a breakout year, as each new rendition of the silhouette has been pretty successful. The latest to that tries to test the waters is the adidas ZX Flux Weave "Gradient". This rendition of the adidas ZX FLux Weave takes on a Grayscale aesthetic that lends itself to a gradient design throughout the sneaker's build.Darker shades of Grey are seen working the toe of the Flux, but as you near the heel of the shoe, the grey hue transitions into lighter shades.
ÿþIl est donc essentiel d'investir de basket original l'argent dans des produits de bonne qualité, il est inutile d'acheter quelque chose de médiocre. Par conséquent, lors de la sélection d'un portail en ligne, veillez à ce que Bonne réputation du portail Comme il existe de nombreux portails associés à la vente de gants de sport sur mesure, vous devez absolument aller au fond des choses et recueillir des informations sur la réputation du site. , les clients précédents laisseront des commentaires positifs sur le site.
Le football étant l envergure de son sport, il a reçu une auguste présence de superstars. Et quoi de mieux que de les voir tous se battre ensemble pour remporter le plus grand trophée d eux tous dans la plus grande étape? La compétition est intense et la fierté nationale est en jeu avec la Coupe du monde. L équipe qui remporte la compétition réussit à basket original femme se faire graver de noms dans les livres d histoire et à obtenir tous les honneurs pour ses couleurs nationales. La coupe du monde bat actuellement son plein L'Inde, pour la première fois dans l'histoire du pays, devrait connaître un grand succès.
Accueillir un événement du statut de la coupe basket sneakers femme du monde fera sûrement partie du moolah car il attirera des foules et assurera à son tour la vente de billets. En plus de cela, la visibilité de la marque que le pays obtiendra sur la scène mondiale du football sera énorme. Si les jeunes ont plus de chances et sont nourris par les meilleurs spécialistes du secteur, cette équipe Allez un long chemin et je représente un jour le pays lors de la phase finale de la coupe du monde senior.
Un exercice qui aiderait à tirer sur ce lancer franc possible tout en étant enragé est le basquette nike défi 17, 13, 9, 6 sprint / lancer franc. Son fonctionnement consiste à parcourir la largeur du court 17 fois dans le temps que vous avez défini. Par exemple, pour les élèves du secondaire, on dit que cela pourrait être fait en 70 secondes. Une fois la course terminée, vous feriez deux lancers francs. Après avoir pris environ une minute de repos, vous continuez la même routine en courant. 13 fois, puis 9, puis 6 et deux lancers francs après chaque passage, au fur et à mesure que le nombre de courses diminue, le temps que vous avez programmé pour le faire l'est aussi.
C'est un exercice très simple et basique, mais il augmentera certainement votre endurance.Le dribble complet sur le layup / jump shot vous épuisera, mais il vous aidera certainement pendant le temps de jeu. Vous commencez simplement à une extrémité du terrain et Le le le le le Pour changer de rythme, couper la porte de derrière et marquer des points en étant fatigué nécessiterait de couper la ligne de base dans le panier, le rattrapage, l exercice de tir en superposition / saut.
Dans ce cas, on ne peut que sauter au fond botte alpinestar de son cSur.Il est impossible de faire des sauts périlleux ou des retournements, car ils entraînent des atterrissages inégaux en raison de blessures, l'objectif étant de maintenir les deux pieds de votre enfant sur le trampoline à chaque atterrissage. Jouer au centre du trampoline Rester au centre du trampoline est la solution la plus sûre. Cette partie du trampoline est la plus stable de toutes. En emmenant votre enfant au parc, il voudra probablement voir à quelle hauteur il ou Elle peut sauter, vous pouvez dire à l'enfant que le mieux est de le faire, au beau milieu du trampoline.
RobocraftX by FreeJam is a game about creating games that is currently in early access on Steam. In the upcoming release it is going to be rebranded to Gamecraft at which point it will become commercial software. However if you add RobocraftX to your library before October 24th, it will remain yours forever for free.
Details from the Steam announcement:
On October 24th 2019 Our plan is to shift the game over to $5 Premium (i.e. pay up front) along with the brand name change.
ANYONE WHO ALREADY HAS A COPY OF THE GAME WILL KEEP THEIR COPY, FOR FREE, FOREVER.
ANYONE WHO HAS THE GAME IN THEIR STEAM LIBRARY BETWEEN NOW AND THE 24th WILL ALSO KEEP THEIR COPY, FOR FREE, FOREVER. SO – TELL YOUR FRIENDS OR ANYONE YOU THINK MAY BE INTERESTED TO OWN THE GAME IN FUTURE, THAT RIGHT NOW IS THE LOWEST PRICE THE GAME WILL EVER BE (i.e. FREE!) AND TO GET IT NOW.
The Gamecraft Team
The upcoming release will also contain several new features, including the ability to share your creations, a move to Unity’s DOTS physics engine and additional logic controllers and bricks to play with.
In the meanwhile you can check out some of the new features in the preview release on Steam. You need to follow the following instructions (more details here or shown in the video below):
Open the Library tab on Steam
Right-Click on RobocraftX
Click on “Properties”
Click on the “Betas” tab
Enter the code “FreedomIsKey” and click on the “Check Code” button
Click on the dropdown and select the “Preview” branch
Give this a minute to download
Make sure the game appears as “RobocraftX [preview]” in the Library
Click Play and enjoy!
You can learn more about Robocraft/Gamecraft in the video below. Another very similar experience is GameBuilder that we covered in this video earlier in the year.
League of Legends celebrates ten years by announcing all of the things
By Joe Robinson16 Oct 2019
Fun fact – before taking over stewardship of Pocket Tactics et al, I did a brief stint in PR (I was a deputy editor at another website before that so this was a bit of an experiment), and that company had Riot Games as a client. I helped out at eSports events (which are fascinating, by the way) and then mainly did a bunch of grunt-work since I was a junior executive.
I’d never really tried to fully appreciate MOBAs before that job, but working for a company like that meant I had to give it a serious shot. It was ok – I definitely appreciated the team-play. I play a lot of Rainbow Six Siege in my personal-time these days so I appreciate it even more in hindsight.
Riot Games has never really been a known entity in the mobile world, at least in the West. There’s that League of Legends mobile variant out in China via Tencent, but so far the MOBA studio have stuck to what they know, which is PC. Now, as they celebrate the 10th Anniversary of League of Legends, that’s all about to change.
Riot made a range of announcements last night about their plans for LoL and other projects, and we’re excited to report that a couple are coming our way. Let’s take it from the top:
Teamfight Tactics Mobile
If you’ve been following the Auto Chess craze, you might have heard of Teamfight Tactics. It was basically Riot’s own take on the format and is the third big ‘player’ in the Auto Chess/Underlords/TFF trifecta. Unlike the other two, it wasn’t on mobile and existed within the main League client as an alternative game-mode.
It’s due to release on mobile in Q1 2020. Pre-registration on Google Play is open from today.
In addition to that, a new set of champions is going to be released to the PC version themed around the elements, called Rise of the Elements.
Legends of Runeterra Card Game
They say the best strategy is to wait until all your opponents have weakened themselves by fighting each other, and then pounce when no-one can put up any kind of resistance. At least, I hope they say that, because it’s the only reason I can think of as to why Riot would announce their own free-to-play strategy card game this late in the day. I would have thought that genre had played itself out.
Still, while Hearthstone remains the champion, the competitive CCG scene has been ripe for a new leader for a while now and, well, Valve failed hilariously with their own attempt. Riot have plenty of lessons to learn from at least. The press blurb for Legends of Runeterra is a little vague, but this seemed to be the most important part:
LoR’s gameplay is built around dynamic, alternating combat that demands players use their skill, creativity, and cleverness to succeed. LoR offers players multiple options to acquire cards, including both robust free-to-play options and the ability to directly purchase any card with either earned or paid currency.
Not content with their experiment with Tencent, Riot has now announced a bespoke mobile and console version of League of Legends known as Wild Rift. It’s still 5v5, and it’s still a MOBA, but it’s main innovation is a twin-stick control scheme, and matches generally designed to last no-more than 20 minutes.
And that’s it as far as known mobile projects go. Riot seem to be working on plenty of other new things as well, from an Overwatch-style competitive shooter, to a fighting game, even some kind of eSports team management game? But none of those have even been hinted at coming to mobile, so we won’t spend too much time on them here.
So, what do you think? Are you excited for any of the above? Let us know in the comments!
Blazor Server in .NET Core 3.0 scenarios and performance
Daniel
October 10th, 2019
Since the release of Blazor Server with .NET Core 3.0 last month lots of folks have shared their excitement with us about being able to build client-side web UI with just .NET and C#. At the same time, we’ve also heard lots of questions about what Blazor Server is, how it relates to Blazor WebAssembly, and what scenarios Blazor Server is best suited for. Should you choose Blazor Server for your client-side web UI needs, or wait for Blazor WebAssembly? This post seeks to answer these questions, and to provide insights into how Blazor Server performs at scale and how we envision Blazor evolving in the future.
What is Blazor Server?
Blazor Server apps host Blazor components on the server and handle UI interactions over a real-time SignalR connection. As the user interacts with the app, the UI events are sent to the server over the connection to be handled by the various components that make up the app. When a component handles a UI event, it’s rendered based on its updated state. Blazor compares the newly rendered output with what was rendered previously and send the changes back to the browser and applies them to the DOM.
Since Blazor Server apps run on .NET Core on the server, they enjoy all the benefits of running on .NET Core including great runtime performance and tooling. Blazor Server apps can leverage the full ecosystem of .NET Standard libraries without any browser imposed limitations.
When should I use Blazor Server?
Blazor Server enables you to add rich interactive UI to your .NET apps today without having to write JavaScript. If you need the interactivity of a single-page app in your .NET app, then Blazor Server is a great solution.
Blazor Server can be used to write completely new apps or to complement existing MVC and Razor Pages apps. There’s no need to rewrite existing app logic. Blazor is designed to work together with MVC and Razor Pages, not replace them. You can continue to use MVC and Razor Pages for your server-rendering needs while using Blazor for client-side UI interactions.
Blazor Server works best for scenarios where you have a reliable low-latency network connection, which is normally achieved when the client and server are geographically on the same continent. Apps that require extremely high fidelity instant updates on every tiny mouse twitch, like real-time games or drawing apps, are not a good fit for Blazor Server. Because Blazor Server apps require an active network connection, offline scenarios are not supported.
Blazor Server is also useful when you want to offload work from the client to the server. Blazor Server apps require only a small download to establish the connection with the server and to process UI interactions. All the hard work of running the app logic and rendering the UI is then done on the server. This means Blazor Server apps load fast even as the app functionality grows. Because the client side of a Blazor Server app is so thin, it’s a great solution for apps that need to run on low-powered devices.
Using Blazor Server at scale
Blazor Server can scale from small internal line of business apps to large internet scale apps. While .NET Core 3.0 was still in preview we tested Blazor Server to see what its baseline scale characteristics look like. We put a Blazor Server app under load with active clients and monitored the latency of the user interactions. In our tests, a single Standard_D1_v2 instance on Azure (1 vCPU, 3.5 GB memory) could handle over 5,000 concurrent users without any degradation in latency. A Standard_D3_V2 instance (4 vCPU, 14GB memory) handled well over 20,000 concurrent clients. The main bottleneck for handling further load was available memory. Will you see this level of scale in your own app? That will depend in large part on how much additional memory your app requires per user. But for many apps, we believe this level of scale out is quite reasonable. We also plan to post additional updates on improvements in Blazor Server scalability in the weeks ahead. So stay tuned!
What is Blazor WebAssembly?
Blazor is a UI framework that can run in different environments. When you build UI components using Blazor, you get the flexibility to choose how and where they are hosted and run. As well as running your UI components on the server with Blazor Server, you can run those same components on the client with Blazor WebAssembly. This flexibility means you can adapt to your users’ needs and avoid the risk of being tied to a specific app hosting model.
Blazor WebAssembly apps host components in the browser using a WebAssembly-based .NET runtime. The components handle UI events and execute their rendering logic directly in the browser. Blazor WebAssembly apps use only open web standards to run .NET code client-side, without the need for any browser plugins or code transpilation. Just like with Blazor Server apps, the Blazor framework handles comparing the newly rendered output with what was rendered previous and updates the DOM accordingly, but with Blazor WebAssembly the UI rendering is handled client-side.
When should I use Blazor WebAssembly?
Blazor WebAssembly is still in preview and isn’t yet ready for production use yet. If you’re looking for a production ready solution, then Blazor Server is what we’d recommend.
Once Blazor WebAssembly ships (May 2020), it will enable running Razor components and .NET code in the browser on the user’s device. Blazor WebAssembly apps help offload work from the server to the client. A Blazor WebAssembly app can leverage the client device’s compute, memory, and storage resources, as well as other resources made available through standard browser APIs.
Blazor WebAssembly apps don’t require the use of .NET on the server and can be used to build static sites. A Blazor WebAssembly app is just a bunch of static files that can be hosted using any static site hosting solution, like GitHub pages or Azure Static Website Hosting. When combined with a service worker, a Blazor WebAssembly app can function completely offline.
When combined with .NET on the server, Blazor WebAssembly enables full stack web development. You can share code, leverage the .NET ecosystem, and reuse your existing .NET skills and infrastructure.
Including a .NET runtime with your web app does increase the app size, which will impact load time. While there are a variety of techniques to mitigate this (prerendering on the server, HTTP caching, IL linking, etc.), Blazor WebAssembly may not be the best choice for apps that are very sensitive to download size and load time.
Blazor WebAssembly apps also require a browser that supports WebAssembly. WebAssembly is supported by all modern browsers, including mobile and desktop browsers. However, if you need to support older browsers without WebAssembly support then Blazor WebAssembly isn’t for you.
Blazor WebAssembly is optimized for UI rendering scenarios, but isn’t currently great for running CPU intensive workloads. Blazor WebAssembly apps today use a .NET IL interpreter to execute your .NET code, which doesn’t have the same performance as a native .NET runtime with JIT compilation. We’re working to better address this scenario in the future by adding support for compiling your .NET code directly to WebAssembly instead of using an interpreter.
You can change your mind later
Regardless of whether you choose Blazor Server or Blazor WebAssembly, you can always change your mind later. All Blazor apps use a common component model, Razor components. The same components can be hosted in a Blazor Server app or a Blazor WebAssembly app. So if you start with one Blazor hosting model and then later decide you want to switch to a different one, doing so is very straight forward.
What’s next for Blazor?
After shipping Blazor WebAssembly, we plan to expand Blazor to support not just web apps, but also Progressive Web Apps (PWAs), hybrid apps, and even fully native apps.
Blazor PWAs: PWAs are web apps that leverage the latest web standards to provide a more native-like experience. PWAs can support offline scenarios, push notifications, and OS integrations, like support for pinning the app to your home screen or the Windows Start menu.
Blazor Hybrid: Hybrid apps are native apps that use web technologies for the UI. Examples include Electron apps and mobile apps that render to a web view. Blazor Hybrid apps don’t run on WebAssembly, but instead use a native .NET runtime like .NET Core or Xamarin. You can find an experimental sample for using Blazor with Electron on GitHub.
Blazor Native: Blazor apps today render HTML, but the renderer can be replaced to render native controls instead. A Blazor Native app runs natively on the devices and uses a common UI abstraction to render native controls for that device. This is very similar to how frameworks like Xamarin Forms or React Native work today.
These three efforts are all currently experimental. We expect to have official previews of support for Blazor PWAs and Blazor Hybrid apps using Electron in the .NET 5 time frame (Nov 2020). There isn’t a road map for Blazor Native support yet, but it’s an area we are actively investigating.
Summary
With .NET Core 3.0, you can build rich interactive client-side UI today with Blazor Server. Blazor Server is a great way to add client-side functionality to your existing and new web apps using your existing .NET skills and assets. Blazor Server is built to scale for all your web app needs. Blazor WebAssembly is still in preview, but is expected to ship in May of next year. In the future we expect to continue to evolve Blazor to support PWAs, hybrid apps, and native apps. For now, we hope you’ll give Blazor Server a try by installing .NET Core 3.0!