![]() |
VOOZH | about |
dotnet add package Indice.Services --version 8.49.1
NuGet\Install-Package Indice.Services -Version 8.49.1
<PackageReference Include="Indice.Services" Version="8.49.1" />
<PackageVersion Include="Indice.Services" Version="8.49.1" />Directory.Packages.props
<PackageReference Include="Indice.Services" />Project file
paket add Indice.Services --version 8.49.1
#r "nuget: Indice.Services, 8.49.1"
#:package Indice.Services@8.49.1
#addin nuget:?package=Indice.Services&version=8.49.1Install as a Cake Addin
#tool nuget:?package=Indice.Services&version=8.49.1Install as a Cake Tool
A comprehensive library of infrastructure service abstractions and implementations for .NET applications. This package provides production-ready integrations with Azure services and popular third-party providers for common application needs.
dotnet add package Indice.Services
Store and retrieve files using different backing stores:
| Implementation | Description |
|---|---|
FileServiceAzureStorage |
Azure Blob Storage |
FileServiceLocal |
Local file system |
FileServiceInMemory |
In-memory (for testing) |
// Azure Blob Storage
services.AddFilesAzure(options => {
options.ConnectionStringName = "StorageConnection";
options.ContainerName = "my-container";
});
// Local file system
services.AddFilesLocal(options => {
options.Path = "uploads";
});
AzureClientFactory resolves the connection by ConnectionStringName (StorageConnection by default):
ConnectionStrings:{ConnectionStringName} (or a direct value with the same key){ConnectionStringName}Standard connection string:
{
"ConnectionStrings": {
"StorageConnection": "DefaultEndpointsProtocol=https;AccountName=<NAME>;AccountKey=xxx;EndpointSuffix=core.windows.net"
}
}
Managed Identity (system-assigned):
{
"StorageConnection": {
"accountName": "<NAME>",
"serviceUri": "<SERVICE_URI>"
}
}
Managed Identity (user-assigned):
{
"StorageConnection": {
"accountName": "<NAME>",
"serviceUri": "<SERVICE_URI>",
"clientId": "<CLIENT_ID>"
}
}
For Azure Functions host, you need to provide these extra values too:
AzureWebJobsStorage__accountName = <NAME>
AzureWebJobsStorage__serviceUri = <BASE_SERVICE_URL>
For user-assigned Managed Identity, add this too:
AzureWebJobsStorage__clientId = <CLIENT_ID>
Proper RBAC roles to be assigned to the Managed Identity:
Send emails through various providers with template rendering support:
| Provider | Service Name |
|---|---|
| SMTP | EmailServiceSmtp |
| SendGrid | EmailServiceSendGrid |
| SparkPost | EmailServiceSparkpost |
| Brevo (Sendinblue) | EmailServiceBrevo |
// Auto-discover provider from configuration
services.AddEmailService(configuration);
Configuration (appsettings.json):
{
"Email": {
"Provider": "smtp",
"Sender": "noreply@example.com",
"SenderName": "My App",
"SmtpHost": "smtp.example.com",
"SmtpPort": 587
}
}
Send SMS messages through multiple gateway providers:
| Provider | Implementation |
|---|---|
| Apifon | SmsServiceApifon |
| Apifon IM | SmsServiceApifonIM |
| KapaTEL | SmsServiceKapaTEL |
| Mstat | SmsServiceMstat |
| SmsUP | SmsServiceSmsUP |
| Twilio | SmsServiceTwilio |
| Vonage | SmsServiceVonage |
| Yuboto | SmsServiceYuboto |
| Yuboto Omni | SmsServiceYubotoOmni |
| Yuboto Viber | SmsServiceYubotoOmniViber |
services.AddSmsServiceApifon(configuration);
Send push notifications via Azure Notification Hubs:
services.AddPushNotificationServiceAzure((sp, options) => {
options.ConnectionString = "your-connection-string";
options.NotificationHubPath = "your-hub-name";
});
Dispatch events asynchronously using queue-based messaging:
| Implementation | Backing Store |
|---|---|
EventDispatcherAzure |
Azure Queue Storage |
EventDispatcherAzureServiceBus |
Azure Service Bus |
EventDispatcherInMemory |
In-memory (for testing) |
services.AddEventDispatcherAzure(configuration);
// Raise events
await eventDispatcher.RaiseEventAsync(new OrderCreatedEvent { OrderId = orderId });
Coordinate distributed operations using lease-based locking:
| Implementation | Backing Store |
|---|---|
LockManagerAzure |
Azure Blob Storage leases |
LockManagerInMemory |
In-memory (for testing) |
services.AddLockManagerAzure(configuration);
// Acquire and use a lock
await using var lease = await lockManager.AcquireLock("my-resource", TimeSpan.FromSeconds(30));
if (lease.IsAcquired) {
// Perform exclusive operation
}
Proxy SignalR connections through Azure SignalR Service:
services.AddSignalRProxyServices(configuration);
Most services auto-configure from IConfiguration. Common connection string names:
| Service | Connection String Name |
|---|---|
| File Storage | StorageConnection |
| Event Dispatcher | StorageConnection |
| Lock Manager | StorageConnection |
| Service Bus | ServiceBusConnection |
This project is licensed under the MIT License. See the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 5 NuGet packages that depend on Indice.Services:
| Package | Downloads |
|---|---|
|
Indice.AspNetCore
Package Description |
|
|
Indice.Hosting
Package Description |
|
|
Indice.Features.Messages.Core
Package Description |
|
|
Indice.Features.Messages.Worker.Azure
Package Description |
|
|
Indice.Features.Multitenancy.Worker.Azure
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.49.1 | 375 | 6/10/2026 |
| 8.49.0 | 1,163 | 6/5/2026 |
| 8.48.1 | 777 | 6/2/2026 |
| 8.48.0 | 573 | 5/28/2026 |
| 8.47.3 | 646 | 5/26/2026 |
| 8.47.1 | 1,019 | 5/22/2026 |
| 8.47.0 | 836 | 5/14/2026 |
| 8.47.0-rc06 | 488 | 5/15/2026 |
| 8.47.0-rc05 | 477 | 5/14/2026 |
| 8.47.0-rc04 | 466 | 5/14/2026 |
| 8.47.0-rc03 | 475 | 5/14/2026 |
| 8.47.0-rc02 | 458 | 5/14/2026 |
| 8.47.0-rc01 | 477 | 5/13/2026 |
| 8.46.0 | 1,492 | 5/5/2026 |
| 8.45.0 | 732 | 4/30/2026 |
| 8.44.0 | 1,172 | 4/24/2026 |
| 8.43.1 | 1,214 | 4/15/2026 |
| 8.43.0 | 627 | 4/8/2026 |
| 8.42.1 | 2,585 | 4/6/2026 |
| 8.42.0 | 567 | 3/30/2026 |