Skip to main content
Version: 3.16

Getting Started with ASP.NET Core and Dependency Injection in the ScalarDB Cluster .NET Client SDK

The ScalarDB Cluster .NET Client SDK supports dependency injection (DI) in frameworks like ASP.NET Core.

Install the SDK​

Install the same major and minor version of the SDK as ScalarDB Cluster into the .NET project. You can do this by using the built-in NuGet package manager, replacing <MAJOR>.<MINOR> with the version that you're using:

dotnet add package ScalarDB.Client --version '<MAJOR>.<MINOR>.*'

Add client settings​

Add the ScalarDbOptions section to the appsettings.json file of your ASP.NET Core app, replacing <HOSTNAME_OR_IP_ADDRESS> with the FQDN or the IP address, and <PORT> with the port number (60053 by default) of your cluster:

{
"ScalarDbOptions": {
"Address": "http://<HOSTNAME_OR_IP_ADDRESS>:<PORT>",
"HopLimit": 10
}
}

For details about settings files and other ways to configure the client, see Client configuration.

Set up the transaction managers​

You can register the ScalarDB transaction managers in the DI container as follows:

using ScalarDB.Client.Extensions;

//...

var builder = WebApplication.CreateBuilder(args);

//...

builder.Services.AddScalarDb();
note

The ScalarDB transaction managers will be registered as transient services. For details about service lifetimes, see .NET dependency injection - Service lifetimes.

After registering the transaction managers, they can be injected into the controller's constructor as follows:

[ApiController]
public class OrderController: ControllerBase
{
private readonly IDistributedTransactionManager _manager;
private readonly ISqlTransactionManager _sqlManager;
private readonly ITwoPhaseCommitTransactionManager _twoPhaseManager;
private readonly ISqlTwoPhaseCommitTransactionManager _sqlTwoPhaseManager;
private readonly IDistributedTransactionAdmin _admin;

public OrderController(IDistributedTransactionManager manager,
ISqlTransactionManager sqlManager,
ITwoPhaseCommitTransactionManager twoPhaseManager,
ISqlTwoPhaseCommitTransactionManager sqlTwoPhaseManager,
IDistributedTransactionAdmin admin)
{
_manager = manager;
_sqlManager = sqlManager;
_twoPhaseManager = twoPhaseManager;
_sqlTwoPhaseManager = sqlTwoPhaseManager;
_admin = admin;
}
}

Although these examples are for WebApi projects, the examples will work in a similar way in GrpcService projects.