Skip to content

Instantiating clients without DI

This document provides guidelines on how to setup EventSubscriberClient and ComputeClient in case user is unable to leverage AddPlatformClients and Microsoft's dependency injection container.

Setting up logging provider and creating logger for EventSubscriberClient:

using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var logger = loggerFactory.CreateLogger<EventSubscriberClient>();

Setting up authorization policy. This sample uses OpenApiKeyPolicy and that openapikey has to be provided:

var openApiKeyPolicy = new OpenApiKeyPolicy(openapikey);

Setting up ServiceUriProvider and SasTokenClient:

var platformEnvironment = PlatformEnvironment.Dev0;
var serviceUriProvider = new ServiceUriProvider(platformEnvironment, openApiKeyPolicy);
var sasTokenClient = new SasTokenClient(platformEnvironment, openApiKeyPolicy);

Setting up EventSubscriberClient:

var eventSubscriberClient = new EventSubscriberClient(logger, serviceUriProvider, sasTokenClient);

Setting up ComputeClient and creating an execution:

var computeClient = new ComputeClient(serviceUriProvider, sasTokenClient, eventSubscriberClient);
    await computeClient
        .CreateExecution(projectId)
        .WithModelRun(new FemEngineHD(), "https://coreenginedev0inputs.blob.core.windows.net/data/lake-seq/lake1.m21fm")
        .WithRemoteInput(
            new RemoteInput("https://coreenginedev0inputs.blob.core.windows.net/data/lake-seq/lake1.m21fm", "lake1.m21fm"),
            new RemoteInput("https://coreenginedev0inputs.blob.core.windows.net/data/lake-seq/lake2.m21fm", "lake2.m21fm"),
            new RemoteInput("https://coreenginedev0inputs.blob.core.windows.net/data/lake-seq/lake.mesh", "lake.mesh"))
        .WithMessageHandler(new MessageHandler())
        .ExecuteAndWaitAsync();