.NET Provider
Get Started
An OpenFeature Provider is a pluggable integration layer that connects the OpenFeature SDK to a specific feature flag management system (e.g., VWO or custom in-house solutions). OpenFeature is an open-source standard for feature flagging, designed to provide a vendor-agnostic approach, enabling organizations to switch between feature flagging tools without rewriting application code.
This VWO Openfeature Provider for .NET helps you integrate feature management and experimentation systems within your .NET-based server applications.
Resource | Link |
---|---|
GitHub repository | https://github.com/wingify/vwo-openfeature-provider-dotnet |
Published on | https://pypi.org/project/vwo-openfeature-provider-dotnet/ |
Openfeature .NET docs | <https://openfeature.dev/docs/reference/technologies/server/dotnet> |
Please Note
This library is intended to be used in server-side contexts and has not been evaluated for use on mobile devices.
Requirements
.NET 6.0+
SDK Installation
dotnet add package VWO.OpenFeature.Provider
Usage
using OpenFeature;
using OpenFeature.Model;
using VWOOpenFeatureProvider;
using VWOFmeSdk;
using VWOFmeSdk.Models.User;
static async Task Main(string[] args)
{
var vwoInitOptions = new VWOInitOptions
{
SdkKey = "your-sdk-key-here", // Replace with your SDK Key
AccountId = 123456, // Replace with your VWO Account ID
Logger = new Dictionary<string, object>
{
{ "level", "ERROR" } // Logging level
}
};
// Initialize the VWO client
var vwoClient = VWO.Init(vwoInitOptions);
// Initialize the VWO Provider
var vwoProvider = new VWOProvider(vwoClient);
// Get the client from OpenFeature API
var client = Api.Instance.GetClient();
// Test feature flags with variable key values
await TestFlags();
}
static async Task TestFlags(FeatureClient client, EvaluationContext context)
{
// Setting up the EvaluationContext
var context = EvaluationContext.Builder()
.Set("targetingKey", new Value("user-id"))
.Set("key", new Value("variable-key")) // Replace with your variable key
.Build();
// Set the provider using OpenFeature API
await Api.Instance.SetProviderAsync(vwoProvider);
// Test boolean flag
var boolResult = await client.GetBooleanValueAsync("feature-boolean", false, context);
Console.WriteLine($"BOOL result: {boolResult}");
// Test string flag
var stringResult = await client.GetStringValueAsync("feature-string", "defaultString", context);
Console.WriteLine($"STRING result: {stringResult}");
// Test integer flag
var intResult = await client.GetIntegerValueAsync("feature-integer", 0, context);
Console.WriteLine($"INTEGER result: {intResult}");
// Test float flag
var floatResult = await client.GetDoubleValueAsync("feature-float", 0.0, context);
Console.WriteLine($"FLOAT result: {floatResult}");
// Test object flag
var objectResult = await client.GetObjectValueAsync("feature-object", new Value(new Structure(new Dictionary<string, Value>())), context);
Console.WriteLine($"OBJECT result: {objectResult}");
}
API Details
API | Arguments | Argument Description | API Description |
---|---|---|---|
VWO.Init | VWOInitOptions vwoInitOptions | SdkKey: Unique key for authentication with VWO. AccountId: VWO account identifier. Logger: Dictionary defining logging level. | Initializes the VWO client with the provided SDK key, account ID, and logging options. |
new VWOProvider(vwoClient) | vwoClient: VWO | vwoClient: The initialized VWO SDK client instance. | Creates a new instance of VWOProvider , integrating VWO with OpenFeature. |
Api.Instance.GetClient() | None | - | Returns an OpenFeature client instance that is used for feature flag evaluations. |
EvaluationContext.Builder() | None | - | Creates a builder instance to construct an EvaluationContext . |
context.Set("key", new Value("variable-key")) | "key": string, "value": Value | key: The attribute key to set. value: The value associated with the key. | Sets a key-value pair inside the evaluation context. |
context.Build() | None | - | Finalizes the EvaluationContext with set attributes. |
await Api.Instance.SetProviderAsync( vwoProvider) | vwoProvider: VWOProvider | vwoProvider: The VWO provider instance that will handle feature flag evaluations. | Asynchronously sets the provider for OpenFeature, enabling it to evaluate feature flags using VWO. |
await client.GetBooleanValueAsync | featureKey: string, defaultValue: bool, context: EvaluationContext | featureKey: The unique key representing the feature flag. defaultValue: The fallback boolean value if the flag evaluation fails. context: The evaluation context containing user details and attributes. | Asynchronously fetches the boolean value of a feature flag. |
await client.GetStringValueAsync | featureKey: string, defaultValue: string, context: EvaluationContext | featureKey: The unique key representing the feature flag. defaultValue: The fallback string value if the flag evaluation fails. context: The evaluation context containing user details and attributes. | Asynchronously fetches the string value of a feature flag. |
await client.GetIntegerValueAsync | featureKey: string, defaultValue: int, context: EvaluationContext | featureKey: The unique key representing the feature flag. defaultValue: The fallback integer value if the flag evaluation fails. context: The evaluation context containing user details and attributes. | Asynchronously fetches the integer value of a feature flag. |
await client.GetDoubleValueAsync | featureKey: string, defaultValue: double, context: EvaluationContext | featureKey: The unique key representing the feature flag. defaultValue: The fallback float value if the flag evaluation fails. context: The evaluation context containing user details and attributes. | Asynchronously fetches the float value of a feature flag. |
await client.GetObjectValueAsync | featureKey: string, defaultValue: Value, context: EvaluationContext | featureKey: The unique key representing the feature flag. defaultValue: The fallback object if the flag evaluation fails. context: The evaluation context containing user details and attributes. | Asynchronously fetches the object value of a feature flag. |
Updated 2 days ago