È stata rilasciata la versione 4 (V4) di! AWS SDK per .NET
Per informazioni su come apportare modifiche e migrare le applicazioni, consulta l'argomento sulla migrazione.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Support per HTTP 2 in AWS SDK per .NET
Alcuni AWS servizi e operazioni richiedono HTTP 2. Ad esempio, lo streaming bidirezionale in Amazon Transcribe Streaming non è possibile su HTTP 1.1 e quindi richiede invece HTTP 2. La versione 4 del supporto AWS SDK per .NET aggiunto per HTTP 2 consente di utilizzare queste operazioni nelle applicazioni. Per un'operazione HTTP 2 bidirezionale, il comportamento dell'SDK durante la ricezione di flussi è simile a quello di HTTP 1.1. Cioè, quando le applicazioni che utilizzano l'SDK inviano eventi al servizio, alla richiesta viene assegnato un editore assegnato dallo sviluppatore.
Per vedere questo comportamento in azione, considera il seguente esempio di Amazon Transcribe Streaming. Utilizza Amazon. TranscribeStreaminge Amazon. TranscribeStreaming.Namespace dei modelli.
In questo esempio, lo sviluppatore definisce la StartStreamTranscriptionRequest.AudioStreamPublisher
proprietà con una funzione di callback, che è.NET. Func
L'SDK utilizza il Func
defined for AudioStreamPublisher
per estrarre gli eventi dal codice dell'utente e trasmetterli all'utente. L'SDK chiama Func
finché non restituisce null.
Il codice dimostra come l'audio di un file può essere trasmesso in streaming ad Amazon Transcribe Streaming per l'elaborazione.
using Amazon; using Amazon.TranscribeStreaming; using Amazon.TranscribeStreaming.Model; CancellationTokenSource cancelSource = new CancellationTokenSource(); var client = new AmazonTranscribeStreamingClient(RegionEndpoint.USEast1); var startRequest = new StartStreamTranscriptionRequest { LanguageCode = LanguageCode.EnUS, MediaEncoding = MediaEncoding.Flac, MediaSampleRateHertz = 44100, NumberOfChannels = 2, EnableChannelIdentification = true }; Stream fileStream = File.OpenRead("hello-world.flac"); var buffer = new byte[1024 * 10]; startRequest.AudioStreamPublisher += async () => { var bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length); if (bytesRead == 0) return null; var audioEvent = new AudioEvent { AudioChunk = new MemoryStream(buffer, 0, bytesRead) }; return audioEvent; }; using var response = await client.StartStreamTranscriptionAsync(startRequest); Console.WriteLine(response.HttpStatusCode); response.TranscriptResultStream.ExceptionReceived += TranscriptResultStream_ExceptionReceived; response.TranscriptResultStream.TranscriptEventReceived += TranscriptResultStream_TranscriptEventReceived; void TranscriptResultStream_ExceptionReceived(object? sender, Amazon.Runtime.EventStreams.EventStreamExceptionReceivedArgs<TranscribeStreamingEventStreamException> e) { Console.WriteLine(e.EventStreamException.Message); cancelSource.Cancel(); } void TranscriptResultStream_TranscriptEventReceived(object? sender, Amazon.Runtime.EventStreams.EventStreamEventReceivedArgs<TranscriptEvent> e) { foreach (var result in e.EventStreamEvent.Transcript.Results) { if (!string.Equals("ch_0", result.ChannelId, StringComparison.OrdinalIgnoreCase)) continue; var text = result.Alternatives[0].Transcript; if (!string.IsNullOrEmpty(text)) { Console.WriteLine(text); } } } _ = response.TranscriptResultStream.StartProcessingAsync(); try { await Task.Delay(10000, cancelSource.Token); } catch (TaskCanceledException) { }
avvertimento
Alcune operazioni HTTP 2 bidirezionali, come il metodo InvokeModelWithBidirectionalStreamAsync
di Amazon Bedrock, Amazon. BedrockRuntimenamespace, non restituiscono una risposta dalla chiamata iniziale sul client del servizio fino alla pubblicazione di alcuni eventi. Questo comportamento potrebbe causare il blocco dell'applicazione. Per evitare questa situazione, separate il codice dell'applicazione che fornisce gli eventi all'editore ed eseguitelo su un thread diverso dal thread che richiama le operazioni sul client del servizio.
Ulteriori considerazioni
-
AWS SDK per .NET il supporto per HTTP 2 è disponibile solo nelle versioni destinate a .NET 8 e versioni successive. Non è disponibile nelle versioni destinate a .NET Framework.
-
Per informazioni più dettagliate, vedere PR 3730
nel aws-sdk-net GitHubrepository.