.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://www.nuget.org/packages/VWO.OpenFeature.Provider |
Openfeature .NET docs | https://openfeature.dev/docs/reference/technologies/server/dotnet |
Warning
Warning
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
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}");
}
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 |
---|---|---|---|
|
|
| Initializes the VWO client with the provided SDK key, account ID, and logging options. |
|
|
| Creates a new instance of |
| None | Returns an OpenFeature client instance that is used for feature flag evaluations. | |
| None | Creates a builder instance to construct an | |
|
|
| Sets a key-value pair inside the evaluation context. |
| None | Finalizes the | |
|
|
| Asynchronously sets the provider for OpenFeature, enabling it to evaluate feature flags using VWO. |
|
|
| Asynchronously fetches the boolean value of a feature flag. |
|
|
| Asynchronously fetches the string value of a feature flag. |
|
|
| Asynchronously fetches the integer value of a feature flag. |
|
|
| Asynchronously fetches the float value of a feature flag. |
|
|
| Asynchronously fetches the object value of a feature flag. |
Updated 13 days ago