Blazor Server uses SignalR to communicate between client (browser) and server. SignalR is an open-source library for transporting data between client and server. SignalR automatically selects the best transport protocol based on client and service capabilities. It uses WebSockets transport protocol, which is built on HTML5. If WebSockets is not enabled, it will use the best available protocol.
In Blazor projects, we develop components for common code that include UI markup and C#. Razor syntax can mix C# and markup (HTML) codes. Blazor components can have another one or more Blazor components. User actions like clicking a button can update these components. When we run the application, Blazor components render into a render tree, a binary representation of DOM that contains objects, states, properties, and any values if we have them. This render tree will track any changes compared to the previous render tree. If we run the application for the first time, it will keep everything as we don’t have any prior render tree. These changes will send over SignalR using a binary format to update the DOM. SignalR is nothing but a javascript file; JavaScript receives the changes from server and updates the browser accordingly. Blazor Server application sends only changes to the DOM (browser), not the entire page.
Advantages:
Disadvantages: