-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Closed
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-blazorIncludes: Blazor, Razor ComponentsIncludes: Blazor, Razor Components
Milestone
Description
Background and motivation
These set of APIs define how Razor Component Endpoints are configured in DI and how endpoints to server Razor Component Applications are defined.
Proposed APIs
+static Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions.AddRazorComponents(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder!
+static Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions.AddRazorComponents(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.Extensions.DependencyInjection.RazorComponentOptions!>! setupAction) -> Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder!
+Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi.DisplayFirefox(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task!
+Microsoft.Extensions.DependencyInjection.RazorComponentsBuilderExtensions
+static Microsoft.Extensions.DependencyInjection.RazorComponentsBuilderExtensions.AddWebAssemblyComponents(this Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder! builder, System.Action<Microsoft.AspNetCore.Components.Endpoints.WebAssemblyComponentsEndpointOptions!>? configure = null) -> Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder!
+Microsoft.Extensions.DependencyInjection.RazorComponentsBuilderExtensions
+static Microsoft.Extensions.DependencyInjection.RazorComponentsBuilderExtensions.AddServerComponents(this Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder! builder, System.Action<Microsoft.AspNetCore.Components.Server.CircuitOptions!>? configure = null) -> Microsoft.AspNetCore.Components.Endpoints.IRazorComponentsBuilder!
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder.Add(System.Action<Microsoft.AspNetCore.Builder.EndpointBuilder!>! convention) -> void
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder.AddServerRenderMode() -> Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder!
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder.AddWebAssemblyRenderMode() -> Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder!
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder.ApplicationBuilder.get -> Microsoft.AspNetCore.Components.Discovery.ComponentApplicationBuilder!
+Microsoft.AspNetCore.Builder.RazorComponentEndpointConventionBuilder.Finally(System.Action<Microsoft.AspNetCore.Builder.EndpointBuilder!>! finallyConvention) -> void
+Microsoft.AspNetCore.Builder.RazorComponentsEndpointRouteBuilderExtensions
+Microsoft.AspNetCore.Components.Endpoints.WebAssemblyComponentsEndpointOptions
+Microsoft.AspNetCore.Components.Endpoints.WebAssemblyComponentsEndpointOptions.PathPrefix.get -> Microsoft.AspNetCore.Http.PathString
+Microsoft.AspNetCore.Components.Endpoints.WebAssemblyComponentsEndpointOptions.PathPrefix.set -> void
+Microsoft.AspNetCore.Components.Endpoints.WebAssemblyComponentsEndpointOptions.WebAssemblyComponentsEndpointOptions() -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.FormMappingUseCurrentCulture.get -> bool
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.FormMappingUseCurrentCulture.set -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingCollectionSize.get -> int
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingCollectionSize.set -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingErrorCount.get -> int
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingErrorCount.set -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingKeySize.get -> int
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingKeySize.set -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingRecursionDepth.get -> int
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.MaxFormMappingRecursionDepth.set -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentOptions.RazorComponentOptions() -> void
+Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions
Usage examples
Canonical scenarios
Server Side Rendered components
services.AddRazorComponents();
builder.MapRazorComponents<App>();
Server Side rendering + Interactive server components
services.AddRazorComponents()
.AddServerComponents();
builder.MapRazorComponents<App>()
.AddServerRenderMode();
Server Side rendering + Interactive webassembly components
services.AddRazorComponents()
.AddWebAssemblyComponents();
builder.MapRazorComponents<App>()
.AddWebAssemblyRenderMode();
Server Side rendering + Interactive server and webassembly components
services.AddRazorComponents()
.AddServerComponents()
.AddWebAssemblyComponents();
builder.MapRazorComponents<App>()
.AddServerRenderMode()
.AddWebAssemblyRenderMode();
Other advanced scenarios
Configuring global options
services.AddRazorComponents(options =>
{
options.FormMappingUseCurrentCulture = false;
options.MaxFormMappingCollectionSize = 100;
options.MaxFormMappingErrorCount = 100;
options.MaxFormMappingKeySize = 100;
options.MaxFormMappingRecursionDepth = 100;
});
Configuring server component options
services.AddRazorComponents()
.AddServerComponents(options =>
{
options.MaxBufferedUnacknowledgedRenderBatches = 5;
...
// These are not new APIs
});
services.AddRazorComponents()
.AddServerComponents()
.AddHubOptions(); // Configure options specific to the SignalR Hub (this is the equivalent of services.AddServerSideBlazor().AddHubOptions(opt => ...))
Risks
codymullins
Metadata
Metadata
Assignees
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-blazorIncludes: Blazor, Razor ComponentsIncludes: Blazor, Razor Components