Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Inclusief: —&—
Client integratie
Azure Web PubSub is een volledig beheerde realtime berichtenservice waarmee u realtime webtoepassingen kunt bouwen met behulp van WebSockets en patronen voor publiceren/abonneren. Met de .NET AspireAzureWeb PubSub integratie kunt u vanuit uw Azure toepassingen verbinding maken met Web PubSub.NET exemplaren.
Hostingintegratie
De .NET.NET AspireAzure Web PubSub hosting integratie modelleren de Web PubSub resources als de volgende typen:
- AzureWebPubSubResource: Vertegenwoordigt een AzureWeb PubSub resource, inclusief verbindingsgegevens met de onderliggende Azure resource.
- AzureWebPubSubHubResource: Vertegenwoordigt een Web PubSub hubinstellingenresource, die de instellingen voor een hub bevat. U kunt bijvoorbeeld opgeven of de hub anonieme verbindingen toestaat of gebeurtenis-handlers toevoegt aan de hub.
Als u toegang wilt krijgen tot deze typen en de bijbehorende API's binnen uw app-hostproject, installeer het 📦Aspire.Hosting.Azure.WebPubSub NuGet-pakket:
dotnet add package Aspire.Hosting.Azure.WebPubSub
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.
Een AzureWeb PubSub-resource toevoegen
Als u een AzureWeb PubSub resource wilt toevoegen aan uw app-hostproject, roept u de AddAzureWebPubSub methode aan die een naam oplevert:
var builder = DistributedApplication.CreateBuilder(args);
var webPubSub = builder.AddAzureWebPubSub("web-pubsub");
builder.AddProject<Projects.ExampleProject>()
.WithReference(webPubSub);
// After adding all resources, run the app...
Met de voorgaande code wordt een AzureWeb PubSub resource met de naam web-pubsub
toegevoegd aan het app-hostproject. De methode WithReference geeft de verbindingsgegevens door aan het ExampleProject
-project.
Belangrijk
Wanneer u AddAzureWebPubSub
aanroept, wordt impliciet AddAzureProvisioning(IDistributedApplicationBuilder)aangeroepen. Hiermee wordt ondersteuning toegevoegd voor het dynamisch genereren van Azure resources tijdens het opstarten van de app. De app moet het juiste abonnement en de juiste locatie configureren. Zie Lokale inrichting: Configuratievoor meer informatie.
Azure Web PubSub Een hubresource toevoegen
Wanneer u een AzureWeb PubSub bron toevoegt, kunt u ook een kinderhubbron toevoegen. De hubresource is een logische groepering van verbindingen en gebeurtenis-handlers. Als u een AzureWeb PubSub hubresource wilt toevoegen aan uw app-hostproject, koppelt u een aanroep aan de AddHub methode die een resource- en hubnaam oplevert:
var builder = DistributedApplication.CreateBuilder(args);
var worker = builder.AddProject<Projects.WorkerService>("worker")
.WithExternalHttpEndpoints();
var webPubSub = builder.AddAzureWebPubSub("web-pubsub");
var messagesHub = webPubSub.AddHub(name: "messages", hubName: "messageHub");
// After adding all resources, run the app...
Met de voorgaande code wordt een AzureWeb PubSub hubresource met de naam messages
en een hubnaam toegevoegd messageHub
, waarmee gebeurtenis-handlers kunnen worden toegevoegd. Als u een gebeurtenis-handler wilt toevoegen, roept u het AddEventHandlervolgende aan:
var builder = DistributedApplication.CreateBuilder(args);
var worker = builder.AddProject<Projects.WorkerService>("worker")
.WithExternalHttpEndpoints();
var webPubSub = builder.AddAzureWebPubSub("web-pubsub");
var messagesHub = webPubSub.AddHub(name: "messages", hubName: "messageHub");
messagesHub.AddEventHandler(
$"{worker.GetEndpoint("https")}/eventhandler/",
systemEvents: ["connected"]);
// After adding all resources, run the app...
Met de voorgaande code wordt een werkserviceproject met de naam worker
toegevoegd met een extern HTTP-eindpunt. De hub met de naam messages
resource wordt toegevoegd aan de web-pubsub
resource en er wordt een gebeurtenis-handler toegevoegd aan de messagesHub
resource. De URL van de gebeurtenis-handler is ingesteld op het externe HTTP-eindpunt van de werkersdienst. Voor meer informatie, zie AzureWeb PubSub gebeurtenishandlers.
Provisioning-gegenereerde Bicep
Wanneer u uw app publiceert, .NET.NET Aspire genereren de inrichtings-API's Bicep naast het manifestbestand. Bicep is een domeinspecifieke taal voor het definiëren van Azure resources. Zie Bicep Overview voor meer informatie.
Wanneer u een AzureWeb PubSub resource toevoegt, wordt de volgende Bicep gegenereerd:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param sku string = 'Free_F1'
param capacity int = 1
param messages_url_0 string
resource web_pubsub 'Microsoft.SignalRService/webPubSub@2024-03-01' = {
name: take('webpubsub-${uniqueString(resourceGroup().id)}', 63)
location: location
sku: {
name: sku
capacity: capacity
}
tags: {
'aspire-resource-name': 'web-pubsub'
}
}
resource messages 'Microsoft.SignalRService/webPubSub/hubs@2024-03-01' = {
name: 'messages'
properties: {
eventHandlers: [
{
urlTemplate: messages_url_0
userEventPattern: '*'
systemEvents: [
'connected'
]
}
]
}
parent: web_pubsub
}
output endpoint string = 'https://${web_pubsub.properties.hostName}'
output name string = web_pubsub.name
De bovengenoemde Bicep is een module die een AzureWeb PubSub bron inricht. Daarnaast worden roltoewijzingen gemaakt voor de Azure resource in een afzonderlijke module:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param web_pubsub_outputs_name string
param principalType string
param principalId string
resource web_pubsub 'Microsoft.SignalRService/webPubSub@2024-03-01' existing = {
name: web_pubsub_outputs_name
}
resource web_pubsub_WebPubSubServiceOwner 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(web_pubsub.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '12cf5a90-567b-43ae-8102-96cf46c7d9b4'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '12cf5a90-567b-43ae-8102-96cf46c7d9b4')
principalType: principalType
}
scope: web_pubsub
}
De gegenereerde Bicep is een beginpunt en wordt beïnvloed door wijzigingen aan de voorzieningsinfrastructuur in C#. Aanpassingen aan het Bicep-bestand zullen direct overschreven worden, dus breng wijzigingen aan via de C#-inrichtings-API's zodat ze weerspiegeld worden in de gegenereerde bestanden.
Voorzieningsinfrastructuur personaliseren
Alle .NET AspireAzure resources zijn subklassen van het AzureProvisioningResource type. Met dit type kunt u de gegenereerde Bicep aanpassen door een vloeiende API te bieden waarmee u de Azure-resources kunt configureren, met behulp van de ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API. U kunt bijvoorbeeld de kind
, consistencyPolicy
, locations
en meer configureren. In het volgende voorbeeld ziet u hoe u de AzureAzure Cosmos DB-resource aanpast:
builder.AddAzureWebPubSub("web-pubsub")
.ConfigureInfrastructure(infra =>
{
var webPubSubService = infra.GetProvisionableResources()
.OfType<WebPubSubService>()
.Single();
webPubSubService.Sku.Name = "Standard_S1";
webPubSubService.Sku.Capacity = 5;
webPubSubService.Tags.Add("ExampleKey", "Example value");
});
De voorgaande code:
- Koppelt een aanroep naar de ConfigureInfrastructure-API:
- De parameter
infra
is een exemplaar van het AzureResourceInfrastructure type. - De voorzienbare resources worden opgehaald door middel van de GetProvisionableResources() methode.
- De enkele resource WebPubSubService wordt opgehaald.
- Voor het WebPubSubService.Sku object zijn respectievelijk de naam- en capaciteitseigenschappen ingesteld op
Standard_S1
en5
, respectievelijk. - Er wordt een tag toegevoegd aan de Web PubSub resource met een sleutel van
ExampleKey
en een waarde vanExample value
.
- De parameter
Er zijn nog veel meer configuratieopties beschikbaar om de Web PubSub resource aan te passen. Zie Azure.Provisioning.WebPubSub voor meer informatie. Zie Azure.Provisioning
aanpassingvoor meer informatie.
Verbinding maken met een bestaand AzureWeb PubSub exemplaar
Mogelijk hebt u een bestaande AzureWeb PubSub-service waarmee u verbinding wilt maken. U kunt een aanroep aaneenschakelen om aan te geven dat uw AzureWebPubSubResource een bestaande resource is.
var builder = DistributedApplication.CreateBuilder(args);
var existingPubSubName = builder.AddParameter("existingPubSubName");
var existingPubSubResourceGroup = builder.AddParameter("existingPubSubResourceGroup");
var webPubSub = builder.AddAzureWebPubSub("web-pubsub")
.AsExisting(existingPubSubName, existingPubSubResourceGroup);
builder.AddProject<Projects.ExampleProject>()
.WithReference(webPubSub);
// After adding all resources, run the app...
Zie Azurevoor meer informatie over het behandelen van Web PubSubAzure bronnen als bestaande.
Opmerking
Als alternatief voor het representeren van een Azure AI Search-resource, kunt u een verbindingsreeks toevoegen aan de app-host. Deze benadering is zwak getypt en werkt niet met roltoewijzingen of infrastructuuraanpassingen. Voor meer informatie, zie Bestaande Azure resources toevoegen met verbindingsreeksen.
integratie Client
De .NET AspireAzureWeb PubSub clientintegratie wordt gebruikt om verbinding te maken met een AzureWeb PubSub service met behulp van de WebPubSubServiceClient. Om aan de slag te gaan met de .NET AspireAzureWeb PubSub serviceclientintegratie, installeer het 📦Aspire.Azure.Messaging.WebPubSub NuGet-pakket in de toepassing.
dotnet add package Aspire.Azure.Messaging.WebPubSub
Ondersteunde Web PubSub clienttypen
De volgende Web PubSub clienttypen worden ondersteund door de bibliotheek:
Azure cliënttype | opties klasse Azure | .NET .NET Aspire-instellingenklasse |
---|---|---|
WebPubSubServiceClient | WebPubSubServiceClientOptions | AzureMessagingWebPubSubSettings |
Web PubSub-client toevoegen
Roep in het Program.cs bestand van het clientgebruikte project de AddAzureWebPubSubServiceClient extensiemethode aan om een WebPubSubServiceClient
te registreren voor gebruik via de container voor afhankelijkheidsinjectie. De methode gebruikt een parameter voor de verbindingsnaam:
builder.AddAzureWebPubSubServiceClient(
connectionName: "web-pubsub");
Hint
De parameter connectionName
moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Web PubSub resource in het app-hostproject. Zie Een AzureWeb PubSub-resource toevoegenvoor meer informatie.
Nadat u de WebPubSubServiceClient
hebt toegevoegd, kunt u de clientinstantie ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld uw gegevensbronobject wilt ophalen uit een voorbeeldservice, definieert u het als een constructorparameter en zorgt u ervoor dat de klasse ExampleService
is geregistreerd bij de container voor afhankelijkheidsinjectie:
public class ExampleService(WebPubSubServiceClient client)
{
// Use client...
}
Zie voor meer informatie:
-
Azure. Messaging.WebPubSub-documentatie voor voorbeelden van hoe je de
WebPubSubServiceClient
kunt gebruiken. - Afhankelijkheidsinjectie in .NET voor meer informatie over afhankelijkheidsinjectie.
Keyed Web PubSub-client toevoegen
Er kunnen situaties zijn waarin u meerdere WebPubSubServiceClient
exemplaren met verschillende verbindingsnamen wilt registreren. Om kliënten met sleutel Web PubSub te registreren, roept u de methode AddKeyedAzureWebPubSubServiceClient op.
builder.AddKeyedAzureWebPubSubServiceClient(name: "messages");
builder.AddKeyedAzureWebPubSubServiceClient(name: "commands");
Belangrijk
Wanneer u sleutelservices gebruikt, wordt verwacht dat uw Web PubSub resource twee benoemde hubs heeft geconfigureerd, één voor de messages
hub en één voor de commands
.
Vervolgens kunt u de clientexemplaren ophalen met behulp van afhankelijkheidsinjectie. Bijvoorbeeld om de clients op te halen uit een service:
public class ExampleService(
[KeyedService("messages")] WebPubSubServiceClient messagesClient,
[KeyedService("commands")] WebPubSubServiceClient commandsClient)
{
// Use clients...
}
Als u één WebPubSubServiceClient
exemplaar wilt registreren met een specifieke verbindingsnaam, is er een overbelasting die gebruikmaakt van de verbindingsnaam als de servicesleutel. Roep de AddKeyedAzureWebPubSubServiceClient
methode aan. Met deze methode wordt de client geregistreerd als een singleton-service in de container voor afhankelijkheidsinjectie.
builder.AddKeyedAzureWebPubSubServiceClient(connectionName: "web-pubsub");
Zie Keyed-services in .NETvoor meer informatie.
Configuratie
De .NET AspireAzureWeb PubSub-bibliotheek biedt meerdere opties voor het configureren van de AzureWeb PubSub verbinding op basis van de vereisten en conventies van uw project. Of een Endpoint
of een ConnectionString
moet worden opgegeven.
Een verbindingsreeks gebruiken
Wanneer u een verbindingsreeks uit de sectie ConnectionStrings
configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van AddAzureWebPubSubServiceClient
:
builder.AddAzureWebPubSubServiceClient(
"web-pubsub",
settings => settings.HubName = "your_hub_name");
De verbindingsgegevens worden opgehaald uit de ConnectionStrings
configuratiesectie. Er worden twee verbindingsindelingen ondersteund:
Service-eindpunt (aanbevolen): maakt gebruik van het service-eindpunt met
DefaultAzureCredential
.{ "ConnectionStrings": { "web-pubsub": "https://{account_name}.webpubsub.azure.com" } }
Verbindingsreeks: bevat een toegangssleutel.
{ "ConnectionStrings": { "web-pubsub": "Endpoint=https://{account_name}.webpubsub.azure.com;AccessKey={account_key}" } }
Configuratieproviders gebruiken
De bibliotheek ondersteunt Microsoft.Extensions.Configuration. Er worden instellingen uit de configuratie geladen met behulp van de Aspire:Azure:Messaging:WebPubSub
sleutel:
{
"Aspire": {
"Azure": {
"Messaging": {
"WebPubSub": {
"DisableHealthChecks": true,
"HubName": "your_hub_name"
}
}
}
}
}
Voor het volledige AzureOpenAI client integratieschema JSON, zie Aspire.Azure.Messaging.WebPubSub/ConfigurationSchema.json.
Gebruik inline-delegaten
U kunt instellingen inline configureren:
builder.AddAzureWebPubSubServiceClient(
"web-pubsub",
settings => settings.DisableHealthChecks = true);
Waarneembaarheid en telemetrie
.NET .NET Aspire integraties stellen automatisch configuraties in voor logging, tracing en metrics, die ook wel bekendstaan als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.
Loggen
De .NET AspireAzureWeb PubSub-integratie maakt gebruik van de volgende logboekcategorieën:
Azure
Azure.Core
Azure.Identity
Azure.Messaging.WebPubSub
Opsporing
De integratie van .NET AspireAzureWeb PubSub verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:
Azure.Messaging.WebPubSub.*
Statistieken
De .NET AspireAzureWeb PubSub integratie biedt momenteel geen ondersteuning voor metrische gegevens vanwege beperkingen met de Azure SDK voor .NET. Als deze wijzigingen in de toekomst worden gewijzigd, wordt deze sectie bijgewerkt om deze wijzigingen weer te geven.