Lezen in het Engels

Delen via


Overzicht van Azure SDK voor .NET-protocol en gemaksmethoden

De Azure SDK-clientbibliotheken bieden een interface voor Azure-services door methodeaanroepen te vertalen naar berichten die via het respectieve serviceprotocol worden verzonden. Voor REST API-services betekent dit het verzenden van HTTP-aanvragen en het converteren van de antwoorden naar runtimetypen. In dit artikel leert u meer over de verschillende typen methoden die door de clientbibliotheken worden weergegeven en verkent u hun implementatiepatronen.

Protocol- en gemaksmethoden begrijpen

Een Azure SDK voor .NET-clientbibliotheek kan twee verschillende categorieën methoden beschikbaar maken om aanvragen te doen voor een Azure-service:

  • Protocolmethoden bieden een thin wrapper rond de onderliggende REST API voor een bijbehorende Azure-service. Met deze methoden worden primitieve invoerparameters toegewezen aan HTTP-aanvraagwaarden en wordt een onbewerkt HTTP-antwoordobject geretourneerd.
  • Gemaksmethoden bieden een gemakslaag boven de protocollaag op lager niveau om ondersteuning toe te voegen voor het .NET-typesysteem en andere voordelen. Gemaksmethoden accepteren primitieven of .NET-modeltypen als parameters en wijzen deze toe aan de hoofdtekst van een onderliggende REST API-aanvraag. Deze methoden verwerken ook verschillende details van aanvraag- en antwoordbeheer, zodat ontwikkelaars zich kunnen richten op het verzenden en ontvangen van gegevensobjecten, in plaats van problemen op lager niveau.

Afhankelijkheidspatronen voor Azure SDK-clientbibliotheek

Protocol- en gemaksmethoden implementeren enigszins verschillende patronen op basis van de onderliggende pakketafhankelijkheidsketen van de respectieve bibliotheek. Een Azure SDK voor .NET-clientbibliotheek is afhankelijk van een van de twee verschillende basisbibliotheken:

  • Azure.Core biedt gedeelde primitieven, abstracties en helpers voor het bouwen van moderne Azure SDK-clientbibliotheken. Deze bibliotheken volgen de Ontwerprichtlijnen voor Azure SDK voor .NET en gebruiken pakketnamen en naamruimten die voorafgegaan zijn door Azure, zoals Azure.Storage.Blobs.
  • System.ClientModel is een kernbibliotheek die gedeelde primitieven, abstracties en helpers biedt voor .NET-serviceclientbibliotheken. De System.ClientModel bibliotheek is een hulpmiddelenset voor algemeen gebruik die is ontworpen om bibliotheken te bouwen voor verschillende platforms en services, terwijl de bibliotheek speciaal is ontworpen voor het Azure.Core bouwen van Azure-clientbibliotheken.

Notitie

De Azure.Core bibliotheek zelf is ook afhankelijk System.ClientModel van verschillende clientbouwstenen. In de context van dit artikel is de belangrijkste differentiator voor methodepatronen of een clientbibliotheek afhankelijk is van Azure.Core of System.ClientModel rechtstreeks, in plaats van via een transitieve afhankelijkheid.

In de volgende tabel worden enkele van de aanvraag- en antwoordtypen vergeleken die worden gebruikt door protocol- en gemaksmethoden, afhankelijk van of de bibliotheek afhankelijk is van Azure.Core of System.ClientModel.

Aanvraag- of antwoordprobleem Azure.Core System.ClientModel
Aanvraagtekst RequestContent BinaryContent
Geavanceerde aanvraagopties RequestContext RequestOptions
Onbewerkt HTTP-antwoord Response PipelineResponse
Retourtype met uitvoermodel Response<T> ClientResult<T>

De volgende secties bevatten implementatievoorbeelden van deze concepten.

Voorbeelden van protocol- en gemaksmethode

De coderingspatronen en -typen die worden gebruikt door het clientbibliotheekprotocol en de gemaksmethoden variëren enigszins op basis van of afhankelijk van Azure.Core System.ClientModelde bibliotheek. De verschillen zijn voornamelijk van invloed op de .NET-typen die worden gebruikt voor het verwerken van aanvraag- en antwoordgegevens.

Bibliotheken die afhankelijk zijn van Azure.Core

Azure SDK-clientbibliotheken die voldoen aan de nieuwste ontwerprichtlijnen , zijn afhankelijk van de Azure.Core bibliotheek. De Azure.AI.ContentSafety bibliotheek is bijvoorbeeld afhankelijk van de Azure.Core bibliotheek en biedt een ContentSafetyClient klasse die zowel protocol- als gemaksmethoden beschikbaar maakt.

De volgende code maakt gebruik van een ContentSafetyClient methode voor het aanroepen van de AnalyzeText gemaksmethode:

C#
using Azure.AI.ContentSafety;
using Azure.Identity;

// Create the client
ContentSafetyClient client = new(
    new Uri("https://contentsafetyai.cognitiveservices.azure.com/"),
    new DefaultAzureCredential());

// Call the convenience method
AnalyzeTextResult result = client.AnalyzeText("What is Microsoft Azure?");

// Display the results
foreach (TextCategoriesAnalysis item in result.CategoriesAnalysis)
{
    Console.WriteLine($"{item.Category}: {item.Severity}");
}

De voorgaande code demonstreert de volgende Azure.Core gemaksmethodepatronen:

  • Maakt gebruik van een standaard C#-primitieve of modeltype als parameter.
  • Retourneert een vriendelijk C#-type dat het resultaat van de bewerking aangeeft.

Bibliotheken die afhankelijk zijn van System.ClientModel

Sommige clientbibliotheken die verbinding maken met niet-Azure-services gebruiken patronen die vergelijkbaar zijn met de bibliotheken die afhankelijk Azure.Corezijn van. De bibliotheek biedt bijvoorbeeld OpenAI een client die verbinding maakt met de OpenAI-services. Deze bibliotheken zijn gebaseerd op een bibliotheek System.ClientModel die patronen bevat die vergelijkbaar zijn met Azure.Core.

Houd rekening met de volgende code die gebruikmaakt van een ChatClient methode voor het aanroepen van de CompleteChat gemaksmethode:

C#
using OpenAI.Chat;

// Create the client
ChatClient client = new(
    model: "gpt-4o-mini",
    credential: Environment.GetEnvironmentVariable("OPENAI_API_KEY")!);

// Call the convenience method
ChatCompletion completion = client.CompleteChat("What is Microsoft Azure?");

// Display the results
Console.WriteLine($"[{completion.Role}]: {completion}");

De voorgaande code demonstreert de volgende System.ClientModel gemaksmethodepatronen:

  • Maakt gebruik van een standaard C#-primitieve of modeltype als parameter.
  • Retourneert een ClientResult type dat het resultaat van de bewerking aangeeft.

Uitzonderingen verwerken

Wanneer een serviceaanroep mislukt, genereert de serviceclient een uitzondering die de HTTP-statuscode en de details van het serviceantwoord weergeeft, indien beschikbaar. Een System.ClientModel-afhankelijke bibliotheek genereert een ClientResultException, terwijl een Azure.Coreafhankelijke bibliotheek een RequestFailedException.

C#
using Azure.AI.ContentSafety;
using Azure.Identity;
using Azure;

// Create the client
ContentSafetyClient client = new(
    new Uri("https://contentsafetyai.cognitiveservices.azure.com/"),
    new DefaultAzureCredential());

try
{
    // Call the convenience method
    AnalyzeTextResult result = client.AnalyzeText("What is Microsoft Azure?");

    // Display the results
    foreach (TextCategoriesAnalysis item in result.CategoriesAnalysis)
    {
        Console.WriteLine($"{item.Category}: {item.Severity}");
    }
} 
catch (RequestFailedException ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

Richtlijnen voor protocol- en gemaksmethodegebruik

Hoewel de Azure SDK voor .NET-clientbibliotheken de mogelijkheid bieden om protocol- of gemaksmethoden te gebruiken, kunt u prioriteit geven aan het gebruik van gemaksmethoden in de meeste scenario's. Gemaksmethoden zijn ontworpen om de ontwikkelervaring te verbeteren en flexibiliteit te bieden voor het ontwerpen van aanvragen en het verwerken van reacties. Beide methodetypen kunnen echter indien nodig in uw app worden gebruikt. Houd rekening met de volgende criteria bij het bepalen welk type methode u wilt gebruiken.

Handige methoden:

  • Hiermee kunt u werken met meer beschrijvende methodeparameter- en antwoordtypen.
  • Verschillende problemen en optimalisaties op laag niveau voor u afhandelen.

Protocolmethoden:

  • Toegang bieden tot typen op lager niveau, zoals RequestContext en RequestOptions, die niet beschikbaar zijn via gemaksmethoden.
  • Toegang tot functies van de onderliggende REST API's inschakelen die niet beschikbaar zijn voor gemaksmethoden.
  • U kunt uw eigen gemaksmethoden maken rond service-eindpunten die nog geen handige methoden hebben. Voor deze aanpak moet u de REST API-documentatie van de service begrijpen om aanvragen en antwoorden correct te verwerken.

Zie ook

Informatie over de Azure Core-bibliotheek voor .NET