How optimizely/csharp-sdk works
Optimizely’s C# SDK provides feature-flag and experimentation decisions, event tracking, and optional CMAB and ODP capabilities. The main workflow initializes a client with project data, creates a user context, evaluates flags or experiments, and can emit decision and conversion events. Configuration, bucketing, and event processing are distinct runtime stages. The README documents the public workflow; sampled source supports selected internal links, while unsampled subsystem links are omitted or marked unverified.
Main entry points: Optimizely.cs Optimizely Client · DecisionService.cs Decision Service · OdpManager.cs ODP Manager · OptimizelyFactory.cs Client Factory
Components 21
Client and Config
- Client Factory
OptimizelySDK/OptimizelyFactory.cs - Optimizely Client
OptimizelySDK/Optimizely.cs - Config Manager
OptimizelySDK/Config/HttpProjectConfigManager.cs - Project Config
OptimizelySDK/Config/DatafileProjectConfig.cs - Notifications
OptimizelySDK/Notifications/NotificationCenter.cs
Decision Runtime
- User Context
OptimizelySDK/OptimizelyUserContext.cs - Decision Service
OptimizelySDK/Bucketing/DecisionService.cs - Experiment Bucketer
OptimizelySDK/Bucketing/Bucketer.cs - Audience Evaluation
OptimizelySDK/AudienceConditions - Forced Decisions
OptimizelySDK/ForcedDecisionsStore.cs - User Profiles
OptimizelySDK/Bucketing/UserProfileService.cs
Event Delivery
- Event Builder
OptimizelySDK/Event/Builder/EventBuilder.cs - Event Processor
OptimizelySDK/Event/EventProcessor.cs - Event Dispatcher
OptimizelySDK/Event/Dispatcher/HttpClientEventDispatcher45.cs
Optional Integrations
- CMAB Service
OptimizelySDK/Cmab/DefaultCmabService.cs - ODP Manager
OptimizelySDK/Odp/OdpManager.cs - ODP Segments
OptimizelySDK/Odp/OdpSegmentManager.cs - ODP Event Manager
OptimizelySDK/Odp/OdpEventManager.cs
Other components
- SDK Consumer
- Event Endpoint
- ODP Event API
Connections 21
- SDK Consumer → Client Factory: initializes
README.md - Client Factory → Optimizely Client: creates
README.md - Optimizely Client → Config Manager: uses config
OptimizelySDK/Optimizely.cs - Config Manager → Project Config: parses datafile
OptimizelySDK/Config/HttpProjectConfigManager.cs - Optimizely Client → User Context: creates context
OptimizelySDK/Optimizely.cs - User Context → Decision Service: requests decisions
OptimizelySDK/Bucketing/DecisionService.cs - Decision Service → Experiment Bucketer: buckets users
OptimizelySDK/Bucketing/DecisionService.cs - Decision Service → CMAB Service: requests CMAB
OptimizelySDK/Bucketing/DecisionService.cs - Decision Service → User Profiles: uses profiles
OptimizelySDK/Bucketing/DecisionService.cs - Optimizely Client → Forced Decisions: sets overrides
README.md - Optimizely Client → Event Builder: builds events
OptimizelySDK/Optimizely.cs - Optimizely Client → Event Processor: processes events
OptimizelySDK/Optimizely.cs - Event Processor → Event Dispatcher: dispatches events
- Event Dispatcher → Event Endpoint: sends events
- Optimizely Client → ODP Manager: uses ODP
OptimizelySDK/Optimizely.cs - ODP Manager → ODP Segments: manages segments
OptimizelySDK/Odp/OdpManager.cs - ODP Manager → ODP Event Manager: manages events
OptimizelySDK/Odp/OdpManager.cs - ODP Event Manager → ODP Event API: sends batches
- Optimizely Client → Notifications: sends notifications
OptimizelySDK/Optimizely.cs - Project Config → Decision Service: supplies config
- Decision Service → Audience Evaluation: evaluates audiences