Source: https://github.com/dotnet/aspnetcore/issues/39504
Reposted from Zhihu: https://zhuanlan.zhihu.com/p/469359820
Each list is a link, just browse through. If interested, click the original article or the linked article on the website. The official account won't include links because they can't be clicked...
ASP.NET Core Runtime
Server - Features
Here are some feature highlights we plan to add to the server in the .NET 7 release:
- Add support for output caching #27387
- Shared port with Kestrel+YARP #39640
- ANCM for ARM64 #39281
- WebSocket support over HTTP/2 with Kestrel #7801
- OCSP stapling support for Kestrel #4762
- Rate limiting for Kestrel - design mechanism for applying backpressure to accepted connections #13295
- [Theme] Support migrating .NET Framework applications to .NET Core #40078
Server - Performance
.NET 6 was a major release for server performance, and we aim to further improve in .NET 7, as follows:
- Connection performance improvements #39846
- Allow server memory pool to shrink #27394
- Enable kernel response buffering for HTTP.sys server #14455
- Improve HTTP/2 performance using Channels #30235
HTTP/3 Support
HTTP/3 support was provided as a preview feature in .NET 6. For .NET 7, we aim to complete it and make it a supported feature.
- HTTP/3: UseHttps configuration #34858
- Implement Http3 static response header compression #33980
- Dynamic table support for HTTP/3 #28433
- HTTP/3: Remove non-final h3 ALPN #35032
- HTTP/3: Enable Kestrel by default in .NET 7 #36486
ASP.NET Web Frameworks
Minimal APIs
- Improve minimal API routing via grouping #36007
- Add support for endpoint filters #37853
- [Epic] OpenAPI in .NET 7 #37098
- Extend the ability to customize parameter binding for Minimal APIs #35489
- Add anti-forgery (anti-csrf) support to minimal endpoints #38630
- Generate security schemes for individual endpoints/operations #39761
- Support binding request body as Stream/ReadOnlySequence
or ReadOnlyMemory /ReadOnlySpan #38153 - Consider a better API to configure JsonOptions for minimal actions/routes to code #39226
- Make IResult methods more testable #37502
- Minimal API does not support binding to StringValues from query or headers #36726
- Minimal actions - array support in method signatures from query string binding #32516
- Usage of ProblemDetails is inconsistent across ASP.NET Core #32957
- Configuring authorization for minimal APIs should be simple and feature-rich #34545
- Design validation for minimal APIs #30666
- [Epic]: Minimal APIs + MVC #36637 analyzers (improving developer experience)
SignalR
- Support returning values from client calls #5280
- Refresh authentication tokens in SignalR #5297
- [Epic] SignalR should have a C++ client #5301 (improve existing C++ client)
Rate Limiting
- Complete implementation of non-generic rate limiters (fixed window, sliding window, token bucket, concurrency limiter) #37381
- Design generic rate limiting API #37383
- Implement rate limiting middleware in aspnetcore #37384
- Redesign current aspnetcore concurrency limiter middleware to use new abstractions and implementations #38306
- Rate limiting implementation in Yarp #37387
- Rate limiting for Kestrel - design mechanism for applying backpressure to accepted connections #13295
- Move rate limiting abstractions/API to dotnet/runtime #37385
gRPC (dotnet-gRPC)
- [EPIC] gRPC JSON transcoding grpc/grpc-dotnet#1583 (gRPC/HTTP)
Orleans
- Implement POCO Grains orleans#7351
- Configurable serializer for grain persistence orleans#7471
- Remove SMS provider orleans#7475
- Implement stateless service abstraction orleans#7469
- [Epic]: Implement workflows as a primitive in Orleans orleans#7487
- [Epic]: Improve experience for Orleans customers deploying to Azure orleans#7486
- Simplify streaming configuration abstractions orleans#7473
- Add Orleans templates for aspnetcore orleans#7479
ASP.NET Web UI
Blazor Hybrid
- Blazor with MAUI cannot use
or - Blazor Desktop principles: Global readiness maui#2532
- Blazor Desktop test infrastructure and plan maui#2543
- Support configurability for opening external URLs maui#4338
- Hot reload on MAUI Blazor apps not working. maui#2527
- Blazor Desktop: Support auth maui#2529
- Blazor Desktop principles: Security maui#2540
- Blazor Desktop principles: Performance maui#2531
- Blazor Desktop principles: Accessibility maui#2541
- Blazor Desktop principles: DPI awareness maui#2549
- Blazor Desktop dev tools enablement maui#2542
- Documentation: Blazor Hybrid walkthrough/getting started maui#3684
- Blazor Hybrid project template updates maui#4127
- [Blazor webview] Exception handling in blazor webview maui#4441
Razor Compiler
- Generic Blazor components fail to correctly infer type when the type has additional constraints #25588
- Update Razor compiler to use global:: more freely #18757
- Compiler crashes reported via internal telemetry #38877
- Compiler crashes reported via internal telemetry #38878
- Compiler crashes reported via internal telemetry #38879
- Blazor CascadingTypeParameter issue #38479
- Add SDK snapshot tests for 5.0 applications #28489
- Having an unclosed form above a code block turns everything blue #27133
- Move away from Razor generating different code at design time and runtime. #30669
- Razor editor complains about unclosed tags #30573
- Locating owners in the Razor syntax tree may fail #36689
Blazor
- Ability to run multiple Blazor Server/WebAssembly applications in the same document #38128
- Expose location change events for NavigationManager #14962
- Calling InvokeAsync(StateHasChanged) causes page to fall back to default culture #28521
- Process for cleaning up web templates #30162
- Empty Blazor project template #32832
- Consider shipping ObjectGraphDataAnnotationsValidator / ValidateComplexTypeAttribute #28640
- Productize custom element support package #38447
- Improve pre-rendering and authentication experience in Blazor #27592
- Suspend and resume Blazor applications #27576
- Blazor Image element for displaying images not accessible via HTTP endpoint #25274
- Design proposal: Binding get/set/after modifiers #39837
- Design for resolving transient disposables on Blazor Server #26676
- Blazor Pause and resume server-side Blazor circuits #30344
- Specific component for handling large binary data (files and media) #30290
- Enable integration with 3rd party asset management solutions #38445
- Components don't reset their received parameters during hot reload updates #31272
- Add DateOnly and TimeOnly support for model binding and routing #34591
- Better MSAL support for other schemes #38122
- How to configure HttpClient base address in Blazor Server using IHttpClientFactory #25758
- More control over circuit lifetime (ability to monitor circuit activity and terminate from client/server) #30287
- Server-side Blazor: Provide API/extension points for circuit eviction #17866
- True multithreading (on supported browsers) #17730
- Developers targeting browser-wasm can use Web Crypto APIs runtime#40074
- Continue improving Mono method body replacement runtime#57365
MVC
- Alternative for IRouter.GetVirtualPath in EndpointRouting #23041
- Allow matching routes without capturing parameters #27996
- Localized numeric formatting and incorrect input type for decimal fields #6566
- Link generation improvements #38121
- LinkTagHelper should not use inline scripts #14736
- Add support for implicit inference of types appearing in FromServices from DI #39667
- Infer FromBody.AllowEmptyBehavior = Allow based on nullability information #39754
- Consider adding support for TryParse as a way to bind primitives #39682
- EmptyBodyBehavior.Allow should allow missing Content-Type #36466
- SkipStatusCodePagesAttribute should run before AuthorizeAttribute #10317
- ApiExplorer does not correctly handle multiple routes on the same action method #26234
- Infer optionality for FromServices based on nullability information #39757
- Razor Pages ComplexTypeModelBinder cannot handle the suggestion "Or, set property 'X' to a non-null value in the 'YModel' constructor" #21916