Delat Azure Core-klientbibliotek för .NET – version 1.30.0
Azure.Core tillhandahåller delade primitiver, abstraktioner och hjälpfunktioner för moderna .NET Azure SDK-klientbibliotek.
Dessa bibliotek följer Riktlinjerna för Azure SDK-design för .NET och kan enkelt identifieras med paket- och namnområdesnamn som börjar med "Azure", t.ex. Azure.Storage.Blobs
.
En mer fullständig lista över klientbibliotek som använder Azure.Core finns här.
Med Azure.Core kan klientbibliotek exponera vanliga funktioner på ett konsekvent sätt, så att du när du lär dig hur du använder dessa API:er i ett klientbibliotek vet hur du använder dem i andra klientbibliotek.
Källkod | Paket (NuGet) | API-referensdokumentation
Komma igång
Vanligtvis behöver du inte installera Azure.Core. Det installeras åt dig när du installerar ett av klientbiblioteken med hjälp av det. Om du vill installera det explicit (till exempel för att implementera ditt eget klientbibliotek) kan du hitta NuGet-paketet här.
Viktiga begrepp
De viktigaste delade begreppen i Azure.Core (och så Azure SDK-bibliotek med Hjälp av Azure.Core) är:
- Konfigurera tjänstklienter, t.ex. konfigurera återförsök, logga (
ClientOptions
). - Åtkomst till HTTP-svarsinformation (
Response
,Response<T>
). - Anropar långvariga åtgärder (
Operation<T>
). - Växling och asynkrona strömmar (
AsyncPageable<T>
). - Undantag för att rapportera fel från tjänstbegäranden på ett konsekvent sätt. (
RequestFailedException
). - Anpassa begäran (
RequestContext
). - Abstraktioner för att representera Azure SDK-autentiseringsuppgifter. (
TokenCredentials
).
Nedan hittar du avsnitt som förklarar dessa delade begrepp i detalj.
Trådsäkerhet
Vi garanterar att alla klientinstansmetoder är trådsäkra och oberoende av varandra (riktlinje). Detta säkerställer att rekommendationen att återanvända klientinstanser alltid är säker, även över trådar.
Ytterligare begrepp
Klientalternativ | Åtkomst till svaret | Långvariga åtgärder | Hantera fel | Diagnostik | Gäckande | Klientlivslängd
Exempel
OBSERVERA: Exempel i den här filen gäller endast för paket som följer Riktlinjerna för Azure SDK-design. Namnen på sådana paket börjar vanligtvis med Azure
.
Konfigurera tjänstklienter med ClientOptions
Azure SDK-klientbibliotek exponerar vanligtvis en eller flera tjänstklienttyper som är de viktigaste startpunkterna för att anropa motsvarande Azure-tjänster.
Du kan enkelt hitta dessa klienttyper när deras namn slutar med ordet Klient.
Kan till exempel BlockBlobClient
användas för att anropa bloblagringstjänsten och KeyClient
kan användas för att komma åt Key Vault kryptografiska nycklar för tjänsten.
Dessa klienttyper kan instansieras genom att anropa en enkel konstruktor eller dess överlagring som tar olika konfigurationsalternativ.
De här alternativen skickas som en parameter som utökar klassen som exponeras ClientOptions
av Azure.Core.
Olika tjänstspecifika alternativ läggs vanligtvis till i dess underklasser, men en uppsättning SDK-alternativ är tillgängliga direkt på ClientOptions
.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay = TimeSpan.FromSeconds(2),
MaxRetries = 10,
Mode = RetryMode.Fixed
},
Diagnostics =
{
IsLoggingContentEnabled = true,
ApplicationId = "myApplicationId"
}
};
SecretClient client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential(), options);
Mer information om klientkonfiguration i klientkonfigurationsexempel
Komma åt HTTP-svarsinformation med hjälp av Response<T>
Tjänstklienter har metoder som kan användas för att anropa Azure-tjänster. Vi refererar till dessa tjänstmetoder för klientmetoder.
Tjänstmetoder returnerar en delad Azure.Core-typ Response<T>
(i sällsynta fall dess icke-generiska syskon, en rå Response
).
Den här typen ger åtkomst till både det deserialiserade resultatet av tjänstanropet och till information om HTTP-svaret som returneras från servern.
// create a client
var client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential());
// call a service method, which returns Response<T>
Response<KeyVaultSecret> response = await client.GetSecretAsync("SecretName");
// Response<T> has two main accessors.
// Value property for accessing the deserialized result of the call
KeyVaultSecret secret = response.Value;
// .. and GetRawResponse method for accessing all the details of the HTTP response
Response http = response.GetRawResponse();
// for example, you can access HTTP status
int status = http.Status;
// or the headers
foreach (HttpHeader header in http.Headers)
{
Console.WriteLine($"{header.Name} {header.Value}");
}
Mer information om svarstyper i svarsexempel
Konfigurera konsolloggning
Om du vill skapa en Azure SDK-logglyssnare som matar ut meddelanden till konsolen använder du AzureEventSourceListener.CreateConsoleLogger
metoden .
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
Mer information om loggning i diagnostikexempel
Rapporteringsfel RequestFailedException
När ett tjänstanrop misslyckas Azure.RequestFailedException
utlöses. Undantagstypen tillhandahåller en statusegenskap med en HTTP-statuskod och en ErrorCode-egenskap med en tjänstspecifik felkod.
try
{
KeyVaultSecret secret = client.GetSecret("NonexistentSecret");
}
// handle exception with status code 404
catch (RequestFailedException e) when (e.Status == 404)
{
// handle not found error
Console.WriteLine("ErrorCode " + e.ErrorCode);
}
Mer information om hur du hanterar svar i svarsexempel
Använda tjänstmetoder som returneras AsyncPageable<T>
Om ett tjänstanrop returnerar flera värden på sidor returneras Pageable<T>/AsyncPageable<T>
det som ett resultat. Du kan iterera direkt AsyncPageable
eller på sidor.
// call a service method, which returns AsyncPageable<T>
AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync();
await foreach (SecretProperties secretProperties in allSecretProperties)
{
Console.WriteLine(secretProperties.Name);
}
Mer information om sidsvar finns i Sidnumrering med Azure SDK för .NET.
Använda Long-Running åtgärder med Operation<T>
Vissa åtgärder tar lång tid att slutföra och kräver avsökning för deras status. Metoder som startar långvariga åtgärder returnerar *Operation<T>
typer.
Metoden WaitForCompletionAsync
är ett enkelt sätt att vänta på att åtgärden slutförs och få det resulterande värdet.
// create a client
SecretClient client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential());
// Start the operation
DeleteSecretOperation operation = await client.StartDeleteSecretAsync("SecretName");
Response<DeletedSecret> response = await operation.WaitForCompletionAsync();
DeletedSecret value = response.Value;
Console.WriteLine(value.Name);
Console.WriteLine(value.ScheduledPurgeDate);
Mer information om långvariga åtgärder i långvariga åtgärdsexempel
Anpassa begäran med hjälp av RequestContext
Förutom allmän konfiguration av tjänstklienter via ClientOptions
kan du anpassa begäranden som skickas av tjänstklienter med hjälp av protokollmetoder eller bekvämlighets-API:er som exponeras RequestContext
som en parameter.
var context = new RequestContext();
context.AddClassifier(404, isError: false);
Response response = await client.GetPetAsync("pet1", context);
Mer om anpassning av begäran i RequestContext-exempel
Gäckande
En av de viktigaste övergripande funktionerna i våra nya klientbibliotek med Hjälp av Azure.Core är att de är utformade för att håna. Modellering aktiveras av:
- tillhandahålla en skyddad parameterlös konstruktor för klienttyper.
- göra tjänstmetoder virtuella.
- tillhandahåller API:er för att konstruera modelltyper som returneras från virtuella tjänstmetoder. Om du vill hitta de här fabriksmetoderna letar du efter typer med ModelFactory-suffixet, t.ex. .
SecretModelFactory
Metoden ConfigurationClient.Get kan till exempel hånas (med Moq) på följande sätt:
// Create a mock response
var mockResponse = new Mock<Response>();
// Create a mock value
var mockValue = SecretModelFactory.KeyVaultSecret(
SecretModelFactory.SecretProperties(new Uri("http://example.com"))
);
// Create a client mock
var mock = new Mock<SecretClient>();
// Setup client method
mock.Setup(c => c.GetSecret("Name", null, default))
.Returns(Response.FromValue(mockValue, mockResponse.Object));
// Use the client mock
SecretClient client = mock.Object;
KeyVaultSecret secret = client.GetSecret("Name");
Mer om att håna i hånexempel
Distribuerad spårning med Application Insights
Funktionen Application Insights i Azure Monitor är en utökningsbar APM-tjänst (Application Performance Management) för utvecklare och DevOps-utvecklare. Använd den för att övervaka dina liveprogram. Den identifierar automatiskt prestandaavvikelser och innehåller kraftfulla analysverktyg som hjälper dig att diagnostisera problem och förstå vad användarna faktiskt gör med din app
Om ditt program redan använder ApplicationInsights stöds automatisk insamling av Azure SDK-spårningar sedan version 2.12.0
.
Om du vill konfigurera ApplicationInsights-spårning för ditt program följer du guiden Starta övervakningsprogram .
Mer information om diagnostik i diagnostikexempel.
Felsökning
Tre huvudsakliga sätt att felsöka fel är att inspektera undantag, aktivera loggning och distribuerad spårning
Nästa steg
Utforska och installera tillgängliga Azure SDK-bibliotek.
Bidra
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.
När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång i alla lagringsplatser med vår CLA.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.