EnterpriseLibrary.TransientFaultHandling.Core
3.0.0
dotnet add package EnterpriseLibrary.TransientFaultHandling.Core --version 3.0.0
NuGet\Install-Package EnterpriseLibrary.TransientFaultHandling.Core -Version 3.0.0
<PackageReference Include="EnterpriseLibrary.TransientFaultHandling.Core" Version="3.0.0" />
paket add EnterpriseLibrary.TransientFaultHandling.Core --version 3.0.0
#r "nuget: EnterpriseLibrary.TransientFaultHandling.Core, 3.0.0"
// Install EnterpriseLibrary.TransientFaultHandling.Core as a Cake Addin
#addin nuget:?package=EnterpriseLibrary.TransientFaultHandling.Core&version=3.0.0
// Install EnterpriseLibrary.TransientFaultHandling.Core as a Cake Tool
#tool nuget:?package=EnterpriseLibrary.TransientFaultHandling.Core&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 |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen30 tizen40 tizen60 |
Universal Windows Platform | uap uap10.0 |
Windows Phone | wp8 wp81 wpa81 |
Windows Store | netcore netcore45 netcore451 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on EnterpriseLibrary.TransientFaultHandling.Core:
Package | Downloads |
---|---|
unofficial.windowsazure.mediaservices
This package contains unofficial port of Windows Azure Media Service library 4.1.0.1 to .NET Standard 2.0 |
|
TransientFaultHandling.Data
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core |
|
TransientFaultHandling.Configuration
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core |
|
TransientFaultHandling.Caching
https://github.com/Dixin/EnterpriseLibrary.TransientFaultHandling.Core |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on EnterpriseLibrary.TransientFaultHandling.Core:
Repository | Stars |
---|---|
wangpengxpy/EntityFramework6.x-And-Core2.0
《你必须掌握的EntityFramework 6.x与Core 2.0》源码
|