初始化开发工具包

云眼About 8 min

初始化开发工具包

本主题介绍如何在应用程序中初始化云眼灰度实验 C# SDK。

使用生成器初始化 C# SDK,并实例化公开 API 方法。

版本

SDK 4.0.0 及更高版本

描述

构造函数接受配置对象来配置云眼灰度实验。

某些参数是可选的,因为 SDK 提供默认实现,但开发者可能希望为生产环境覆盖这些参数。例如,开发者可能希望覆盖这些内容以设置错误处理程序记录器来捕获问题,设置事件调度程序来管理网络调用,以及设置用户配置文件服务以确保粘性分桶。

参数

下表列出了 C# 中的必需参数和可选参数。

参数类型描述
datafile(可选)字符串表示项目的 JSON 字符串。
configManager (可选)项目配置管理器项目配置管理器向客户端提供项目配置。
eventDispatcher(可选)IEventDispatcher用于管理网络调用的事件处理程序。
Logger(可选)ILogger用于记录问题的记录器实现。
errorHandler(可选)IErrorHandler用于处理错误的错误处理程序对象。
userProfileService(可选)userProfileService用户配置文件服务。
skipJsonValidation(可选)布尔指定是否应验证JSON。设置为true以跳过架构上的 JSON 验证,或false来执行验证。
datafile_access_token(可选)字符串(仅限服务器端)云眼灰度实验 SDK 可以使用访问令牌(与 sdk 密钥结合使用)从经过身份验证的终结点提取数据文件。在 Eyeofcloud 应用程序中的“设置>环境”中找到数据文件访问令牌。选择安全环境,然后复制数据文件访问令牌。
defaultDecideOptions(可选)数组EyeofcloudDecideOption枚举的数组.当使用此参数构造 Eyeofcloud 客户端时,它会设置默认的 decide 选项,这些选项将应用于在 Eyeofcloud 客户端的生命周期内进行的所有 Decide 调用。此外,还可以将选项传递给各个 Decide 方法(不会覆盖默认值)。有关决定选项的详细信息,请参阅云眼决策选项

返回

实例化 Eyeofcloud 类的实例。

自动数据文件管理 (ADM)

云眼灰度实验提供了开箱即用的功能,用于动态管理客户端或服务器上的数据文件(配置文件)。C# SDK 提供了云眼ProjectConfigManager.该软件包还包括一个工厂类 EyeofcloudFactory,可以结合 HttpProjectConfigManager的默认配置来实例化 Eyeofcloud灰度发布 SDK。

每当实验配置发生更改时,SDK 都会使用自动数据文件管理 (ADM) 来为你处理更改。在 C# SDK 中,可以提供sdkKeydatafile的其中之一或两者兼而有之。

  • 仅使用 SDK 密钥初始化时,SDK 将定期在后台轮询数据文件更改。
  • 仅使用数据文件初始化时,SDK 不会在后台轮询数据文件更改。
  • 同时使用 SDK 密钥和数据文件进行初始化时,SDK 将使用给定的数据文件,并在后台开始轮询数据文件更改。

基本示例

下面的代码示例演示基本的 C# ADM 用法。

C#

using EyeofcloudSDK;  

public class App 
{     
    public static void Main(string[] args)     
    {         string sdkKey = args[0];
              Eyeofcloud eyeofcloud = EyeofcloudFactory.NewDefaultInstance(sdkKey);     
    } 
}

高级示例

🚧 重要

如果要配置记录器,请确保也将其传递到ProjectConfigManager实例中。

在 C# SDK 中,只需传递 SDK 密钥值即可实例化客户端。每当实验配置发生更改时,SDK 都会为你处理更改。

sdkKey作为字符串属性,包含在传递给 createInstance方法的选项对象中。

当您提供sdkKey时,SDK 实例将下载与该sdkKey关联的数据文件。下载完成后,SDK 实例会自行更新以使用下载的数据文件。

🚧 重要

将所有组件(记录器、错误处理程序、通知中心)传递给云眼灰度实验构造函数。不传递组件将无法启用其各自的功能。换句话说,组件仅在传递给构造函数时才有效。

C#

// Initialize with SDK key and default configuration 
var sdkKey = "<Your_SDK_Key>" // replace with your own SDK Key 
Eyeofcloud eyeofcloud = EyeofcloudFactory.newDefaultInstance(sdkKey);  

// You can also customize the SDK instance with custom configuration. In this example we are customizing the project config manager to poll every 5 minutes for the datafile. 
var projectConfigManager =   new HttpProjectConfigManager.Builder()     
    .WithSdkKey(sdkKey)     
    .WithPollingInterval(TimeSpan.FromMinutes(5))  
    // .WithLogger(logger) - this is needed if you are configuring a logger for the eyeofcloud instance 
    // .WithErrorHandler(errorHandler) - this is needed if you are configuring an errorhandler for the eyeofcloud instance. 
    // .WithNotificationCenter(notificationCenter) this is needed if you are subscribing config update     
    .Build();  
    
var Eyeofcloud = new Eyeofcloud(projectConfigManager);  

// Initialize with Logger 
var Eyeofcloud = new Eyeofcloud(projectConfigManager, logger: logger);  

// Initialize with Logger, ErrorHandler 
var Eyeofcloud = new Eyeofcloud(projectConfigManager, errorHandler: errorHandler, logger: logger);  

// Initialize with NotificationCenter, Logger, ErrorHandler
var Eyeofcloud = new Eyeofcloud(projectConfigManager, notificationCenter: NotificationCenter, errorHandler: errorHandler, logger: logger);  

// Note: Use EyeofcloudFactory NewDefaultInstance method to use same logger, errorHandler and notificationCenter for all of its Components (Eyeofcloud, EventProcessor, HttpProjectConfigManager)

下面是显示 C# ADM 高级配置的代码示例。 以下各节介绍了高级配置属性。此高级示例演示如何直接构造各个组件以覆盖各种配置。这使可以完全控制要使用的实现以及如何使用它们。

C#

using EyeofcloudSDK; 
using EyeofcloudSDK.Config;  
public class App 
{     
    public static void Main(string[] args)     
    {         
        string sdkKey = args[0];         
        
        // You can also use your own implementation of the ProjectConfigManager interface         
        ProjectConfigManager projectConfigManager = new HttpProjectConfigManager.Builder()        
            .WithSdkKey(sdkKey)        
            .WithPollingInterval(TimeSpan.FromMinutes(1))        
            .Build();         
        Eyeofcloud eyeofcloud = new Eyeofcloud(configManager);     
    } 
}

HttpProjectConfigManager

HttpProjectConfigManager是抽象的[PollingProjectConfigManager]的实现。Poll方法已扩展,并向配置的 URL发出 HTTP GET请求,以异步下载项目数据文件并初始化ProjectConfig实例.

默认情况下,将HttpProjectConfigManager阻塞,直到第一次成功检索数据文件,直到可配置的超时。使用HttpProjectConfigManager.Builder设置轮询方法的频率和阻塞超时。

C#

ProjectConfigManager projectConfigManager =         new HttpProjectConfigManager.Builder()      
    .WithSdkKey(sdkKey)      
    .WithPollingInterval(TimeSpan.FromMinutes(1))      
    .Build();

开发工具包密钥

SDK 密钥用于将出站 HTTP 请求撰写到云眼 cdn 上的默认数据文件位置。

轮询间隔

轮询间隔用于指定数据文件的连续 HTTP 请求之间的固定延迟。有效间隔持续时间介于 1 到 4294967294 毫秒之间。

初始数据文件

可以通过构建器提供初始数据文件来引导ProjectConfigManager,以便可以立即使用它而不会阻止执行。如果无法建立 HTTP 连接,初始数据文件还用作回退数据文件。这在无法保证互联网连接的移动环境中很有用。

初始数据文件将在第一次成功的数据文件轮询后被丢弃。

生成器方法

使用以下构建器方法自定义HttpProjectConfigManager配置。

属性默认值描述
WithDatafile(String)null初始数据文件,通常来自本地缓存源
WithUrl(string)null用于为 Eyeofcloud 数据文件指定自定义 HTTP 源的 URL 覆盖位置
withFormat(字符串)null按开发工具包密钥参数化数据文件 URL
WithPollingInterval(TimeSpan)5 分钟修复了数据文件回迁之间的延迟
WithBlockingTimeoutPeriod(TimeSpan)15 秒等待初始引导的最长时间。有效超时持续时间为 1 到 4294967294 毫秒。
WithSdkKey(string)null云眼灰度实验项目SDK密钥;必需,除非源 URL 被覆盖

更新配置通知

每当获取新的数据文件时,都会触发通知信号。要订阅这些通知,请使用方法NotificationCenter.AddNotification()

C#

eyeofcloud.NotificationCenter.AddNotification(     
    NotificationCenter.NotificationType.EyeofcloudConfigUpdate,     
    () => Console.WriteLine("Received new datafile configuration") );

云眼工厂

EyeofcloudFactory 提供了基本的实用程序,以最少数量的配置选项实例化 Eyeofcloudopen in new window 功能实验 SDK。

EyeofcloudFactory 不会捕获所有配置和初始化选项。有关更多用例,请使用其构造函数构建资源。

必须在运行时直接通过工厂方法提供 SDK 密钥:

C#

Eyeofcloud eyeofcloud = EyeofcloudFactory.NewDefaultInstance(SDK_KEY);

使用数据文件实例化

还可以使用硬编码的数据文件进行实例化。如果不传入 SDK 密钥,云眼客户端将不会自动同步较新版本的数据文件。每次检索更新的数据文件时,只需重新实例化同一客户端即可。

对于简单的应用程序,实例化客户端所需提供的只是一个数据文件,该文件指定给定环境的项目配置。对于大多数高级实现,需要根据特定要求自定义记录器错误处理程序

C#

using EyeofcloudSDK;  

// Instantiate an Eyeofcloud client 
var datafile = "<Datafile_JSON_string>";
var EyeofcloudClient = new Eyeofcloud(datafile);

在安全环境中使用经过身份验证的数据文件

📘 注意

安全数据文件处于测试阶段。如果有兴趣成为经过身份验证的数据文件的早期用户,作为测试版安全环境功能的一部分,请联系客户成功经理。

可以使用服务器端(仅限)云眼灰度实验 SDK 从经过身份验证的终结点提取数据文件。要使用经过身份验证的数据文件,请从设置>环境中Eyeofcloud 应用程序open in new window下载环境的访问令牌。选择安全环境,然后复制_数据文件访问令牌_。下面的示例显示了如何使用访问令牌和sdk_key初始化 Eyeofcloud 客户端,使客户端能够获取经过身份验证的数据文件并完成初始化。

C#

// fetch the datafile from an authenticated endpoint 
var datafileAccessToken = "<YOUR_DATAFILE_ACCESS_TOKEN>";
var sdkKey = "<YOUR_SKD_KEY>";  

var eyeofcloudClient = EyeofcloudFactory.NewDefaultInstance(sdkKey, null, datafileAccessToken);
Last update:
Contributors: zhangweixue