TransientFaultHandling.Data
3.0.0
dotnet add package TransientFaultHandling.Data --version 3.0.0
NuGet\Install-Package TransientFaultHandling.Data -Version 3.0.0
<PackageReference Include="TransientFaultHandling.Data" Version="3.0.0" />
paket add TransientFaultHandling.Data --version 3.0.0
#r "nuget: TransientFaultHandling.Data, 3.0.0"
// Install TransientFaultHandling.Data as a Cake Addin #addin nuget:?package=TransientFaultHandling.Data&version=3.0.0 // Install TransientFaultHandling.Data as a Cake Tool #tool nuget:?package=TransientFaultHandling.Data&version=3.0.0
Transient Fault Handling Application Block/Retry patterns for modern .NET.
TransientFaultHandling.Core is retry library for transient error handling. It is ported from Microsoft Enterprise Library’s Transient Fault Handling Application Block, a library widely used with .NET Framework.
- The retry pattern APIs are ported to .NET 6 & .NET 5 & .NET Core & .NET Standard.
- New functional and fluent APIs to easily implement retry logic.
- The outdated configuration & APIs are replaced by modern .NET JSON/XML/INI configuration.
Introduction
With this library, the old code with retry logic based on Microsoft Enterprise Library can be ported to .NET 6 & .NET 5 & .NET Core & .NET Standard without modification:
ITransientErrorDetectionStrategy transientExceptionDetection = new MyDetection();
RetryStrategy retryStrategy = new FixedInterval(retryCount: 5, retryInterval: TimeSpan.FromSeconds(1));
RetryPolicy retryPolicy = new RetryPolicy(transientExceptionDetection, retryStrategy);
retryPolicy.ExecuteAction(() => webClient.DownloadString("https://DixinYan.com"));
With this library, it is extremely easy to detect transient exception and implement retry logic. For example, the following code downloads a string, if the exception thrown is transient (a WebException), it retries up to 5 times, with it waits for 1 second between each retry:
Retry.FixedInterval(
() => webClient.DownloadString("https://DixinYan.com"),
isTransient: exception => exception is WebException,
retryCount: 5, retryInterval: TimeSpan.FromSeconds(1));
Fluent APIs are also provided for even better readability:
Retry
.WithIncremental(retryCount: 5, initialInterval: TimeSpan.FromSeconds(1),
increment: TimeSpan.FromSeconds(1))
.Catch<OperationCanceledException>()
.Catch<WebException>(exception =>
exception.Response is HttpWebResponse { StatusCode: HttpStatusCode.RequestTimeout })
.ExecuteAction(() => webClient.DownloadString("https://DixinYan.com"));
It also supports JSON/XML/INI configuration:
{
"retryStrategy": {
"name1": {
"fastFirstRetry": "true",
"retryCount": 5,
"retryInterval": "00:00:00.1"
},
"name2": {
"fastFirstRetry": "true",
"retryCount": 55,
"initialInterval": "00:00:00.2",
"increment": "00:00:00.3"
}
}
}
Document
https://weblogs.asp.net/dixin/transientfaulthandling-core-retry-library-for-net-core-net-standard
Source
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core (Partially ported from https://github.com/MicrosoftArchive/transient-fault-handling-application-block, with additional new APIs and redesigned/reimplemented APIs)
NuGet installation
It can be installed through NuGet using .NET CLI:
dotnet add package EnterpriseLibrary.TransientFaultHandling.Core
dotnet add package TransientFaultHandling.Caching
dotnet add package TransientFaultHandling.Configuration
dotnet add package TransientFaultHandling.Data
Or in Visual Studio NuGet Package Manager Console:
Install-Package EnterpriseLibrary.TransientFaultHandling.Core
Install-Package TransientFaultHandling.Caching
Install-Package TransientFaultHandling.Configuration
Install-Package TransientFaultHandling.Data
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- EntityFramework (>= 6.4.4)
- Microsoft.Data.SqlClient (>= 3.0.1)
- System.Data.SqlClient (>= 4.8.3)
-
.NETStandard 2.1
- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- EntityFramework (>= 6.4.4)
- Microsoft.Data.SqlClient (>= 3.0.1)
- System.Data.SqlClient (>= 4.8.3)
-
net5.0
- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- EntityFramework (>= 6.4.4)
- Microsoft.Data.SqlClient (>= 3.0.1)
- System.Data.SqlClient (>= 4.8.3)
-
net6.0
- EnterpriseLibrary.TransientFaultHandling.Core (>= 3.0.0)
- EntityFramework (>= 6.4.4)
- Microsoft.Data.SqlClient (>= 3.0.1)
- System.Data.SqlClient (>= 4.8.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TransientFaultHandling.Data:
Package | Downloads |
---|---|
TransientFaultHandling.Configuration
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core |
GitHub repositories
This package is not used by any popular GitHub repositories.