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 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 as services in IServiceCollection
as follows:
using ScalarDB.Client.Extensions;
//...
var builder = WebApplication.CreateBuilder(args);
//...
builder.Services.AddScalarDb();
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.