From 6ac5a8cc705d34251ea5a66a1d8bde5d809798a4 Mon Sep 17 00:00:00 2001 From: dsanz Date: Thu, 30 Mar 2017 15:05:19 +0200 Subject: [PATCH] Move Polly implementation to Building block project --- eShopOnContainers-ServicesAndWebApps.sln | 54 +++++++++++++++++++ .../HttpResilience/HttpResilience.csproj | 14 +++++ .../Resilience/HttpResilience}/IHttpClient.cs | 2 +- .../HttpResilience}/ResilientHttpClient.cs | 5 +- .../HttpResilience}/StandardHttpClient.cs | 2 +- src/Web/WebMVC/Services/BasketService.cs | 2 +- src/Web/WebMVC/Services/CatalogService.cs | 2 +- src/Web/WebMVC/Services/OrderingService.cs | 2 +- src/Web/WebMVC/Startup.cs | 2 +- src/Web/WebMVC/WebMVC.csproj | 2 +- 10 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 src/BuildingBlocks/Resilience/HttpResilience/HttpResilience.csproj rename src/{Web/WebMVC/Services/Utilities => BuildingBlocks/Resilience/HttpResilience}/IHttpClient.cs (82%) rename src/{Web/WebMVC/Services/Utilities => BuildingBlocks/Resilience/HttpResilience}/ResilientHttpClient.cs (96%) rename src/{Web/WebMVC/Services/Utilities => BuildingBlocks/Resilience/HttpResilience}/StandardHttpClient.cs (92%) diff --git a/eShopOnContainers-ServicesAndWebApps.sln b/eShopOnContainers-ServicesAndWebApps.sln index 88fc173e1..b1ab3dbcd 100644 --- a/eShopOnContainers-ServicesAndWebApps.sln +++ b/eShopOnContainers-ServicesAndWebApps.sln @@ -84,6 +84,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Health EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Resilience", "Resilience", "{FBF43D93-F2E7-4FF8-B4AB-186895949B88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HttpResilience", "src\BuildingBlocks\Resilience\HttpResilience\HttpResilience.csproj", "{D1C47FF1-91F1-4CAF-9ABB-AD642B821502}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU @@ -914,6 +918,54 @@ Global {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.Build.0 = Release|Any CPU {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.ActiveCfg = Release|Any CPU {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|ARM.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhone.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x64.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x64.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x86.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.AppStore|x86.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|ARM.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|ARM.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhone.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x64.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x64.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x86.ActiveCfg = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Debug|x86.Build.0 = Debug|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|Any CPU.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|ARM.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|ARM.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhone.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhone.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x64.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x64.Build.0 = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x86.ActiveCfg = Release|Any CPU + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -947,5 +999,7 @@ Global {942ED6E8-0050-495F-A0EA-01E97F63760C} = {A81ECBC2-6B00-4DCD-8388-469174033379} {7804FC60-23E6-490C-8E08-F9FEF829F184} = {A81ECBC2-6B00-4DCD-8388-469174033379} {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} + {FBF43D93-F2E7-4FF8-B4AB-186895949B88} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} + {D1C47FF1-91F1-4CAF-9ABB-AD642B821502} = {FBF43D93-F2E7-4FF8-B4AB-186895949B88} EndGlobalSection EndGlobal diff --git a/src/BuildingBlocks/Resilience/HttpResilience/HttpResilience.csproj b/src/BuildingBlocks/Resilience/HttpResilience/HttpResilience.csproj new file mode 100644 index 000000000..9760a884b --- /dev/null +++ b/src/BuildingBlocks/Resilience/HttpResilience/HttpResilience.csproj @@ -0,0 +1,14 @@ + + + + netstandard1.4 + Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience + + + + + + + + + \ No newline at end of file diff --git a/src/Web/WebMVC/Services/Utilities/IHttpClient.cs b/src/BuildingBlocks/Resilience/HttpResilience/IHttpClient.cs similarity index 82% rename from src/Web/WebMVC/Services/Utilities/IHttpClient.cs rename to src/BuildingBlocks/Resilience/HttpResilience/IHttpClient.cs index 2a36466bc..611abfbba 100644 --- a/src/Web/WebMVC/Services/Utilities/IHttpClient.cs +++ b/src/BuildingBlocks/Resilience/HttpResilience/IHttpClient.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Net.Http; using System.Threading.Tasks; -namespace WebMVC.Services.Utilities +namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience { public interface IHttpClient { diff --git a/src/Web/WebMVC/Services/Utilities/ResilientHttpClient.cs b/src/BuildingBlocks/Resilience/HttpResilience/ResilientHttpClient.cs similarity index 96% rename from src/Web/WebMVC/Services/Utilities/ResilientHttpClient.cs rename to src/BuildingBlocks/Resilience/HttpResilience/ResilientHttpClient.cs index dafc97c5e..0701a6c30 100644 --- a/src/Web/WebMVC/Services/Utilities/ResilientHttpClient.cs +++ b/src/BuildingBlocks/Resilience/HttpResilience/ResilientHttpClient.cs @@ -1,5 +1,4 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Polly; using Polly.Wrap; @@ -8,7 +7,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; -namespace WebMVC.Services.Utilities +namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience { /// /// HttpClient wrapper that integrates Retry and Circuit diff --git a/src/Web/WebMVC/Services/Utilities/StandardHttpClient.cs b/src/BuildingBlocks/Resilience/HttpResilience/StandardHttpClient.cs similarity index 92% rename from src/Web/WebMVC/Services/Utilities/StandardHttpClient.cs rename to src/BuildingBlocks/Resilience/HttpResilience/StandardHttpClient.cs index b49240c40..db0594a53 100644 --- a/src/Web/WebMVC/Services/Utilities/StandardHttpClient.cs +++ b/src/BuildingBlocks/Resilience/HttpResilience/StandardHttpClient.cs @@ -4,7 +4,7 @@ using System; using System.Net.Http; using System.Threading.Tasks; -namespace WebMVC.Services.Utilities +namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience { public class StandardHttpClient : IHttpClient { diff --git a/src/Web/WebMVC/Services/BasketService.cs b/src/Web/WebMVC/Services/BasketService.cs index d9fc23854..9b85e8f67 100644 --- a/src/Web/WebMVC/Services/BasketService.cs +++ b/src/Web/WebMVC/Services/BasketService.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; +using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience; using Microsoft.eShopOnContainers.WebMVC.ViewModels; using Microsoft.Extensions.Options; using Newtonsoft.Json; @@ -7,7 +8,6 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; -using WebMVC.Services.Utilities; namespace Microsoft.eShopOnContainers.WebMVC.Services { diff --git a/src/Web/WebMVC/Services/CatalogService.cs b/src/Web/WebMVC/Services/CatalogService.cs index 0e521c637..d1eb9deb9 100644 --- a/src/Web/WebMVC/Services/CatalogService.cs +++ b/src/Web/WebMVC/Services/CatalogService.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience; using Microsoft.eShopOnContainers.WebMVC.ViewModels; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -6,7 +7,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Collections.Generic; using System.Threading.Tasks; -using WebMVC.Services.Utilities; namespace Microsoft.eShopOnContainers.WebMVC.Services { diff --git a/src/Web/WebMVC/Services/OrderingService.cs b/src/Web/WebMVC/Services/OrderingService.cs index 06c388a3b..fd2266ce6 100644 --- a/src/Web/WebMVC/Services/OrderingService.cs +++ b/src/Web/WebMVC/Services/OrderingService.cs @@ -8,7 +8,7 @@ using Microsoft.Extensions.Options; using System.Net.Http; using Newtonsoft.Json; using Microsoft.AspNetCore.Authentication; -using WebMVC.Services.Utilities; +using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience; namespace Microsoft.eShopOnContainers.WebMVC.Services { diff --git a/src/Web/WebMVC/Startup.cs b/src/Web/WebMVC/Startup.cs index e379041c4..6cbdd2086 100644 --- a/src/Web/WebMVC/Startup.cs +++ b/src/Web/WebMVC/Startup.cs @@ -14,8 +14,8 @@ using Microsoft.IdentityModel.Tokens; using Microsoft.AspNetCore.Http; using System.Threading; using Microsoft.Extensions.Options; -using WebMVC.Services.Utilities; using Microsoft.Extensions.HealthChecks; +using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience; namespace Microsoft.eShopOnContainers.WebMVC { diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj index a2cea95c3..96cffcbea 100644 --- a/src/Web/WebMVC/WebMVC.csproj +++ b/src/Web/WebMVC/WebMVC.csproj @@ -32,7 +32,6 @@ All - @@ -55,6 +54,7 @@ +