-
What's new in MAUI
I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.
.NET MAUI (Multi-platform App UI) was originally announced way back in May 2020 at BUILD 2020, and then updated in a blog post in February 2021. .NET MAUI is an evolution of the increasingly popular Xamarin.Forms toolkit.
We had to wait for preview 3 before more information about MAUI was forthcoming.
Preview 3
- Windows Desktop Now Supported
- Updates to Controls and Layouts
- Semantic Properties for Accessibility
Preview 4
- BlazorWebView
- Splash Screen
- Raw Assets
- Visual Studio Productivity
- Ecosystem Readiness
Preview 5
- Animations
- UI Components
- Single Project Templates Updates
Preview 6
- Workload Installation
- Gestures
- Clipping
- Native Alerts
- Single Project and Windows
Preview 7
- New Layouts
- Accessibility Changes and Improvements
- Font Scaling
Around this time a blog post was also published highlighting previews of the Community Toolkits.
Preview 8
Coinciding with the .NET 6 Release Candidate 1 releases. This is when the announcement was made that MAUI would not be shipping in November as originally planned. MAUI will stay in preview until into 2022.
Preview 9
Coinciding with .NET 6 Release Candidate 2
- Updated Controls
- Borders, Corners, and Shadows – Oh my!
- Quick Android Startup
- Ecosystem Controls (DevExpress, Syncfusion, Telerik)
-
What's new in EF Core 6
I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.
EF Core 6 is the next version of Entity Framework - aka Entity Framework Core 6. Don’t confuse this with the old ‘Entity Framework 6’ (the one you might have used with legacy .NET Framework applications)!
In January 2021, the major themes planned for Entity Framework Core 6 were outlined:
- Highly requested features
- Performance
- Migrations and deployment
- Improve existing features and fix bugs
- .NET integration
- Experiments and investigations
The blog post went into a bit more detail under each of these headings as to what each might entail.
In addition, the plan for Entity Framework Core 6.0 is also published on Microsoft Docs.
Preview 1
UnicodeAttribute
PrecisionAttribute
EntityTypeConfigurationAttribute
- Translate
ToString
on SQLite EF.Functions.Random
- Support for SQL Server sparse columns
- In-memory database: validate required properties are not null
- Improved SQL Server translation for
IsNullOrWhitespace
- Database comments are scaffolded to code comments
- Microsoft.Data.Sqlite
- Savepoints API
- Command timeout in the connection string
Preview 2
- Preserve synchronization context in
SaveChangesAsync
- Translate String.Concat with multiple arguments
- Smoother integration with
System.Linq.Async
- More flexible free-text search
Preview 3
No blog post for this release. See GitHub issue list for actual changes included.
Preview 4
- The runtime perf push
- Pooling and recycling,
DbContext
and beyond - Logging suppression
- Opting out of thread-safety checks
Preview 5
- Compiled models dramatically reduce startup time for your application
- The models are generated (similar to how migrations are) so they should be refreshed whenever your model changes.
- Some features are not currently supported by compiled models, so be aware of the limitations when you try them out.
Preview 6
- Support for 64-bit identity seed values
- Support for new BCL
DateOnly
andTimeOnly
structs for SQLite - Uniquify and validate check constraint names
- Pre-convention model configuration
- The items on this list
Preview 7
- Migration bundles - The migration bundle is a self-contained executable with everything needed to run a migration
There was also an additional post highlighting improvements to the Azure Cosmos DB Provider.
Release Candidate 1
- EF Core 6.0 supports creating and modifying temporal tables mapped to entity types
-
What's new in ASP.NET Core 6
I’m compiling information for our next Adelaide .NET User Group meetup which is focusing on the launch of .NET 6 and Visual Studio 2022.
Way back in February 2021, the major themes were outlined for ASP.NET Core in .NET 6. They were:
- Hot reload: Quickly make UI and code updates to running apps without losing app state for faster and more productive developer experience.
- Micro APIs: Simplify building API endpoints with much less code and ceremony.
- Single-file publishing: Build small, standalone, high-performance apps and services.
- WebAssembly ahead-of-time (AoT) compilation: Compile .NET code in Blazor WebAssembly apps directly to WebAssembly when publishing for significantly improved runtime performance.
- Updated single-page app (SPA) support Update SPA integration in ASP.NET Core to work seamlessly with the latest modern front-end JavaScript frameworks.
- Blazor hybrid desktop apps: Combine the best of Blazor and .NET Multi-platform App UI to build cross-platform hybrid desktop apps.
- HTTP/3: Add support for HTTP/3 and QUIC in ASP.NET Core supported servers.
Each preview then went on to incrementally work towards these goals:
Preview 1
- Support for
IAsyncDisposable
in MVC DynamicComponent
- Input
ElementReference
exposed on relevant components - Nullable reference type annotations
Preview 2
- Razor compiler updated to use source generators
- Support for custom event arguments in Blazor
- CSS isolation for MVC Views and Razor Pages
- Infer component generic types from ancestor components
- Preserve pre-rendered state in Blazor apps
- SignalR – Nullable annotations
Preview 3
- Smaller SignalR, Blazor Server, and MessagePack scripts
- Enable Redis profiling sessions
- HTTP/3 endpoint TLS configuration
- Initial .NET Hot Reload support
- Razor compiler no longer produces a separate Views assembly
- Shadow-copying in IIS
- Vcpkg port for SignalR C++ client
- Reduced memory footprint for idle TLS connections
- Remove slabs from the
SlabMemoryPool
BlazorWebView
controls for WPF & Windows Forms
Preview 4
- Introducing minimal APIs
- Async streaming
- HTTP logging middleware
- Use Kestrel for the default launch profile in new projects
IConnectionSocketFeature
- Improved single-page app (SPA) templates
- .NET Hot Reload updates
- Generic type constraints in Razor components
- Blazor error boundaries
- Blazor WebAssembly ahead-of-time (AOT) compilation
- .NET MAUI Blazor apps
- Other performance improvements
Preview 5
- .NET Hot Reload updates for
dotnet watch
- ASP.NET Core SPA templates updated to Angular 11 and React 17
- Use Razor syntax in SVG
foreignObject
elements - Specify null for
Action
andRenderFragment
component parameters - Reduced Blazor WebAssembly download size with runtime relinking
- Configurable buffer threshold before writing to disk in Json.NET output formatter
- Subcategories for better filtering of Kestrel logs
- Faster get and set for HTTP headers
- Configurable unconsumed incoming buffer size for IIS
Preview 6
- Improved Blazor accessibility
- Required Blazor component parameters
- Efficient byte array transfers for JavaScript interop
- Optional parameters for view component tag helpers
- Angular template updated to Angular 12
- OpenAPI support for minimal APIs
- Inject services into minimal APIs without
[FromServices]
attribute - Configure the accept socket for Kestrel
IHttpActivityFeature
- Long running activity tag for SignalR connections
- WebSocket compression
- SignalR WebSockets TestServer support
- New
OnCheckSlidingExpiration
event for controlling cookie renewal - ClientCertificateMode.DelayCertificate
Preview 7
- Parity with existing experiences for minimal APIs
- Added
IResult
implementations for producing common HTTP responses - Support Request, Response and User for minimal actions
- Minimal host and template improvements
- Supply Blazor component parameters from the query string
- Replace the current URI in the browser history from Blazor
- New
DynamicComponent.Instance
property - Blazor streaming interop from JavaScript to .NET
- Large file upload & faster file uploads with Blazor
- Modify HTML
<head>
content from Blazor components - Support for the multiple attribute on
<select>
elements in Blazor - Support for HTTP/3 in Kestrel
- QUIC support moved to the shared framework
- Allow control over
Activity
creation - Support for non-ASCII characters in Kestrel response headers
- Add W3CLogger
- Add authentication expiration option to SignalR
Release Candidate 1
- Render Blazor components from JavaScript
- Blazor custom elements
- Manipulate the query string from Blazor
- .NET to JavaScript streaming
PageX
andPageY
inMouseEventArgs
- Blazor templates updated to set page titles
- Disabled long-polling transport for Blazor Server
- Collocate JavaScript files with pages, views, and components
- JavaScript initializers
- Customize Blazor WebAssembly packaging
- Template improvements
- Minimal API updates
- Support for Latin1 encoded request headers in
HttpSysServer
- Emit KestrelServerOptions via EventSource event
- Add timestamps and PID to ASP.NET Core Module logs
- New
DiagnosticSource
event for rejected HTTP requests - Create a
ConnectionContext
from an Accept Socket - Streamlined HTTP/3 setup
- Upgrade to Duende Identity Server
In addition to these regular previews, two other blog posts were published that relate to ASP.NET Core 6:
- ASP.NET Core 6 and Authentication Servers - .NET 6 will have IdentityServer templates. .NET 7 options under consideration.
- HTTP/3 support in .NET 6 - HTTP/3 support is included as a preview feature in .NET 6 (partly due to the fact that the RFC for HTTP/3 has not been finalised yet)