Read through some of the most compelling questions from our webinar on The State of .NET after the release of .NET 5.
After the official release of .NET 5 at .NET Conf 2020, everyone has questions about what this will mean for their various experiences within the .NET world. Progress hosted a webinar to address what .NET 5 means for developers, The State of .NET, with two of our own developer advocates (who both also happen to be Microsoft MVPs).
You can catch the webinar here:
During that webinar, the chat lines were open and being fielded by other Telerik engineers and product owners. This blog post is a compilation of some of the Q&As we think you’ll find most relevant.
Q: Any issues in upgrading from .NET Core 3.1 to .NET 5.0?
A: There generally shouldn’t be any. MS has prepared various guides for migrating too.
Q: What is LTS?
A: LTS means long-term support—it is a product lifecycle management policy in which a stable release is maintained for a longer period of time than the standard edition. Microsoft is committed to supporting LTS frameworks for three years after the initial release. Microsoft has announced that even-numbered versions will have LTS; odd versions will not. So, .NET 6, scheduled for release next year, will be a long-term supported version.
If a release (like .NET 5) does not have long-term support, it does not mean that the framework will not be supported. It means that support will end three months after the next even-numbered release (so .NET 5 support is projected to end in February 2022).
Additionally, LTS releases (even-numbered versions) will receive critical and compatibility fixes throughout their lifecycle; current releases (odd-numbered releases) will receive those same fixes and will also be updated with compatible innovations and features.
Updates are cumulative, with each update built upon all of the updates that preceded it. A device needs to install the latest update to remain supported. Updates may include new features, fixes (security and/or non-security), or a combination of both. Not all features in an update will work on all devices.
More information on the different .NET versions and their support is available here.
Q: Should companies look to upgrade to .NET 5 with it being a current release or should they wait for .NET 6 which will be LTS?
A: That’s a great question with no single correct answer. If you need to use the new features (especially things like Blazor WebAssembly), go for .NET 5—especially if you have some time until you have to go live. If you are already live and need stability and safety, you may want to stay on 3.1 until .NET 6 drops next year, as that will be the next LTS. Ultimately, this is entirely up to you.
Q: For desktop, what are the deployment differences between .NET Framework and .NET 5?
A: .NET 5 also shipped ClickOnce, which put it on par in terms of deployment capabilities with the .NET Framework. In addition, .NET 5 has the concept of Single File Application which allows you to ship the needed .NET version bits with your app. More info here.
Q: We use .NET for our ERP system. Will .NET 5 provide any benefits if you are not cross-platform?
A: Microsoft has generally improved the performance of the framework in .NET 5 so you should see benefits too.
Q: Is Blazor here to stay, or is it just another ActiveX or Silverlight?
A: It’s here to stay. It is based on open and modern web standards, not on proprietary plugins and applets.
Q: Can you use both Blazor WebAssembly and Blazor Server depending on the client that connects to the application to support offline users?
A: Perhaps through some magic similar to the server pre-rendering they added for Wasm you could be able to choose what to render out through some Razor markup in the index page. I haven’t tried that, though.
Q: Would Blazor then be good for unconnected mobile apps, saving data (including binaries such as photos) locally and then synchronizing with web services / server once connected?
A: Yes, you can do PWAs to provide offline capabilities over WebAssembly. (More here.)
Q: If I don’t need offline support is Blazor Server the way to go?
A: If your users have a very low latency to the server (like in an intranet)—yes. If the latency is high—you should still consider WebAssembly.
Q: How well does Blazor work with files client side? Such as client-side logic on large CSV files (to filter before sending to the server)?
A: It will still be a tad slower than server-side Blazor, because WebAssembly is still slower. When multithreading and AoT come in, that performance will improve dramatically. For the time being, it would be up to you to choose whether the trade-off of the Wasm code being a tad slower is worth alleviating the server.
Q: Do the protos have to be set on the client and on the server? Or do you have the possibility to put them in a shared project?
A: I’ve had them in a shared project so it should be possible to share. If not in a different way, at least as a build action to copy the files. This may be an interesting start.
Q: Is Blazor suitable for building public websites or only good for internal application pages? Are there any SEO implications?
A: Now that there is server pre-rendering for WebAssembly it will be more suitable and will be able to handle SEO better too.
Q: How is the rendering for multiple browsers like IE, Edge, Chrome, etc.?
A: Blazor does not support IE at the framework level. Other modern browsers like Chrome, Safari, Firefox, Edge are OK.
Q: How is browser support coming along for Blazor?
A: Modern browsers—Chrome, Firefox, Safari, Edge, but no IE—that comes from the framework now.
Q: A lot of my web development staff still has struggles with UI output inconsistencies between different browsers. Does Blazor, or any of this new .NET 5 technology, alleviate this?
A: The Telerik UI for Blazor suite works the same across all browsers it supports and outputs the same HTML and styling.
Q: Will Blazor have the ability to create PWAs (progressive web apps) to run on mobile in the future?
A: It already can. You can check out our Stocks Portfolio PWA for one way to implement PWA functionality in a Blazor Wasm app. Additional information on the matter is available in this blog post.
Q: Can you explain lazy load assemblies?
If assembly X is required, X is loaded; whereas YZ assemblies may not be required, so are not transmitted?
A: You choose on which page to load the assemblies that are marked as lazy-loaded, so when that page is requested, only then are those assemblies requested from the server.
Q: Okay, but Blazor is still loading the entire image for that page (i.e. the underlying Wasm requirement has not changed vis-a-vis Blazor).
A: Wasm and the framework runtime are still required. But you can shave off a few MB of non-essential assemblies.
Q: Right… help me better comprehend the lazy loading. As I postulated earlier, XYZ assemblies are involved, but only X has the control I need. So only X is transferred?
A: I recommend you start from the MSDN docs about this. It is up to you to choose which assemblies to load and when.
A: Both yes and no. Some things are still done with JS—it is an integral part of the web—such as browser APIs (say, camera, location, … ) and getting element sizes. So you still need JS, but you will write a lot less of it, and there is a good chance existing NuGet packages will wrap such features for you so you can use them with C# only.
Q: Is Blazor better than Angular?
A: There isn’t a single answer to this. It depends a lot on your team skill set and preferences. This blog post can give you some ideas.
Q: Does experience in Angular help in learning Blazor, not in terms of language syntax but from a design point of view, such as modules, controllers, services, etc.?
A: I’d say it can help. There are some common concepts. This post can give you some ideas.
Q: Can Blazor apps be hosted side-by-side with Razor Pages, ASP.NET Core in IIS?
A: Perhaps, but there may be some trickiness in the routing. You can host Blazor apps in Razor Pages though.
Q: Does the razor code have to go in the same file as the markup?
A: No, you can use partial classes: https://www.telerik.com/blogs/using-a-code-behind-approach-to-blazor-components.
Q: Can I port my UI in Blazor/Razor or WPF to .NET 5 backend/logic?
A: Yes, Telerik UI for Blazor already supports .NET 5 in its 2.19.0 release.
Q: Would you recommend doing Blazor with Xamarin? Or sticking to Xamarin Forms?
A: The Blazor bindings for Xamarin are still experimental, so whether you can trust and go with that is up to your project needs and timelines.
Q: Will Blazor replace Xamarin?
A: It is more likely that MAUI will replace Xamarin as the cross-platform targeting framework. Blazor, at the moment, targets web apps. There are some experiments on using Blazor syntax to write Xamarin apps though. We will see what MS does.
MAUI / Xamarin
Q: Do you have samples with your Blazor components using it as Blazor Mobile Bindings?
A: The mobile bindings are for Xamarin and we have a few Xamarin components for them: https://docs.telerik.com/devtools/xamarin/blazormobilecontrols/blazor-mobile-bindings-overview.
Q: Rendering Xamarin in WPF, would that also work with Blazor mobile bindings?
A: Blazor mobile bindings are intended to write any Xamarin app, including future platforms’ support such as WPF.
Q: Will MAUI work on desktop?
A: Yes, it will—covering Windows and macOS.
Q: What cross-platform support in Xamarin was moved from .NET 5 to .NET 6?
A: Microsoft has announced inclusion of support for macOS with .NET 6. More information is available here.
Q: Will MAUI replace the need for projects like Uno?
A: MAUI uses the Xamarin XAML syntax, while Uno uses the UWP XAML syntax. Both output the same native apps per platform.
Q: What is the impact of MAUI on WPF ?
A: At this point, Microsoft is stating that with MAUI it will add support for both macOS and WPF. More information is available here.
Q: Is the Telerik UI for .NET AJAX still being updated or is it falling out of favor?
A: It is still being updated and going strong to support everyone who still has (and will keep having for years) Web Forms apps.
A: While we don’t target or support it, if it can run a .NET Core app, you should be able to get our .NET Core components working there.
Q: Are you planning to provide providers/interfaces or helpers for the different ecosystem methods, like gRPC, etc.?
A: Check out the example shown here.
Q: About EF Core 9 and OData, are you providing access to those endpoints like filter, sort, etc.?
A: You could use the Telerik DataSource package for that. It would generally be up to you to serialize and deserialize the request, however. But that’s general OData specifics. With Telerik UI for Blazor, the grid has an extension method that can do the serialization to OData v4 too.
Q: Do you recommend a setup for lots and lots of data that you want to display in web or on desktop? Grid, Gantt, List, Spreadsheet, etc. I have in mind.
A: RadGrid with its Virtualization feature would allow you to handle hundreds of thousands of rows without negatively impacting the user experience.
A: Yes, all Telerik UI for ASP.NET Core components are available in Kendo UI as they are wrappers over Kendo UI for jQuery. Here is one more resource on the topic. :)
Q: Does a Telerik license include Kendo UI + Telerik UI for WinForms + Telerik UI for ASP.NET?
A: If you would like to take advantage of Kendo UI, Telerik WinForms and Telerik UI for ASP.NET Core, then the perfect license would be the DevCraft one. It includes all UI components from various frameworks and great tools such as Reporting, Test Studio and JustMock. :)
Additional Technologies / Compatibility Questions
Q: Is there any built-in possibility with .NET 5 to build GraphQL APIs?
A: There is no built-in way for GraphQL APIs; however, you can refer to the blogs on the matter that showcase how to build and consume GraphQL in your .NET application similar to this one.
Q: Regarding Web App and API hosted in Azure App Services, .NET 4.8 just rolled out this past summer. Do you have any insight when .NET 5 will roll out in Azure?
A: During .NET Conf Microsoft said they are working on it, so it should happen sooner rather than later.
Q: Is it time to switch from REST-based web API to gRPC and is it supported in Azure?
A: You should be able to start such a migration if you want to. It saves network bytes and since there are .NET packages for it, it should work under Azure too (best to address that with the MS docs, though, although I see some blog posts about this already so it should work).
Q: Are the gRPC and Blazor controls self-contained? Will they work in a project written in Visual Basic?
A: For Blazor—only C# is supported by MS. For gRPC—I have not tried using VB with that and I can only assume, but since it compiles to .NET Standard, I think it should be possible.
Q: Which Visual Studio version to use for .NET 5?
A: Visual Studio 2019 16.8 or later is required to use .NET 5 from Visual Studio.
Q: Will Visual Basic go away soon?
A: Check this out. :) As of .NET 5, Visual Basic will support Class Library, Console, Windows Forms, WPF, Worker Service and ASP.NET Core Web API. Microsoft says, “We are supporting these application types to provide a good path forward for the existing VB customer who want to migrate their applications to .NET Core.”
Q: Our SaaS application is built with VB .NET (and mostly Web Forms). Will this still be supported in the future? Would it make business sense for us to migrate?
A: Microsoft has announced that Web Forms will remain only in .NET 4.x (currently at 4.8), and it will not be available in .NET Core or future .NET versions. So, you may want to look into migrating to a more modern framework by the time the “old” .NET goes out of support by MS.
Q: Is it going to be possible to convert a MVC 4 solution to .NET 5?
A: It should be possible. MS provides a lot of migration guides and there might be one for that too. Generally, the view engine is still available so targeting more modern frameworks should let you migrate. Microsoft is also working on a webview that is even more lightweight.
Q: Do you know if there will be incompatibilities between .NET 5 SignalR and .NET Standard/Core SignalR?
A: I am not aware of breaking changes in this regard, but it is best to check that with the MS docs.
Q: Is SignalR push/pull implemented using WebSockets?
A: By default, yes.
Q: Will UWP eventually replace WPF because they both use XAML and target desktop?
A: Probably not. WPF is a proven, widely spread technology.
Q: When do you use .cshtml vs .razor? We have used .NET Core and have .cshtml.
A: The .cshtml is a Razor Page that is not Blazor. A .razor is a razor component that you can generally use in a Blazor app or as a component in a Razor Page.
Q: Follow-up question to that: We used viewComponents as components in Razor Page, so is that not the right way to do it in .NET 5?
A: It is an option. You can continue with the viewComponent approach in .NET 5 as well, if you choose to use ASP.NET Core 5.0.
Q: I can see the extension of page Index.razor. Is this something new?
A: This is the extension for Razor components. It has been around since they became available for .NET Core Razor Pages.
About Telerik DevCraft
DevCraft will arm you with everything you need to deliver outstanding applications in less time and with less effort.
With award-winning technical support delivered by the developers who built the products and a ton of resources and trainings, you can rest assured that you have a stable partner to rely on for your everyday challenges along your software development journey.
Download your 30-day free trial today!
Start My Trial