.NET 6 Consulting
- Massive performance: ASP.NET Core is the second fastest Web framework in the world. Entity framework core on .NET 6 is 92% faster than on .NET 5.
- Multi-platform: .NET 6 offers massive performance improvements, provides ability to build client apps for multiple operating systems including iOS, macOS and Android, and adds support for Apple Silicon (Arm64).
- Long-term support: .NET provides great productivity and an effortless development experience and will be supported for three years as a long-term support (LTS) release. Note: .NET 5 is not LTS.
- Top awards: Our experts include Microsoft Most Valued Professionals awarded by the Microsoft .NET team. Our team includes Microsoft Regional Directors, Azure Insiders, Docker Insiders, ASP.NET Insiders, Web API Advisors, Cosmos DB Insiders as well as experts in other Microsoft and open-source technologies.
- Top clients: We help Fortune 500, large and mid-size companies with ASP.NET Core, and .NET upgrades, development, consulting, recruiting services and hands-on training services. Some of our clients include Thomson Reuters, Dell, Bank of America, Broadcom and Credit Suisse.
With the success of .NET 5, Microsoft has continued to build upon its unified vision and .NET 6 has replaced .NET Standard as a huge step towards becoming a truly multi-platform framework. .NET 6 unifies the SDK, runtime and base libraries as a single development platform and enables building apps for the cloud, web, desktop, mobile, gaming, IoT and artificial intelligence.
Besides the unified platform with the Visual Studio family of tools, we also get great tooling and monitoring capabilities that increases productivity and reduces development time. With ASP.NET Core, we also get improved performance such that it performs 10x faster than Node.js and its in-house ORM - Entity Framework Core offers a 92% performance increase than it was in .NET 5.
Performance
Performance Comparison: .NET 6 is capable of handling more than 7 million responses per second while Node.js handles just under 700,000 responses on the same server configuration. (1)
Main Features
- Unified platform: .NET 6 supports multiple operating systems including iOS, macOS and Android, and adds support for Apple Silicon (Arm64). All these run on the same base libraries.
- C# 10: It supports C# 10 that add a multitude of new features including: record structs, improvements of structure types, interpolated string handlers, global using directives, file-scoped namespace declaration extended property patterns, improvements on lambda expressions, improved definite assignment, allows both assignment and declaration in the same deconstruction and AsyncMethodBuilder attribute on methods.
- Hot Reload is fantastic: Hot Reload is available on Visual Studio 2022 and VS Code. It allows us to modify your application's managed source code while the application is running. There is no need for a debugger. The Hot Reload can be automatically set to execute every time a file is saved and it's extremely fast. This works for .NET Multi-platform App UI (.NET MAUI), Blazor apps and Web applications including Razor pages.
- Performance upgrade for JSON: In order to improve JSON related performance, Microsoft created a new C# source generator to help improve the performance of applications that use System.Text.Json. The existing mode for JSON serialization is backed by runtime reflection. The two new models are compile-time source generation modes in which the generator generates optimized serialization logic. In both source-generation scenarios, the generated artifacts are passed directly to JsonSerializer as a performance optimization. The major performance benefits are: faster initial serialization and deserialization, faster serialization throughput, lower memory use, and decreased app size with assembly trimming.
- Minimal APIs: With minimal APIs we can create HTTP based APIs with minimal dependencies in just a few lines of code. These are ideal for microservices. Regular Web APIs are going to be supported in parallel. It's possible to create a WebApplication now without explicitly creating a WebApplicationBuilder.
- Blazor components rendered from JavaScript: As part of the .NET 6 release, Razor components can now be dynamically-rendered from JavaScript for existing apps. It's possible to do the same for React and Angular components even though it's not part of .NET 6 release.
- Ahead of time (AOT) compilation for Blazor apps: AOT compilation can compile .NET code directly into WebAssembly. AOT compilation speeds up the runtime performance. However, it leads to a larger application size. Regular Blazor WebAssembly apps (without AOT) run on the browser using a .NET Intermediate Language (IL) interpreter implemented in WebAssembly. Such apps typically run slower than they would on a server-side .NET just-in-time (JIT) runtime because the .NET code is interpreted. AOT compilation compiles .NET code directly into WebAssembly for native WebAssembly execution by the browser. So, for CPU intensive tasks the performance is quite higher. gRPC is also ten times faster with AOT.
HTTP/3: .NET supports HTTP/3 in Kestrel, HTTP.Sys & IIS for server scenarios; in HttpClient and for gRPC. With TLS encryption, with HTTP/1.1 downloading multiple images was limited. HTTP/2 being a binary protocol enabled multiple requests on the same connection. However, multiple streams go over one connection which is TLS encrypted. So, it leads to a line blocking problem which means that if a TCP packet is lost all the streams are blocked until the data can be recovered.
HTTP/3 solves this by using a connection protocol using QUIC, which uses UDP with TLS built in. Each frame of data is encrypted independently. This is a great benefit for mobile and tablet clients especially the ones roaming between wifi and cellular networks.
- gRPC: Protobuf serialization is 20% with .NET 6. It also uses a zero copy ByteString API. Previously, for applications that transferred a large amount of data, the Byte array used to make a copy. That was immutable by design to prevent any modifications to the existing array. However, now it's possible to use an unsafe operation to wrap the existing array. This speeds up performance and reduces the memory needs. However, this should only be used for a particular use case as it can lead to modification of the original array. gRPC downloads are way faster than .NET 6 because unlike .NET 5, buffer sizes can be increased automatically for slower connections.
Upgrading to .NET 6
Azure Active Directory's gateway is running on .NET 6 now. Upgrading from .NET 5 to .NET 6 has resulted in an improved application efficiency by 50%.
We have witnessed similar results with upgrading to .NET 6 for various clients. However, the upgrades entails a bit more than just upgrading the framework. Having done upgrades from .NET framework 4.7 (or earlier versions) to .NET Core, .NET 5 and now .NET 6, we have learned what works well and what doesn't work well. It's equally important, and in some cases, even more important to know the latter.
Additionally, the most important thing to remember is that every client has different use cases, needs and usage patterns, both current and future. For example, in certain cases a Web server might provide much higher performance but may lack critical features. We have been made aware of upgrade cycles that failed prior to us after months and years of work in parallel to adding new features. Our team was able to upgrade those projects successfully. We constantly upgrade our IP based on our everyday learnings and that is why we are able to speed up delivery, sometimes at record pace without compromising quality.
Entity Framework Core
Microsoft claims that Entity Framework Core on .NET 6 is 92% faster than .NET 5.
ASP.NET Core
ASP.NET Core in .NET 6 helps build great web-UI and robust back-end services. It is the second fastest Web framework in the world and is capable of handling more than 7 million responses per second while Node.js handles just under 700,000 responses on the same server configuration. Besides some of the great features which we learned above which includes Minimal APIs, Hot Reload, Performance improvements for JSON, Blazor components being rendered from JavaScript, AOT compilation for Blazor apps and HTTP/3 support let's take a look at what more do we get with ASP.NET Core in .NET 6.
- IAsyncDisposable: This interface has been available since .NET Core 3.0 to release memory utilized by asynchronous resources. However with .NET 6 this interface is added to MVC and can be used in the controllers, Razor Pages, and View Components.
- Async Streaming: Asynchronous streaming is now supported from controller actions and responses from the JSON formatter. When an action returns an IAsyncEnumerable data, its content is no longer being buffered in memory which results in reduced memory usage.
- Nullable Reference Type Annotations: Enabling the nullable reference flag provides an additional compile-time safety in the handling of reference types. Enabling this feature offers new build-time warnings from ASP.NET Core APIs.
- View Components Tag Helpers: ASP.NET core 6 supports optional parameters for View Components, which means its tag helper can be invoked without having to specify a value for that parameter.
- Template Improvements: The latest templates use the minimal hosting model, which reduces the number of files and lines of code required to create an app. It unifies the Startup.cs and Program.cs into a single Program.cs and uses top-level statements and global using directives to significantly reduce the amount of code.
- HTTP logging middleware: A small yet useful feature included in ASP.NET Core 6 is the new HTTP logging middleware that helps log information about the incoming HTTP requests and responses including the headers and entire body. This middleware with its default configuration does not log any sensitive information, however it can be configured to log some sensitive data such as personally identifiable information (PII) and must be used carefully.
- Smaller SignalR, Blazor Server, and MessagePack scripts: These scripts are now smaller in size enabling faster downloads and start-up and less JavaScript parsing and compiling by the browser. The size reductions are significant: (signalr.min.js: 70% || blazor.server.js: 45%)
- Single-page apps: The single page app templates for Angular and React have been updated to Angular 12 and React 17 respectively. This support is offered built-in and developers do not need to upgrade their default templates to these versions. It also offers a flexible template pattern where the startup code for the app no longer needs any SPA specific logic. Starting the front-end development server is automatically done by the new SpaProxy package.
- Bootstrap 5.1: ASP.NET Core 6 comes with integrated Bootstrap 5.1 support, which enables building modern, rich and responsive UI.
ASP.NET Core 6 has got a lot more to offer when it comes to performance, security, faster application development and more. Contact us to learn more about these features.
Multi-platform Application UI (MAUI)
MAUI is open source and supports multiple platforms including mobile as well as desktop.
.NET MAUI is the evolution of Xamarin.Forms with UI controls rebuilt from the ground up for performance and extensibility. With .NET MAUI, you can create multi-platform apps using a single project just like Xamarin.Forms. However, you can also add platform-specific source code and resources if necessary. MAUI aims to enable developers to implement as much of the app logic and UI layout as possible in a single code-base.
Bottom line: MAUI allows developers to write cross platform applications using XAML and C# from a single code base. It allows sharing the UI layout and design across platforms. In addition to that, we can share code, tests and business logic across platforms.
Blazor MAUI: For Web developers who may not want to learn XAML, they can now use Blazor MAUI. With Blazor MAUI, the major benefit would be that the same code could be used for Web as well as native applications.
NOTE: MAUI is still in preview. Microsoft believes MAUI will be in production around Q2 of 2022.
Highlights of our Microsoft Practice
- Our team has great expertise in building multi-million-dollar enterprise web applications (with billions in revenue per year) for our Fortune 500 clients.
- We have expertise in many different domains: healthcare, insurance, finance, tech, entertainment, retail, energy, just to name a few.
- We have been fortunate to work directly with Microsoft product teams for almost a decade.
- Our team includes Microsoft awarded Most Valuable Professionals, Azure Insiders, Docker Insiders, ASP.NET Insiders, Web API Advisors, Cosmos DB Insiders as well as experts in other Microsoft as well as open-source technologies.
- We help our clients with:
- Software Development
- Upgrades to latest versions
- DevOps and Automation
- Consulting and Mentoring
- Training and Recruiting
Cazton Success Stories
With the frequent changes in operating systems, platforms, frameworks and browsers; developers have a lot to keep up with these days. They can't specialize and be experts in every technology they work on. With an expert-led team like ours, we bring the benefit of our network to you. We save our clients a serious amount of effort on tasks they shouldn't be doing by providing them a streamlined strategy and updating it as and when we get more information. We work with Fortune 500, large and mid-size corporations and we learn what works and what doesn't work and incorporate that in our feedback to our clients to make sure their projects are successful.
How can Cazton help you with .NET 6 Consulting?
At Cazton, we help Fortune 500, large and mid-size companies with .NET development, consulting, recruiting services and hands-on training services. Our team includes Microsoft Regional Directors, Microsoft awarded Most Valuable Professionals, Azure Insiders, Docker Insiders, ASP.NET Insiders, Web API Advisors, Cosmos DB Insiders as well as experts in other Microsoft and notable open-source technologies. We have significant experience in Microsoft technology stack, and our expertise can enhance your project's performance and improve its efficiency. We believe in customising each solution to tailor to the exact needs of the client. We can provide you the following services:
- Custom .NET 6 software development, deployment and augmentation with cloud support.
- .NET 6 Consulting.
- Customized .NET 6 Training.
- Migrate your existing .NET Core or .NET 5 application to .NET 6.
- Migrate your existing .NET Framework application to .NET 6.
- Optimize performance of your existing application.
- Consult you with design and architectural best practices.
- Consult you with security best practices.
- Deploy your .NET applications to cloud, hybrid cloud or on-premises.
- Build CI/CD pipeline and automate your deployment process.
- Containerize your .NET application.
- Perform code reviews.
- Custom development, consulting and training services for Web, mobile, desktop and hybrid applications, gRPC, Apis, SignalR, front-end and back-end solutions, big data, machine learning and artificial intelligence. We support the entire .NET ecosystem including .NET 5, .NET 6, ASP.NET Core and all versions of classic .NET framework. We work on a wide array of technologies including: Blazor, Angular, React, Vue, TypeScript, EF Core, MAUI, Xamarin and support all major RDBMSs (SQL Server, Postgres, MySQL, Oracle) and NoSQL databases (Azure Cosmos DB, MongoDB, Cassandra, Riak, Redis, Elastic search, Solr etc.)
Our clients trust us to deliver complicated projects within a short delivery time frame. We have saved our clients millions of dollars and have proven multiple times that we can be more economical than even offshore options. We can provide our experts with flexible engagements at a very cost-effective rate.
References:
- Techempower benchmarks: Best plaintext responses per second, Dell R440 Xeon Gold + 10 GbE (439 tests)