Innovate
Your Software
Faster without Risk

FeatBit, a Fast & Scalable Open Source Feature Flags Management Tool built with .NET; Ideal for Self Hosting.

Innovate Your Software Faster without Risk

A Fast, Scalable, and Open-source Feature Flags Management Service. For Cloud & Self-hosting.

Feature Flag .NET: Microsoft Feature Management vs FeatBit

Last updated date:

Introduction

Microsoft.FeatureManagement is a feature flag library for .NET applications. With Azure App Configuration, it becomes a comprehensive feature flag management service.

FeatBit is another popular open-source feature flag management service built with .NET. FeatBit also offers libraries for implementing feature flags in .NET applications.

Each service offers unique features and capabilities. To better understand which one best fits your .NET feature flag management needs, we will compare these two services based on the following criteria:

  • Application Support: What types of applications each service can support.
  • Ease of Use: How easy it is to get started with each service.
  • Features: The features provided by each service.
  • Development Ecosystem & Vendor Lock-in: How well each service integrates with the overall company.
  • Pricing & Limitations: The pricing and limitations associated with each service.
  • FeatBit is planning to serve as a provider for Microsoft.FeatureManagement.

Types of Application Support by Two Feature Flag .NET Providers

.NET Applications

Microsoft.FeatureManagement can be used with any provider for IConfiguration, enabling scenarios that range from appsettings.json to Azure App Configuration and more. Technically, Microsoft.FeatureManagement can support many types of .NET applications, such as ASP.NET Core, Console, WPF, MAUI, etc. However, it lacks comprehensive documentation and examples for using this library in .NET MAUI, Blazor WebAssembly, and other frameworks.

FeatBit provides both server-side and client-side SDKs for .NET applications. The server-side SDK is well-suited for ASP.NET applications and backend apps. The client-side SDK is designed for Blazor WebAssembly, MAUI, WPF, Console, WinForms, etc. FeatBit separates the client-side SDK from the server-side SDK to enhance the experience of using feature flags in each type of application.

Both Microsoft.FeatureManagement and FeatBit support multiple .NET versions and will continue to expand their support for future .NET versions.

Other Programming Languages and Frameworks

The Microsoft Feature Flag Management service (Microsoft.FeatureManagement combined with Azure App Configuration) supports both .NET and Spring Boot.

FeatBit is an open-source feature flags service that supports various programming languages and frameworks, such as .NET, Java, Node.js, Python, Go, Next.js, and so on. FeatBit provides SDKs for these programming languages to implement feature flags.

Ease of Use

Installation for .NET Applications

For application-side libraries, both Microsoft.FeatureManagement and FeatBit can be installed via the NuGet package manager.

To control feature flags remotely, you need to create an account on the Azure Portal for Microsoft.FeatureManagement or build your own Custom Feature Providers.

With FeatBit, you need to either self-host the FeatBit server or use its online service. FeatBit provides multiple hosting options for its server, including Docker Compose, Kubernetes, Azure, AWS, etc.

Server Dependency

Microsoft.FeatureManagement can be easily implemented with a configuration file (appsettings.json) without server dependencies. However, for remote control of feature flags, it requires connection to the Azure App Configuration service or a custom feature provider.

FeatBit's SDKs can operate without a server connection, but a FeatBit server is still necessary to fully realize optimal feature flag management. This is because feature flag management scenarios typically need to be managed and controlled server-side.

Coding Experience

Learning Curve and Flexibility

Microsoft.FeatureManagement is flexible but has a steep learning curve. You need to understand several concepts such as Feature Filter and Context For Feature Evaluation to implement custom feature flag evaluations.

FeatBit offers a more straightforward approach to implementing feature flags, providing a real-time mechanism to stay up-to-date with feature flag changes. While it may not be as flexible on the application side, it offers flexibility on the server side with a user-friendly interface to customize your feature flag evaluation rules.

Asp.Net Core Integration

Microsoft.FeatureManagement integrates seamlessly with ASP.NET server applications and includes many helpful features for ASP.NET developers, such as:

  • A FeatureGateAttribute to enable or disable a controller or action based on a feature flag.
  • In MVC views, <feature> tags can be used to conditionally render content depending on whether a feature is enabled.
  • MVC Filters can be configured to execute conditionally based on the state of a feature.
  • MVC Razor pages can require that a specific feature, or one from a list of features, be enabled to execute.

FeatBit provides a more generic approach to implementing feature flags in ASP.NET applications. It lacks specialized syntax tailored for ASP.NET developers but offers a real-time update mechanism crucial for environments like Kubernetes, where multiple pods need consistent feature flag states for each user.

Client Side Integration

The Microsoft.FeatureManagement library supports all client-side integrations but lacks comprehensive documentation and examples. It does not have a real-time feature flag update mechanism.

FeatBit's client SDK supports all client-side integrations with thorough documentation and examples. Currently, it uses a polling mechanism to fetch the feature flag state but plans to support real-time updates in the future.

Features

Advanced Targeting

Microsoft.FeatureManagement allows setting up targeting rules based on user name and group ID. It also allows the rollout of feature flags to a percentage of users. We can set a scheduled time range to change the feature flag states.

FeatBit's targeting rules include all the features that Microsoft.FeatureManagement offers, and more. For example:

  • FeatBit allows setting up targeting rules based on user attributes, such as user ID, email, group, age, device, location, and any other custom attributes.
  • FeatBit offers reusable segments, which are predefined sets of rules that can be reused across multiple feature flags.
  • FeatBit provides a global user management system that can be shared across multiple projects and environments.
  • FeatBit offers organization-level reusable segments that can be shared across multiple projects and environments.
  • FeatBit also offers other advanced comparing conditions and dispatch methods that provide more flexible control over feature flag states.

Real-time Update

FeatBit provides a WebSocket connection between the .NET Server-side SDK and the FeatBit server, allowing the feature flag state to be updated in real-time. Many client SDKs provided by FeatBit also support real-time updates.

Currently, FeatBit's feature flag .NET Client-side SDK supports only a polling mechanism to retrieve the feature flag state. It will be updated to support real-time updates in the future.

Microsoft.FeatureManagement does not provide a real-time update mechanism; you need to implement your own mechanism to update the feature flag state.

Real-time updates are essential in several scenarios, such as when running in Kubernetes-like environments, where multiple pods need to maintain a consistent feature flag state.

Project and Environment Management

In Azure App Configuration, projects and environments cannot be managed within a single Azure App Configuration resource. You need to create multiple resources for each project and environment. It is also challenging to move configurations between environments or projects.

In FeatBit, you can create multiple organizations, projects, and environments within a single FeatBit service. You can easily move feature flags between environments or projects.

Access Control

FeatBit has an IAM system that allows you to control who can access the feature flag management system. You can set up roles and permissions for each user for each organization, project, environment, and even individual feature flags.

You can use Azure AD to control access to Azure App Configuration. However, you cannot control access to the feature flags themselves.

Audit Log

Both Microsoft Feature Management and FeatBit provide audit logs for each feature flag change. Azure App Configuration also allows you to restore the feature flag state to a previous version.

Variation Type and Number

In Microsoft Feature Management, you can only have one variation type, which is boolean. In FeatBit, you can have multiple variation types, such as boolean, string, number, and JSON. For types like string, number, and JSON, you can have multiple variations.

Rich Webhooks

FeatBit provides rich webhooks that can be triggered by changes to feature flags and segments. You can use these webhooks to:

  • Integrate with communication services such as Slack and Microsoft Teams.
  • Send deployment or release events to observability tools like Datadog and New Relic.
  • Trigger CI/CD pipelines to automate your deployment process.
  • And more.

Workflow: Triggers, Scheduling, Approval, and REST APIs

FeatBit offers a workflow system that allows you to set triggers, scheduling, approvals, and REST APIs for each feature flag. You can use this workflow system to:

  • Set up a release plan that executes automatically.
  • Automatically switch off or roll back a feature after detecting issues.
  • Schedule and execute marketing campaigns based on predefined timelines.
  • And more.

Development Ecosystem & Vendor Lock-in

Microsoft.FeatureManagement combined with Azure App Configuration can satisfy many feature flag management scenarios for .NET applications. However, many IT systems are not solely based on .NET; they also incorporate other programming languages and frameworks, especially as many front-end applications today are written in JavaScript. Thus, support for various programming languages and frameworks is crucial.

Besides .NET applications, FeatBit supports a wider range of programming languages and frameworks, including .NET, Java, Node.js, Python, Go, NextJs, etc. With FeatBit, you do not need to create .NET applications solely to pass feature flag states to your front-end applications.

FeatBit also provides Rich Webhooks and OpenAPI to integrate with other systems, such as CI/CD pipelines, observability tools, and communication services.

Importantly, FeatBit allows you to avoid vendor lock-in. You can host the FeatBit server on your own infrastructure. If your company needs to customize features to meet specific requirements, you can fork the FeatBit server and modify it.

Pricing & Limitations

FeatBit is 100% open source with an MIT license. You can use the community edition for free. If you're extensively integrating feature flags into your company, self-hosting FeatBit can save you a significant amount of money.

FeatBit is designed to be fast and scalable, enabling you to easily surpass the usage limitations of Azure App Configuration.

If you require advanced features, such as SSO, scheduling, global user management, etc., you can purchase the enterprise edition.

However, hosting FeatBit on Azure may save customers more money while also generating additional revenue for Azure, as users might utilize other Azure services alongside hosting the FeatBit server.

FeatBit, a provider for Microsoft.FeatureManagement

Implementing a custom feature provider enables developers to pull feature flags from sources such as a database or a feature management service.

FeatBit is planning to provide a custom feature provider for Microsoft.FeatureManagement. This will allow developers to use FeatBit as a feature flag management service for Microsoft.FeatureManagement. This will provide a more flexible and scalable solution for feature flag management of .NET applications.

Conclusion

In comparing Microsoft Feature Management and FeatBit for .NET feature flag management, FeatBit emerges as a more versatile and cost-effective option. It supports a broader range of programming languages and offers more advanced targeting and real-time updates. Microsoft's solution is tightly integrated with its ecosystem, which could be beneficial for existing Azure users but also introduces potential vendor lock-in. FeatBit's open-source nature and flexibility in hosting options make it especially attractive for diverse and scalable application environments, providing a strong alternative for companies seeking comprehensive feature management solutions.

They're both the children of the .NET ecosystem, and they both have their own strengths and weaknesses. You should choose the one that best fits your needs and requirements.