Comments (2)
@michaelswells
We are investigating how to support blazor apps.
Currently, FeatureManagement.AspNetCore provides FeatureGateAttribute, FeatureTagHelper, feature-flag-based MVC filter and middleware.
Blazor is a framework for building interactive client-side web UI based on the Razor component.
There is also Blazor Server option. Blazor Server provides support for hosting Razor components on the server in an ASP.NET Core app. UI updates are handled over a SignalR WebSocket connection.
Blazor apps run outside of the ASP.NET Core pipeline. There will only be one HTTP request happened in the beginning. After that, all interactions are through WebSocket.
FeatureGateAttribute is built from ASP.NET ActionFilter which is incompatible with Blazor. MVC filter and middleware are also incompatible with Blazor, since they are based on the ASP.NET pipeline.
HttpContextAccessor/HttpContext should be avoided in the Razor components of Blazor server apps. A critical aspect of server-side Blazor security is that the information attached to a given circuit might become updated at some point after the Blazor circuit is established but the IHttpContextAccessor isn't updated. Ref
The recommended approach for passing request state to the Blazor app is through root component(App.razor) parameters during the app's initial rendering(_Host.cshtml). Alternatively, the app can copy the data into a scoped service in the root component's initialization lifecycle event for use across the app. Ref
This will make the HttpContextAccessor pattern for TargetingFilter fail. Besides, the FeatureManager and feature filters are always registered as a singleton. Scoped services can not be consumed by them.
Tag Helpers aren't supported in Razor components. Ref
FeatureTagHelper can only be used in _Host.cshtml
I create a repo to show the potential issues when using FeatureManagement for Blazor server app.
https://github.com/zhiyuanliang-ms/FeatureManagement-Blazor/tree/main
I write a Blazor Server app example. Hope it will be helpful.
from featuremanagement-dotnet.
Move the discussion to #258
from featuremanagement-dotnet.
Related Issues (20)
- Suggest to have app.UseFeatureManagement HOT 8
- Silent failure in TargetingTelemetryInitializer HOT 10
- The TargetingId should be included in the FeatureEvaluation event even if it's null/empty. HOT 4
- Targeting evaluation is CPU dependent. HOT 4
- Remove the support for variants and telemetry from the .NET feature flag schema HOT 14
- Include Targeting Information on outgoing telemetry HOT 2
- Support .NET 8 Targeting framework in Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore
- Target netstandard2.* in Microsoft.FeatureManagement.Telemetry.ApplicationInsights
- The approach to telemetry (using custom `ITelemetryPublisher`) seems overengineered and counter to modern OpenTelemetry abstractions HOT 37
- Add Default Http Targeting Context Accessor
- Consider moving `TargetingHttpContextMiddleware` to the App Insights package HOT 2
- No instance of ITargetingContextAccessor is available for variant assignment. HOT 6
- FeatureManagerSnapshot should snapshot TargetingContext as well
- EvaluationDataToApplicationInsights example
- Can't Set FeatureFilters In FeatureManager In .NET Framework Application HOT 7
- Update Package metadata
- Add a link to preview on main readme
- Cannot use the TargetingFilter in .NET class library project HOT 3
- Nuget "Microsoft.FeatureManagement.AspNetCore" Version 3.3.0 - Multiple feature filters match the configured filter named 'Microsoft.TimeWindow' HOT 8
- Consider using `TimeProvider` using Microsoft.Bcl.TimeProvider nuget package HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from featuremanagement-dotnet.