你当前正在访问 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 操作中使用的潜在输出。 这些公开的属性是 Content
和 Id
。
线程安全
我们保证所有客户端实例方法都是线程安全的,并且相互独立, (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使跨线程也是如此。
其他概念
客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期
示例
下面显示了通过 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 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。