你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 .NET 的 Azure 架构注册表客户端库 - 版本 1.3.0

Azure 架构注册表是由 Azure 事件中心 托管的架构存储库服务,提供架构存储、版本控制和管理。 序列化程序利用注册表来减小有效负载大小,同时使用架构标识符(而不是完整架构)描述有效负载结构。

入门

安装包

使用 NuGet 安装适用于 .NET 的 Azure 架构注册表客户端库:

dotnet add package Azure.Data.SchemaRegistry

先决条件

如果需要创建事件中心命名空间,可以使用 Azure 门户或Azure PowerShell

可以使用 Azure PowerShell 通过以下命令创建事件中心命名空间:

New-AzEventHubNamespace -ResourceGroupName myResourceGroup -NamespaceName namespace_name -Location eastus

验证客户端

若要与 Azure 架构注册表服务交互,需要创建 架构注册表客户端 类的实例。 若要创建此客户端,需要 Azure 资源凭据和事件中心命名空间主机名。

获取凭据

若要获取优化凭据并开始与 Azure 资源交互,请参阅 此处的快速入门指南

获取事件中心命名空间主机名

最简单的方法是使用 Azure 门户并导航到事件中心命名空间。 在“概述”选项卡中,你将看到 Host name。 复制此字段中的值。

创建 SchemaRegistryClient

获得 Azure 资源凭据和事件中心命名空间主机名后,可以创建 SchemaRegistryClient。 还需要 Azure.Identity 包来创建凭据。

// Create a new SchemaRegistry client using the default credential from Azure.Identity using environment variables previously set,
// including AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, and AZURE_TENANT_ID.
// For more information on Azure.Identity usage, see: https://github.com/Azure/azure-sdk-for-net/blob/Azure.Data.SchemaRegistry_1.3.0/sdk/identity/Azure.Identity/README.md
var client = new SchemaRegistryClient(fullyQualifiedNamespace: fullyQualifiedNamespace, credential: new DefaultAzureCredential());

关键概念

架构

架构包含 6 个组件:

  • 组名称:架构注册表实例中架构组的名称。
  • 架构名称:架构的名称。
  • 架构 ID:架构注册表实例为架构分配的 ID。
  • 架构格式:用于架构序列化的格式。 例如,Avro。
  • 架构内容:架构的字符串表示形式。
  • 架构版本:分配给架构注册表实例中架构的版本。

这些组件扮演不同的角色。 有些用作操作的输入,有些用作输出。 目前, SchemaProperties 仅公开那些属性,这些属性是 SchemaRegistry 操作中使用的潜在输出。 这些公开的属性是 ContentId

线程安全

我们保证所有客户端实例方法都是线程安全的,并且相互独立, (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使跨线程也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期

示例

下面显示了通过 SchemaRegistryClient提供的内容的示例。 有同步和异步方法可用于这些客户端操作。

注册架构

注册要存储在 Azure 架构注册表中的架构。

string name = "employeeSample";
SchemaFormat format = SchemaFormat.Avro;
// Example schema's definition
string definition = @"
{
   ""type"" : ""record"",
    ""namespace"" : ""TestSchema"",
    ""name"" : ""Employee"",
    ""fields"" : [
    { ""name"" : ""Name"" , ""type"" : ""string"" },
    { ""name"" : ""Age"", ""type"" : ""int"" }
    ]
}";

Response<SchemaProperties> schemaProperties = client.RegisterSchema(groupName, name, definition, format);

检索架构 ID

从 Azure 架构注册表检索以前注册的架构 ID。

string name = "employeeSample";
SchemaFormat format = SchemaFormat.Avro;
// Example schema's content
string content = @"
{
   ""type"" : ""record"",
    ""namespace"" : ""TestSchema"",
    ""name"" : ""Employee"",
    ""fields"" : [
    { ""name"" : ""Name"" , ""type"" : ""string"" },
    { ""name"" : ""Age"", ""type"" : ""int"" }
    ]
}";

SchemaProperties schemaProperties = client.GetSchemaProperties(groupName, name, content, format);
string schemaId = schemaProperties.Id;

检索架构

使用架构 ID 或组名称、架构名称和版本从 Azure 架构注册表中检索以前注册的架构的内容。

SchemaRegistrySchema schema = client.GetSchema(schemaId);
string definition = schema.Definition;
SchemaRegistrySchema schema = client.GetSchema(groupName, name, version);
string definition = schema.Definition;

故障排除

在发现潜在问题时,会提供有关故障排除步骤的信息。

后续步骤

有关其他信息,请参阅 Azure 架构注册表

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。

曝光数