From cf92af302f5af99c218362fc4838d485a7025487 Mon Sep 17 00:00:00 2001 From: NextTurn <45985406+NextTurn@users.noreply.github.com> Date: Tue, 19 Mar 2019 00:00:00 +0800 Subject: [PATCH 1/4] Update link formatting --- ...chestrate-high-scalability-availability.md | 6 +-- ...-application-outer-loop-devops-workflow.md | 6 +-- ...modern-applications-based-on-containers.md | 4 +- ...synchronous-message-based-communication.md | 14 +++---- ...munication-in-microservice-architecture.md | 4 +- .../data-sovereignty-per-microservice.md | 8 ++-- ...nication-versus-the-API-Gateway-pattern.md | 14 +++---- .../distributed-data-management.md | 16 +++---- .../maintain-microservice-apis.md | 6 +-- ...service-based-composite-ui-shape-layout.md | 10 ++--- ...ervices-addressability-service-registry.md | 6 +-- .../microservices-architecture.md | 10 ++--- ...silient-high-availability-microservices.md | 12 +++--- ...lti-container-microservice-applications.md | 6 +-- .../docker-app-development-workflow.md | 22 +++++----- .../index.md | 6 +-- .../implement-circuit-breaker-pattern.md | 2 +- ...-call-retries-exponential-backoff-polly.md | 8 ++-- ...t-entity-framework-core-sql-connections.md | 4 +- .../monitor-app-health.md | 8 ++-- .../partial-failure-strategies.md | 8 ++-- ...ry-to-implement-resilient-http-requests.md | 4 +- .../microservices-architecture/index.md | 2 +- .../client-side-validation.md | 12 +++--- .../ddd-oriented-microservice.md | 6 +-- .../domain-events-design-implementation.md | 22 +++++----- .../domain-model-layer-validations.md | 14 +++---- .../enumeration-classes-over-enum-types.md | 14 +++---- ...eshoponcontainers-cqrs-ddd-microservice.md | 14 +++---- .../implement-value-objects.md | 14 +++---- .../microservice-ddd-cqrs-patterns/index.md | 24 +++++------ ...infrastructure-persistence-layer-design.md | 12 +++--- ...yer-implemenation-entity-framework-core.md | 26 ++++++------ ...pplication-layer-implementation-web-api.md | 42 +++++++++---------- ...ervice-application-layer-web-api-design.md | 6 +-- .../microservice-domain-model.md | 20 ++++----- ...sql-database-persistence-infrastructure.md | 16 +++---- ...rk-domain-model-base-classes-interfaces.md | 2 +- .../background-tasks-with-ihostedservice.md | 6 +-- .../data-driven-crud-microservice.md | 16 +++---- .../database-server-container.md | 4 +- .../implement-api-gateways-with-ocelot.md | 10 ++--- ...i-container-applications-docker-compose.md | 8 ++-- .../subscribe-events.md | 34 +++++++-------- .../test-aspnet-core-services-web-apps.md | 18 ++++---- ...tion-net-microservices-web-applications.md | 8 ++-- .../azure-key-vault-protects-secrets.md | 10 ++--- .../index.md | 14 +++---- .../index.md | 6 +-- 49 files changed, 282 insertions(+), 282 deletions(-) diff --git a/docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/orchestrate-high-scalability-availability.md b/docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/orchestrate-high-scalability-availability.md index 02d0c9e9fbd27..d00daa68727de 100644 --- a/docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/orchestrate-high-scalability-availability.md +++ b/docs/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/orchestrate-high-scalability-availability.md @@ -109,13 +109,13 @@ For further information, see the article on [Team Development with Azure Dev Spa ## Additional resources - **Getting started with Azure Kubernetes Service (AKS)** \ - [*https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal*](https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal) + [https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal](https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal) - **Azure Dev Spaces** \ - [*https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces*](https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces) + [https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces](https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces) - **Kubernetes.** The official site. \ - [*https://kubernetes.io/*](https://kubernetes.io/) + [https://kubernetes.io/](https://kubernetes.io/) ## Using Azure Service Fabric diff --git a/docs/standard/containerized-lifecycle-architecture/docker-devops-workflow/docker-application-outer-loop-devops-workflow.md b/docs/standard/containerized-lifecycle-architecture/docker-devops-workflow/docker-application-outer-loop-devops-workflow.md index 985c90a317813..59551eaef826b 100644 --- a/docs/standard/containerized-lifecycle-architecture/docker-devops-workflow/docker-application-outer-loop-devops-workflow.md +++ b/docs/standard/containerized-lifecycle-architecture/docker-devops-workflow/docker-application-outer-loop-devops-workflow.md @@ -85,13 +85,13 @@ With these Visual Studio Team Services tasks, a build Linux-Docker Host/VM provi > To read more about assembling an Azure DevOps Services Docker CI pipeline and view the walkthroughs, visit these sites: > > - Running a Visual Studio Team Services (Now Azure DevOps Services) agent as a Docker container: \ -> [*https://hub.docker.com/r/microsoft/vsts-agent/*](https://hub.docker.com/r/microsoft/vsts-agent/) +> [https://hub.docker.com/r/microsoft/vsts-agent/](https://hub.docker.com/r/microsoft/vsts-agent/) > > - Building .NET Core Linux Docker images with Azure DevOps Services: \ -> [*https://blogs.msdn.microsoft.com/stevelasker/2016/06/13/building-net-core-linux-docker-images-with-visual-studio-team-services/*](https://blogs.msdn.microsoft.com/stevelasker/2016/06/13/building-net-core-linux-docker-images-with-visual-studio-team-services/) +> [https://blogs.msdn.microsoft.com/stevelasker/2016/06/13/building-net-core-linux-docker-images-with-visual-studio-team-services/](https://blogs.msdn.microsoft.com/stevelasker/2016/06/13/building-net-core-linux-docker-images-with-visual-studio-team-services/) > > - Building a Linux-based Visual Studio Team Service build machine with Docker support: \ -> [*http://donovanbrown.com/post/2016/06/03/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support*](http://donovanbrown.com/post/2016/06/03/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support) +> [http://donovanbrown.com/post/2016/06/03/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support](http://donovanbrown.com/post/2016/06/03/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support) ### Integrate, test, and validate multi-container Docker applications diff --git a/docs/standard/containerized-lifecycle-architecture/road-to-modern-applications-based-on-containers.md b/docs/standard/containerized-lifecycle-architecture/road-to-modern-applications-based-on-containers.md index 3492699c7fd1a..78bde41b2a922 100644 --- a/docs/standard/containerized-lifecycle-architecture/road-to-modern-applications-based-on-containers.md +++ b/docs/standard/containerized-lifecycle-architecture/road-to-modern-applications-based-on-containers.md @@ -18,10 +18,10 @@ This book belongs to a Microsoft suite of guides that cover many of the needs an You can find additional Microsoft e-books related to Docker containers in the list below: - **.NET Microservices: Architecture for Containerized .NET Applications** \ - [*https://docs.microsoft.com/dotnet/standard/microservices-architecture/*](../microservices-architecture/index.md) + [https://docs.microsoft.com/dotnet/standard/microservices-architecture/](../microservices-architecture/index.md) - **Modernize existing .NET applications with Azure cloud and Windows Containers** \ - [*https://docs.microsoft.com/dotnet/standard/modernize-with-azure-and-containers/*](../modernize-with-azure-and-containers/index.md) + [https://docs.microsoft.com/dotnet/standard/modernize-with-azure-and-containers/](../modernize-with-azure-and-containers/index.md) >[!div class="step-by-step"] >[Previous](docker-containers-images-and-registries.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md index e29a1b5c89cfe..e5315ca74afae 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/asynchronous-message-based-communication.md @@ -81,25 +81,25 @@ Additional topics to consider when using asynchronous communication are message ## Additional resources - **Event Driven Messaging** \ - [*http://soapatterns.org/design_patterns/event_driven_messaging*](http://soapatterns.org/design_patterns/event_driven_messaging) + [http://soapatterns.org/design_patterns/event_driven_messaging](http://soapatterns.org/design_patterns/event_driven_messaging) - **Publish/Subscribe Channel** \ - [*https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html*](https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html) + [https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html](https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html) - **Udi Dahan. Clarified CQRS** \ - [*http://udidahan.com/2009/12/09/clarified-cqrs/*](http://udidahan.com/2009/12/09/clarified-cqrs/) + [http://udidahan.com/2009/12/09/clarified-cqrs/](http://udidahan.com/2009/12/09/clarified-cqrs/) - **Command and Query Responsibility Segregation (CQRS)** \ - [*https://docs.microsoft.com/azure/architecture/patterns/cqrs*](https://docs.microsoft.com/azure/architecture/patterns/cqrs) + [https://docs.microsoft.com/azure/architecture/patterns/cqrs](https://docs.microsoft.com/azure/architecture/patterns/cqrs) - **Communicating Between Bounded Contexts** \ - [*https://docs.microsoft.com/previous-versions/msp-n-p/jj591572(v=pandp.10)*](https://docs.microsoft.com/previous-versions/msp-n-p/jj591572(v=pandp.10)) + [https://docs.microsoft.com/previous-versions/msp-n-p/jj591572(v=pandp.10)](https://docs.microsoft.com/previous-versions/msp-n-p/jj591572(v=pandp.10)) - **Eventual consistency** \ - [*https://en.wikipedia.org/wiki/Eventual_consistency*](https://en.wikipedia.org/wiki/Eventual_consistency) + [https://en.wikipedia.org/wiki/Eventual_consistency](https://en.wikipedia.org/wiki/Eventual_consistency) - **Jimmy Bogard. Refactoring Towards Resilience: Evaluating Coupling** \ - [*https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/*](https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/) + [https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/](https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/) > [!div class="step-by-step"] > [Previous](communication-in-microservice-architecture.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md index 7deea76f34601..26f3cb30c81d9 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture.md @@ -84,10 +84,10 @@ There's additional value when using HTTP REST services as your interface definit ### Additional resources - **Martin Fowler. Richardson Maturity Model** A description of the REST model. \ - [*https://martinfowler.com/articles/richardsonMaturityModel.html*](https://martinfowler.com/articles/richardsonMaturityModel.html) + [https://martinfowler.com/articles/richardsonMaturityModel.html](https://martinfowler.com/articles/richardsonMaturityModel.html) - **Swagger** The official site. \ - [*https://swagger.io/*](https://swagger.io/) + [https://swagger.io/](https://swagger.io/) ### Push and real-time communication based on HTTP diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md index a552f4e618aa5..b552ff4a821aa 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/data-sovereignty-per-microservice.md @@ -44,16 +44,16 @@ DDD benefits from microservices by getting real boundaries in the form of distri ### Additional resources - **Chris Richardson. Pattern: Database per service** \ - [*https://microservices.io/patterns/data/database-per-service.html*](https://microservices.io/patterns/data/database-per-service.html) + [https://microservices.io/patterns/data/database-per-service.html](https://microservices.io/patterns/data/database-per-service.html) - **Martin Fowler. BoundedContext** \ - [*https://martinfowler.com/bliki/BoundedContext.html*](https://martinfowler.com/bliki/BoundedContext.html) + [https://martinfowler.com/bliki/BoundedContext.html](https://martinfowler.com/bliki/BoundedContext.html) - **Martin Fowler. PolyglotPersistence** \ - [*https://martinfowler.com/bliki/PolyglotPersistence.html*](https://martinfowler.com/bliki/PolyglotPersistence.html) + [https://martinfowler.com/bliki/PolyglotPersistence.html](https://martinfowler.com/bliki/PolyglotPersistence.html) - **Alberto Brandolini. Strategic Domain Driven Design with Context Mapping** \ - [*https://www.infoq.com/articles/ddd-contextmapping*](https://www.infoq.com/articles/ddd-contextmapping) + [https://www.infoq.com/articles/ddd-contextmapping](https://www.infoq.com/articles/ddd-contextmapping) >[!div class="step-by-step"] >[Previous](microservices-architecture.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md index 9d7ff7ae8951d..37142f1d5df81 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-API-Gateway-pattern.md @@ -167,25 +167,25 @@ After the initial architecture and patterns explanation sections, the next secti ## Additional resources - **Charles Richardson. Pattern: API Gateway / Backend for Front-End** \ - [*https://microservices.io/patterns/apigateway.html*](https://microservices.io/patterns/apigateway.html) + [https://microservices.io/patterns/apigateway.html](https://microservices.io/patterns/apigateway.html) - **API Gateway pattern** \ - [*https://docs.microsoft.com/azure/architecture/microservices/gateway*](https://docs.microsoft.com/azure/architecture/microservices/gateway) + [https://docs.microsoft.com/azure/architecture/microservices/gateway](https://docs.microsoft.com/azure/architecture/microservices/gateway) - **Aggregation and composition pattern** \ - [*https://microservices.io/patterns/data/api-composition.html*](https://microservices.io/patterns/data/api-composition.html) + [https://microservices.io/patterns/data/api-composition.html](https://microservices.io/patterns/data/api-composition.html) - **Azure API Management** \ - [*https://azure.microsoft.com/services/api-management/*](https://azure.microsoft.com/services/api-management/) + [https://azure.microsoft.com/services/api-management/](https://azure.microsoft.com/services/api-management/) - **Udi Dahan. Service Oriented Composition** \ - [*http://udidahan.com/2014/07/30/service-oriented-composition-with-video/*](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) + [http://udidahan.com/2014/07/30/service-oriented-composition-with-video/](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) - **Clemens Vasters. Messaging and Microservices at GOTO 2016 (video)** \ - [*https://www.youtube.com/watch?v=rXi5CLjIQ9k*](https://www.youtube.com/watch?v=rXi5CLjIQ9k) + [https://www.youtube.com/watch?v=rXi5CLjIQ9k](https://www.youtube.com/watch?v=rXi5CLjIQ9k) - **API Gateway in a Nutshell** (ASP.net Core API Gateway Tutorial Series) \ - [*https://www.pogsdotnet.com/2018/08/api-gateway-in-nutshell.html*](https://www.pogsdotnet.com/2018/08/api-gateway-in-nutshell.html) + [https://www.pogsdotnet.com/2018/08/api-gateway-in-nutshell.html](https://www.pogsdotnet.com/2018/08/api-gateway-in-nutshell.html) >[!div class="step-by-step"] >[Previous](identify-microservice-domain-model-boundaries.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md index eb3c61d9fcec9..aa081cf8f6bee 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management.md @@ -80,28 +80,28 @@ The use of asynchronous communication is explained with additional details later ## Additional resources - **CAP theorem** \ - [*https://en.wikipedia.org/wiki/CAP_theorem*](https://en.wikipedia.org/wiki/CAP_theorem) + [https://en.wikipedia.org/wiki/CAP_theorem](https://en.wikipedia.org/wiki/CAP_theorem) - **Eventual consistency** \ - [*https://en.wikipedia.org/wiki/Eventual_consistency*](https://en.wikipedia.org/wiki/Eventual_consistency) + [https://en.wikipedia.org/wiki/Eventual_consistency](https://en.wikipedia.org/wiki/Eventual_consistency) - **Data Consistency Primer** \ - [*https://docs.microsoft.com/previous-versions/msp-n-p/dn589800(v=pandp.10)*](https://docs.microsoft.com/previous-versions/msp-n-p/dn589800(v=pandp.10)) + [https://docs.microsoft.com/previous-versions/msp-n-p/dn589800(v=pandp.10)](https://docs.microsoft.com/previous-versions/msp-n-p/dn589800(v=pandp.10)) - **Martin Fowler. CQRS (Command and Query Responsibility Segregation)** \ - [*https://martinfowler.com/bliki/CQRS.html*](https://martinfowler.com/bliki/CQRS.html) + [https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html) - **Materialized View** \ - [*https://docs.microsoft.com/azure/architecture/patterns/materialized-view*](https://docs.microsoft.com/azure/architecture/patterns/materialized-view) + [https://docs.microsoft.com/azure/architecture/patterns/materialized-view](https://docs.microsoft.com/azure/architecture/patterns/materialized-view) - **Charles Row. ACID vs. BASE: The Shifting pH of Database Transaction Processing** \ - [*https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/*](https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/) + [https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/](https://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/) - **Compensating Transaction** \ - [*https://docs.microsoft.com/azure/architecture/patterns/compensating-transaction*](https://docs.microsoft.com/azure/architecture/patterns/compensating-transaction) + [https://docs.microsoft.com/azure/architecture/patterns/compensating-transaction](https://docs.microsoft.com/azure/architecture/patterns/compensating-transaction) - **Udi Dahan. Service Oriented Composition** \ - [*http://udidahan.com/2014/07/30/service-oriented-composition-with-video/*](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) + [http://udidahan.com/2014/07/30/service-oriented-composition-with-video/](http://udidahan.com/2014/07/30/service-oriented-composition-with-video/) >[!div class="step-by-step"] >[Previous](logical-versus-physical-architecture.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/maintain-microservice-apis.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/maintain-microservice-apis.md index 271c237a554af..280ab04a9d189 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/maintain-microservice-apis.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/maintain-microservice-apis.md @@ -22,13 +22,13 @@ Finally, if you're using a REST architecture, [Hypermedia](https://www.infoq.com ## Additional resources - **Scott Hanselman. ASP.NET Core RESTful Web API versioning made easy** \ - [*https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx*](https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx) + [https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx](https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx) - **Versioning a RESTful web API** \ - [*https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api*](https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api) + [https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api](https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api) - **Roy Fielding. Versioning, Hypermedia, and REST** \ - [*https://www.infoq.com/articles/roy-fielding-on-versioning*](https://www.infoq.com/articles/roy-fielding-on-versioning) + [https://www.infoq.com/articles/roy-fielding-on-versioning](https://www.infoq.com/articles/roy-fielding-on-versioning) >[!div class="step-by-step"] >[Previous](asynchronous-message-based-communication.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md index 80bf2037ca76a..be7b0d46c9b31 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservice-based-composite-ui-shape-layout.md @@ -36,19 +36,19 @@ However, we encourage you to use the following references to learn more about co ## Additional resources - **Composite UI using ASP.NET (Particular's Workshop)** \ - [*https://github.com/Particular/Workshop/tree/master/demos/asp-net-core*](https://github.com/Particular/Workshop/tree/master/demos/asp-net-core) + [https://github.com/Particular/Workshop/tree/master/demos/asp-net-core](https://github.com/Particular/Workshop/tree/master/demos/asp-net-core) - **Ruben Oostinga. The Monolithic Frontend in the Microservices Architecture** \ - [*https://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/*](https://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/) + [https://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/](https://blog.xebia.com/the-monolithic-frontend-in-the-microservices-architecture/) - **Mauro Servienti. The secret of better UI composition** \ - [*https://particular.net/blog/secret-of-better-ui-composition*](https://particular.net/blog/secret-of-better-ui-composition) + [https://particular.net/blog/secret-of-better-ui-composition](https://particular.net/blog/secret-of-better-ui-composition) - **Viktor Farcic. Including Front-End Web Components Into Microservices** \ - [*https://technologyconversations.com/2015/08/09/including-front-end-web-components-into-microservices/*](https://technologyconversations.com/2015/08/09/including-front-end-web-components-into-microservices/) + [https://technologyconversations.com/2015/08/09/including-front-end-web-components-into-microservices/](https://technologyconversations.com/2015/08/09/including-front-end-web-components-into-microservices/) - **Managing Frontend in the Microservices Architecture** \ - [*https://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html*](https://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html) + [https://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html](https://allegro.tech/2016/03/Managing-Frontend-in-the-microservices-architecture.html) >[!div class="step-by-step"] >[Previous](microservices-addressability-service-registry.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-addressability-service-registry.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-addressability-service-registry.md index d8489e063dee4..e2d8c1d2ae53e 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-addressability-service-registry.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-addressability-service-registry.md @@ -18,13 +18,13 @@ Note that there's certain overlap between the service registry and the API gatew ## Additional resources - **Chris Richardson. Pattern: Service registry** \ - [*https://microservices.io/patterns/service-registry.html*](https://microservices.io/patterns/service-registry.html) + [https://microservices.io/patterns/service-registry.html](https://microservices.io/patterns/service-registry.html) - **Auth0. The Service Registry** \ - [*https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/*](https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/) + [https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/](https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/) - **Gabriel Schenker. Service discovery** \ - [*https://lostechies.com/gabrielschenker/2016/01/27/service-discovery/*](https://lostechies.com/gabrielschenker/2016/01/27/service-discovery/) + [https://lostechies.com/gabrielschenker/2016/01/27/service-discovery/](https://lostechies.com/gabrielschenker/2016/01/27/service-discovery/) >[!div class="step-by-step"] >[Previous](maintain-microservice-apis.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-architecture.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-architecture.md index 0fce2a412b72c..f02bd159ef714 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-architecture.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/microservices-architecture.md @@ -40,19 +40,19 @@ Of these, only the first three are covered or introduced in this guide. The last ## Additional resources - **Mark Russinovich. Microservices: An application revolution powered by the cloud** \ - [*https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/*](https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/) + [https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/](https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/) - **Martin Fowler. Microservices** \ - [*https://www.martinfowler.com/articles/microservices.html*](https://www.martinfowler.com/articles/microservices.html) + [https://www.martinfowler.com/articles/microservices.html](https://www.martinfowler.com/articles/microservices.html) - **Martin Fowler. Microservice Prerequisites** \ - [*https://martinfowler.com/bliki/MicroservicePrerequisites.html*](https://martinfowler.com/bliki/MicroservicePrerequisites.html) + [https://martinfowler.com/bliki/MicroservicePrerequisites.html](https://martinfowler.com/bliki/MicroservicePrerequisites.html) - **Jimmy Nilsson. Chunk Cloud Computing** \ - [*https://www.infoq.com/articles/CCC-Jimmy-Nilsson*](https://www.infoq.com/articles/CCC-Jimmy-Nilsson) + [https://www.infoq.com/articles/CCC-Jimmy-Nilsson](https://www.infoq.com/articles/CCC-Jimmy-Nilsson) - **Cesar de la Torre. Containerized Docker Application Lifecycle with Microsoft Platform and Tools** (downloadable e-book) \ - [*https://aka.ms/dockerlifecycleebook*](https://aka.ms/dockerlifecycleebook) + [https://aka.ms/dockerlifecycleebook](https://aka.ms/dockerlifecycleebook) >[!div class="step-by-step"] >[Previous](service-oriented-architecture.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md index 173bf1907240d..ffbdd7d79a230 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/resilient-high-availability-microservices.md @@ -53,25 +53,25 @@ Different orchestrators might sound similar, but the diagnostics and health chec ## Additional resources - **The Twelve-Factor App. XI. Logs: Treat logs as event streams** \ - [*https://12factor.net/logs*](https://12factor.net/logs) + [https://12factor.net/logs](https://12factor.net/logs) - **Microsoft Diagnostic EventFlow Library** GitHub repo. \ - [*https://github.com/Azure/diagnostics-eventflow*](https://github.com/Azure/diagnostics-eventflow) + [https://github.com/Azure/diagnostics-eventflow](https://github.com/Azure/diagnostics-eventflow) - **What is Azure Diagnostics** \ - [*https://docs.microsoft.com/azure/azure-diagnostics*](https://docs.microsoft.com/azure/azure-diagnostics) + [https://docs.microsoft.com/azure/azure-diagnostics](https://docs.microsoft.com/azure/azure-diagnostics) - **Connect Windows computers to the Log Analytics service in Azure** \ - [*https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents*](https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents) + [https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents](https://docs.microsoft.com/azure/log-analytics/log-analytics-windows-agents) - **Logging What You Mean: Using the Semantic Logging Application Block** \ - **Splunk** Official site. \ - [*https://www.splunk.com/*](https://www.splunk.com/) + [https://www.splunk.com/](https://www.splunk.com/) - **EventSource Class** API for events tracing for Windows (ETW) \ - [*https://docs.microsoft.com/dotnet/api/system.diagnostics.tracing.eventsource*](xref:System.Diagnostics.Tracing.EventSource) + [https://docs.microsoft.com/dotnet/api/system.diagnostics.tracing.eventsource](xref:System.Diagnostics.Tracing.EventSource) >[!div class="step-by-step"] >[Previous](microservice-based-composite-ui-shape-layout.md) diff --git a/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md b/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md index 6e368b05f1c1d..bc1f45f1661f9 100644 --- a/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md +++ b/docs/standard/microservices-architecture/architect-microservice-container-applications/scalable-available-multi-container-microservice-applications.md @@ -142,13 +142,13 @@ For further information check the article on [Team Development with Azure Dev Sp ## Additional resources - **Getting started with Azure Kubernetes Service (AKS)** \ - [*https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal*](https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal) + [https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal](https://docs.microsoft.com/azure/aks/kubernetes-walkthrough-portal) - **Azure Dev Spaces** \ - [*https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces*](https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces) + [https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces](https://docs.microsoft.com/azure/dev-spaces/azure-dev-spaces) - **Kubernetes** The official site. \ - [*https://kubernetes.io/*](https://kubernetes.io/) + [https://kubernetes.io/](https://kubernetes.io/) >[!div class="step-by-step"] >[Previous](resilient-high-availability-microservices.md) diff --git a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md index e3becd84ff12d..638e27beb152e 100644 --- a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md +++ b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md @@ -58,10 +58,10 @@ You can start coding your application in plain .NET (usually in .NET Core if you ### Additional resources - **Get started with Docker CE for Windows** \ - [*https://docs.docker.com/docker-for-windows/*](https://docs.docker.com/docker-for-windows/) + [https://docs.docker.com/docker-for-windows/](https://docs.docker.com/docker-for-windows/) - **Visual Studio 2017** \ - [*https://visualstudio.microsoft.com/downloads/*](https://aka.ms/vsdownload?utm_source=mscom&utm_campaign=msdocs) + [https://visualstudio.microsoft.com/downloads/](https://aka.ms/vsdownload?utm_source=mscom&utm_campaign=msdocs) ![2 - Write Dockerfiles](./media/image4.png) @@ -113,10 +113,10 @@ You can specify additional configuration settings in the Dockerfile, depending o ### Additional resources - **Building Docker Images for .NET Core Applications** \ - [*https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images*](../../../core/docker/building-net-docker-images.md) + [https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images](../../../core/docker/building-net-docker-images.md) - **Build your own image**. In the official Docker documentation.\ - [*https://docs.docker.com/engine/tutorials/dockerimages/*](https://docs.docker.com/engine/tutorials/dockerimages/) + [https://docs.docker.com/engine/tutorials/dockerimages/](https://docs.docker.com/engine/tutorials/dockerimages/) - **Staying up-to-date with .NET Container Images** \ ** @@ -284,10 +284,10 @@ You can create your own Docker base image from scratch. This scenario is not rec ### Additional resources - **Multi-arch .NET Core images**.\ - [*https://github.com/dotnet/announcements/issues/14*](https://github.com/dotnet/announcements/issues/14) + [https://github.com/dotnet/announcements/issues/14](https://github.com/dotnet/announcements/issues/14) - **Create a base image**. Official Docker documentation.\ - [*https://docs.docker.com/engine/userguide/eng-image/baseimages/*](https://docs.docker.com/engine/userguide/eng-image/baseimages/) + [https://docs.docker.com/engine/userguide/eng-image/baseimages/](https://docs.docker.com/engine/userguide/eng-image/baseimages/) ![3 - Create images defined at Dockerfiles](./media/image7.png) @@ -479,7 +479,7 @@ The important point here is that, as shown in Figure 5-12, in Visual Studio 2017 ### Additional resources - **Deploy an ASP.NET container to a remote Docker host** \ - [*https://docs.microsoft.com/azure/vs-azure-tools-docker-hosting-web-apps-in-docker*](https://docs.microsoft.com/azure/vs-azure-tools-docker-hosting-web-apps-in-docker) + [https://docs.microsoft.com/azure/vs-azure-tools-docker-hosting-web-apps-in-docker](https://docs.microsoft.com/azure/vs-azure-tools-docker-hosting-web-apps-in-docker) ### A note about testing and deploying with orchestrators @@ -516,10 +516,10 @@ If you're developing using the editor/CLI approach, debugging containers is more ### Additional resources - **Debugging apps in a local Docker container** \ - [*https://docs.microsoft.com/azure/vs-azure-tools-docker-edit-and-refresh*](https://docs.microsoft.com/azure/vs-azure-tools-docker-edit-and-refresh) + [https://docs.microsoft.com/azure/vs-azure-tools-docker-edit-and-refresh](https://docs.microsoft.com/azure/vs-azure-tools-docker-edit-and-refresh) - **Steve Lasker. Build, Debug, Deploy ASP.NET Core Apps with Docker.** Video. \ - [*https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T115*](https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T115) + [https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T115](https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T115) ## Simplified workflow when developing containers with Visual Studio @@ -534,7 +534,7 @@ In addition, you need to perform step 2 (adding Docker support to your projects) ### Additional resources - **Steve Lasker. .NET Docker Development with Visual Studio 2017** \ - [*https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111*](https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111) + [https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111](https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111) ## Using PowerShell commands in a Dockerfile to set up Windows Containers @@ -556,7 +556,7 @@ RUN powershell add-windowsfeature web-asp-net45 ### Additional resources - **aspnet-docker/Dockerfile.** Example PowerShell commands to run from dockerfiles to include Windows features.\ - [*https://github.com/Microsoft/aspnet-docker/blob/master/4.7.1-windowsservercore-ltsc2016/runtime/Dockerfile*](https://github.com/Microsoft/aspnet-docker/blob/master/4.7.1-windowsservercore-ltsc2016/runtime/Dockerfile) + [https://github.com/Microsoft/aspnet-docker/blob/master/4.7.1-windowsservercore-ltsc2016/runtime/Dockerfile](https://github.com/Microsoft/aspnet-docker/blob/master/4.7.1-windowsservercore-ltsc2016/runtime/Dockerfile) >[!div class="step-by-step"] >[Previous](index.md) diff --git a/docs/standard/microservices-architecture/docker-application-development-process/index.md b/docs/standard/microservices-architecture/docker-application-development-process/index.md index 479bd1a19c7f1..dff22fedce304 100644 --- a/docs/standard/microservices-architecture/docker-application-development-process/index.md +++ b/docs/standard/microservices-architecture/docker-application-development-process/index.md @@ -26,13 +26,13 @@ By installing [Docker Community Edition (CE)](https://www.docker.com/community-e ### Additional resources - **Visual Studio**. Official site. \ - [*https://visualstudio.microsoft.com/vs/*](https://visualstudio.microsoft.com/vs/) + [https://visualstudio.microsoft.com/vs/](https://visualstudio.microsoft.com/vs/) - **Visual Studio Code**. Official site. \ - [*https://code.visualstudio.com/download*](https://code.visualstudio.com/download) + [https://code.visualstudio.com/download](https://code.visualstudio.com/download) - **Docker Community Edition (CE) for Mac and Windows** \ - [*https://www.docker.com/community-editions*](https://www.docker.com/community-edition) + [https://www.docker.com/community-editions](https://www.docker.com/community-edition) ## .NET languages and frameworks for Docker containers diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/implement-circuit-breaker-pattern.md b/docs/standard/microservices-architecture/implement-resilient-applications/implement-circuit-breaker-pattern.md index 15ba9697abef3..bd8665d7eb15d 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/implement-circuit-breaker-pattern.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/implement-circuit-breaker-pattern.md @@ -142,7 +142,7 @@ Finally, another possibility for the `CircuitBreakerPolicy` is to use `Isolate` ## Additional resources - **Circuit Breaker pattern**\ - [*https://docs.microsoft.com/azure/architecture/patterns/circuit-breaker*](/azure/architecture/patterns/circuit-breaker) + [https://docs.microsoft.com/azure/architecture/patterns/circuit-breaker](/azure/architecture/patterns/circuit-breaker) >[!div class="step-by-step"] >[Previous](implement-http-call-retries-exponential-backoff-polly.md) diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md b/docs/standard/microservices-architecture/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md index 746a742260a42..fc93ce667af96 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md @@ -67,16 +67,16 @@ Policy ## Additional resources - **Retry pattern**\ - [*https://docs.microsoft.com/azure/architecture/patterns/retry*](/azure/architecture/patterns/retry) + [https://docs.microsoft.com/azure/architecture/patterns/retry](/azure/architecture/patterns/retry) - **Polly and HttpClientFactory**\ - [*https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory*](https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory) + [https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory](https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory) - **Polly (.NET resilience and transient-fault-handling library)**\ - [*https://github.com/App-vNext/Polly*](https://github.com/App-vNext/Polly) + [https://github.com/App-vNext/Polly](https://github.com/App-vNext/Polly) - **Marc Brooker. Jitter: Making Things Better With Randomness**\ - [*https://brooker.co.za/blog/2015/03/21/backoff.html*](https://brooker.co.za/blog/2015/03/21/backoff.html) + [https://brooker.co.za/blog/2015/03/21/backoff.html](https://brooker.co.za/blog/2015/03/21/backoff.html) >[!div class="step-by-step"] >[Previous](explore-custom-http-call-retries-exponential-backoff.md) diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/implement-resilient-entity-framework-core-sql-connections.md b/docs/standard/microservices-architecture/implement-resilient-applications/implement-resilient-entity-framework-core-sql-connections.md index c91d8b269c5dc..409615d32dcda 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/implement-resilient-entity-framework-core-sql-connections.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/implement-resilient-entity-framework-core-sql-connections.md @@ -143,10 +143,10 @@ public class ResilientTransaction ## Additional resources - **Connection Resiliency and Command Interception with EF in an ASP.NET MVC Application** \ - [*https://docs.microsoft.com/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/connection-resiliency-and-command-interception-with-the-entity-framework-in-an-asp-net-mvc-application*](/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/connection-resiliency-and-command-interception-with-the-entity-framework-in-an-asp-net-mvc-application) + [https://docs.microsoft.com/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/connection-resiliency-and-command-interception-with-the-entity-framework-in-an-asp-net-mvc-application](/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/connection-resiliency-and-command-interception-with-the-entity-framework-in-an-asp-net-mvc-application) - **Cesar de la Torre. Using Resilient Entity Framework Core SQL Connections and Transactions** \ - [*https://blogs.msdn.microsoft.com/cesardelatorre/2017/03/26/using-resilient-entity-framework-core-sql-connections-and-transactions-retries-with-exponential-backoff/*](https://blogs.msdn.microsoft.com/cesardelatorre/2017/03/26/using-resilient-entity-framework-core-sql-connections-and-transactions-retries-with-exponential-backoff/) + [https://blogs.msdn.microsoft.com/cesardelatorre/2017/03/26/using-resilient-entity-framework-core-sql-connections-and-transactions-retries-with-exponential-backoff/](https://blogs.msdn.microsoft.com/cesardelatorre/2017/03/26/using-resilient-entity-framework-core-sql-connections-and-transactions-retries-with-exponential-backoff/) >[!div class="step-by-step"] >[Previous](implement-retries-exponential-backoff.md) diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/monitor-app-health.md b/docs/standard/microservices-architecture/implement-resilient-applications/monitor-app-health.md index c57b8ec2f3308..ad8c5678a20bd 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/monitor-app-health.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/monitor-app-health.md @@ -270,16 +270,16 @@ Finally, if you're storing all the event streams, you can use Microsoft Power BI ## Additional resources - **HealthChecks and HealthChecks UI for ASP.NET Core** - [*https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks*](https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks ) + [https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks](https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks ) - **Introduction to Service Fabric health monitoring** - [*https://docs.microsoft.com/azure/service-fabric/service-fabric-health-introduction*](/azure/service-fabric/service-fabric-health-introduction) + [https://docs.microsoft.com/azure/service-fabric/service-fabric-health-introduction](/azure/service-fabric/service-fabric-health-introduction) - **Azure Application Insights** - [*https://azure.microsoft.com/services/application-insights/*](https://azure.microsoft.com/services/application-insights/) + [https://azure.microsoft.com/services/application-insights/](https://azure.microsoft.com/services/application-insights/) - **Microsoft Operations Management Suite** - [*https://www.microsoft.com/en-us/cloud-platform/operations-management-suite*](https://www.microsoft.com/en-us/cloud-platform/operations-management-suite) + [https://www.microsoft.com/en-us/cloud-platform/operations-management-suite](https://www.microsoft.com/en-us/cloud-platform/operations-management-suite) >[!div class="step-by-step"] >[Previous](implement-circuit-breaker-pattern.md) diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/partial-failure-strategies.md b/docs/standard/microservices-architecture/implement-resilient-applications/partial-failure-strategies.md index 62395ddbc34e1..94209d0c497f7 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/partial-failure-strategies.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/partial-failure-strategies.md @@ -24,19 +24,19 @@ Strategies for dealing with partial failures include the following. ## Additional resources - **Resiliency patterns**\ - [*https://docs.microsoft.com/azure/architecture/patterns/category/resiliency*](/azure/architecture/patterns/category/resiliency) + [https://docs.microsoft.com/azure/architecture/patterns/category/resiliency](/azure/architecture/patterns/category/resiliency) - **Adding Resilience and Optimizing Performance**\ - **Bulkhead.** GitHub repo. Implementation with Polly policy.\ - [*https://github.com/App-vNext/Polly/wiki/Bulkhead*](https://github.com/App-vNext/Polly/wiki/Bulkhead) + [https://github.com/App-vNext/Polly/wiki/Bulkhead](https://github.com/App-vNext/Polly/wiki/Bulkhead) - **Designing resilient applications for Azure**\ - [*https://docs.microsoft.com/azure/architecture/resiliency/*](/azure/architecture/resiliency/) + [https://docs.microsoft.com/azure/architecture/resiliency/](/azure/architecture/resiliency/) - **Transient fault handling**\ - [*https://docs.microsoft.com/azure/architecture/best-practices/transient-faults*](/azure/architecture/best-practices/transient-faults) + [https://docs.microsoft.com/azure/architecture/best-practices/transient-faults](/azure/architecture/best-practices/transient-faults) >[!div class="step-by-step"] >[Previous](handle-partial-failure.md) diff --git a/docs/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests.md b/docs/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests.md index 011ff1e16270e..acebdfd672142 100644 --- a/docs/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests.md +++ b/docs/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests.md @@ -152,10 +152,10 @@ Up to this point, the code shown is just performing regular Http requests, but t ## Additional resources - **Using HttpClientFactory in .NET Core**\ - [*https://docs.microsoft.com/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1*](/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1) + [https://docs.microsoft.com/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1](/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1) - **HttpClientFactory GitHub repo**\ - [*https://github.com/aspnet/Extensions/tree/master/src/HttpClientFactory*](https://github.com/aspnet/Extensions/tree/master/src/HttpClientFactory) + >[!div class="step-by-step"] >[Previous](explore-custom-http-call-retries-exponential-backoff.md) diff --git a/docs/standard/microservices-architecture/index.md b/docs/standard/microservices-architecture/index.md index 6828c430220ce..9f64e5653ec79 100644 --- a/docs/standard/microservices-architecture/index.md +++ b/docs/standard/microservices-architecture/index.md @@ -52,7 +52,7 @@ This guide does not focus on the application lifecycle, DevOps, CI/CD pipelines, ### Additional resources - **Containerized Docker Application Lifecycle with Microsoft Platform and Tools** (downloadable e-book) - [*https://aka.ms/dockerlifecycleebook*](https://aka.ms/dockerlifecycleebook) + [https://aka.ms/dockerlifecycleebook](https://aka.ms/dockerlifecycleebook) ## Who should use this guide diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/client-side-validation.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/client-side-validation.md index decc84561f690..4ab95a08af48e 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/client-side-validation.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/client-side-validation.md @@ -24,26 +24,26 @@ The implementation of client-side validation depends on what kind of client appl ### Validation in Xamarin mobile apps - **Validate Text Input and Show Errors** \ - [*https://developer.xamarin.com/recipes/ios/standard\_controls/text\_field/validate\_input/*](https://developer.xamarin.com/recipes/ios/standard_controls/text_field/validate_input/) + [https://developer.xamarin.com/recipes/ios/standard\_controls/text\_field/validate\_input/](https://developer.xamarin.com/recipes/ios/standard_controls/text_field/validate_input/) - **Validation Callback** \ - [*https://developer.xamarin.com/samples/xamarin-forms/XAML/ValidationCallback/*](https://developer.xamarin.com/samples/xamarin-forms/XAML/ValidationCallback/) + [https://developer.xamarin.com/samples/xamarin-forms/XAML/ValidationCallback/](https://developer.xamarin.com/samples/xamarin-forms/XAML/ValidationCallback/) ### Validation in ASP.NET Core apps - **Rick Anderson. Adding validation** \ - [*https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation*](https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation) + [https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation](https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation) ### Validation in SPA Web apps (Angular 2, TypeScript, JavaScript) - **Ado Kukic. Angular 2 Form Validation** \ - [*https://scotch.io/tutorials/angular-2-form-validation*](https://scotch.io/tutorials/angular-2-form-validation) + [https://scotch.io/tutorials/angular-2-form-validation](https://scotch.io/tutorials/angular-2-form-validation) - **Form Validation** \ - [*https://angular.io/docs/ts/latest/cookbook/form-validation.html*](https://angular.io/docs/ts/latest/cookbook/form-validation.html) + [https://angular.io/docs/ts/latest/cookbook/form-validation.html](https://angular.io/docs/ts/latest/cookbook/form-validation.html) - **Validation.** Breeze documentation. \ - [*https://breeze.github.io/doc-js/validation.html*](https://breeze.github.io/doc-js/validation.html) + [https://breeze.github.io/doc-js/validation.html](https://breeze.github.io/doc-js/validation.html) In summary, these are the most important concepts in regards to validation: diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice.md index 2a6a52604b9be..c2b41274c9a9d 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/ddd-oriented-microservice.md @@ -90,13 +90,13 @@ This layer design should be independent for each microservice. As noted earlier, #### Additional resources - **DevIQ. Persistence Ignorance principle** \ - [*https://deviq.com/persistence-ignorance/*](https://deviq.com/persistence-ignorance/) + [https://deviq.com/persistence-ignorance/](https://deviq.com/persistence-ignorance/) - **Oren Eini. Infrastructure Ignorance** \ - [*https://ayende.com/blog/3137/infrastructure-ignorance*](https://ayende.com/blog/3137/infrastructure-ignorance) + [https://ayende.com/blog/3137/infrastructure-ignorance](https://ayende.com/blog/3137/infrastructure-ignorance) - **Angel Lopez. Layered Architecture In Domain-Driven Design** \ - [*https://ajlopez.wordpress.com/2008/09/12/layered-architecture-in-domain-driven-design/*](https://ajlopez.wordpress.com/2008/09/12/layered-architecture-in-domain-driven-design/) + [https://ajlopez.wordpress.com/2008/09/12/layered-architecture-in-domain-driven-design/](https://ajlopez.wordpress.com/2008/09/12/layered-architecture-in-domain-driven-design/) >[!div class="step-by-step"] >[Previous](cqrs-microservice-reads.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-events-design-implementation.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-events-design-implementation.md index d5a5c439ca27f..62fa583907d70 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-events-design-implementation.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-events-design-implementation.md @@ -341,37 +341,37 @@ As stated, use domain events to explicitly implement side effects of changes wit ## Additional resources - **Greg Young. What is a Domain Event?** \ - [*http://codebetter.com/gregyoung/2010/04/11/what-is-a-domain-event/*](http://codebetter.com/gregyoung/2010/04/11/what-is-a-domain-event/) + [http://codebetter.com/gregyoung/2010/04/11/what-is-a-domain-event/](http://codebetter.com/gregyoung/2010/04/11/what-is-a-domain-event/) - **Jan Stenberg. Domain Events and Eventual Consistency** \ - [*https://www.infoq.com/news/2015/09/domain-events-consistency*](https://www.infoq.com/news/2015/09/domain-events-consistency) + [https://www.infoq.com/news/2015/09/domain-events-consistency](https://www.infoq.com/news/2015/09/domain-events-consistency) - **Jimmy Bogard. A better domain events pattern** \ - [*https://lostechies.com/jimmybogard/2014/05/13/a-better-domain-events-pattern/*](https://lostechies.com/jimmybogard/2014/05/13/a-better-domain-events-pattern/) + [https://lostechies.com/jimmybogard/2014/05/13/a-better-domain-events-pattern/](https://lostechies.com/jimmybogard/2014/05/13/a-better-domain-events-pattern/) - **Vaughn Vernon. Effective Aggregate Design Part II: Making Aggregates Work Together** \ - [*https://dddcommunity.org/wp-content/uploads/files/pdf\_articles/Vernon\_2011\_2.pdf*](https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf) + [https://dddcommunity.org/wp-content/uploads/files/pdf\_articles/Vernon\_2011\_2.pdf](https://dddcommunity.org/wp-content/uploads/files/pdf_articles/Vernon_2011_2.pdf) - **Jimmy Bogard. Strengthening your domain: Domain Events** \ - [*https://lostechies.com/jimmybogard/2010/04/08/strengthening-your-domain-domain-events/*](https://lostechies.com/jimmybogard/2010/04/08/strengthening-your-domain-domain-events/) + [https://lostechies.com/jimmybogard/2010/04/08/strengthening-your-domain-domain-events/](https://lostechies.com/jimmybogard/2010/04/08/strengthening-your-domain-domain-events/) - **Tony Truong. Domain Events Pattern Example** \ - [*https://www.tonytruong.net/domain-events-pattern-example/*](https://www.tonytruong.net/domain-events-pattern-example/) + [https://www.tonytruong.net/domain-events-pattern-example/](https://www.tonytruong.net/domain-events-pattern-example/) - **Udi Dahan. How to create fully encapsulated Domain Models** \ - [*http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/*](http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/) + [http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/](http://udidahan.com/2008/02/29/how-to-create-fully-encapsulated-domain-models/) - **Udi Dahan. Domain Events – Take 2** \ - [*http://udidahan.com/2008/08/25/domain-events-take-2/*](http://udidahan.com/2008/08/25/domain-events-take-2/%20) + [http://udidahan.com/2008/08/25/domain-events-take-2/](http://udidahan.com/2008/08/25/domain-events-take-2/%20) - **Udi Dahan. Domain Events – Salvation** \ - [*http://udidahan.com/2009/06/14/domain-events-salvation/*](http://udidahan.com/2009/06/14/domain-events-salvation/) + [http://udidahan.com/2009/06/14/domain-events-salvation/](http://udidahan.com/2009/06/14/domain-events-salvation/) - **Jan Kronquist. Don't publish Domain Events, return them!** \ - [*https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/*](https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/) + [https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/](https://blog.jayway.com/2013/06/20/dont-publish-domain-events-return-them/) - **Cesar de la Torre. Domain Events vs. Integration Events in DDD and microservices architectures** \ - [*https://blogs.msdn.microsoft.com/cesardelatorre/2017/02/07/domain-events-vs-integration-events-in-domain-driven-design-and-microservices-architectures/*](https://blogs.msdn.microsoft.com/cesardelatorre/2017/02/07/domain-events-vs-integration-events-in-domain-driven-design-and-microservices-architectures/) + [https://blogs.msdn.microsoft.com/cesardelatorre/2017/02/07/domain-events-vs-integration-events-in-domain-driven-design-and-microservices-architectures/](https://blogs.msdn.microsoft.com/cesardelatorre/2017/02/07/domain-events-vs-integration-events-in-domain-driven-design-and-microservices-architectures/) >[!div class="step-by-step"] >[Previous](client-side-validation.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-model-layer-validations.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-model-layer-validations.md index 6ffc35d29757c..ddd85c457236d 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-model-layer-validations.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-model-layer-validations.md @@ -83,25 +83,25 @@ Using field validation with data annotations, for example, you do not duplicate ## Additional resources - **Rachel Appel. Introduction to model validation in ASP.NET Core MVC** \ - [*https://docs.microsoft.com/aspnet/core/mvc/models/validation*](https://docs.microsoft.com/aspnet/core/mvc/models/validation) + [https://docs.microsoft.com/aspnet/core/mvc/models/validation](https://docs.microsoft.com/aspnet/core/mvc/models/validation) - **Rick Anderson. Adding validation** \ - [*https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation*](https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation) + [https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation](https://docs.microsoft.com/aspnet/core/tutorials/first-mvc-app/validation) - **Martin Fowler. Replacing Throwing Exceptions with Notification in Validations** \ - [*https://martinfowler.com/articles/replaceThrowWithNotification.html*](https://martinfowler.com/articles/replaceThrowWithNotification.html) + [https://martinfowler.com/articles/replaceThrowWithNotification.html](https://martinfowler.com/articles/replaceThrowWithNotification.html) - **Specification and Notification Patterns** \ - [*https://www.codeproject.com/Tips/790758/Specification-and-Notification-Patterns*](https://www.codeproject.com/Tips/790758/Specification-and-Notification-Patterns) + [https://www.codeproject.com/Tips/790758/Specification-and-Notification-Patterns](https://www.codeproject.com/Tips/790758/Specification-and-Notification-Patterns) - **Lev Gorodinski. Validation in Domain-Driven Design (DDD)** \ - [*http://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/*](http://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/) + [http://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/](http://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/) - **Colin Jack. Domain Model Validation** \ - [*https://colinjack.blogspot.com/2008/03/domain-model-validation.html*](https://colinjack.blogspot.com/2008/03/domain-model-validation.html) + [https://colinjack.blogspot.com/2008/03/domain-model-validation.html](https://colinjack.blogspot.com/2008/03/domain-model-validation.html) - **Jimmy Bogard. Validation in a DDD world** \ - [*https://lostechies.com/jimmybogard/2009/02/15/validation-in-a-ddd-world/*](https://lostechies.com/jimmybogard/2009/02/15/validation-in-a-ddd-world/) + [https://lostechies.com/jimmybogard/2009/02/15/validation-in-a-ddd-world/](https://lostechies.com/jimmybogard/2009/02/15/validation-in-a-ddd-world/) > [!div class="step-by-step"] > [Previous](enumeration-classes-over-enum-types.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types.md index 019704ec84991..cb06e26b437b5 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types.md @@ -99,25 +99,25 @@ public abstract class CardType : Enumeration ## Additional resources - **Enum’s are evil—update** \ - [*https://www.planetgeek.ch/2009/07/01/enums-are-evil/*](https://www.planetgeek.ch/2009/07/01/enums-are-evil/) + [https://www.planetgeek.ch/2009/07/01/enums-are-evil/](https://www.planetgeek.ch/2009/07/01/enums-are-evil/) - **Daniel Hardman. How Enums Spread Disease — And How To Cure It** \ - [*https://codecraft.co/2012/10/29/how-enums-spread-disease-and-how-to-cure-it/*](https://codecraft.co/2012/10/29/how-enums-spread-disease-and-how-to-cure-it/) + [https://codecraft.co/2012/10/29/how-enums-spread-disease-and-how-to-cure-it/](https://codecraft.co/2012/10/29/how-enums-spread-disease-and-how-to-cure-it/) - **Jimmy Bogard. Enumeration classes** \ - [*https://lostechies.com/jimmybogard/2008/08/12/enumeration-classes/*](https://lostechies.com/jimmybogard/2008/08/12/enumeration-classes/) + [https://lostechies.com/jimmybogard/2008/08/12/enumeration-classes/](https://lostechies.com/jimmybogard/2008/08/12/enumeration-classes/) - **Steve Smith. Enum Alternatives in C#** \ - [*https://ardalis.com/enum-alternatives-in-c*](https://ardalis.com/enum-alternatives-in-c) + [https://ardalis.com/enum-alternatives-in-c](https://ardalis.com/enum-alternatives-in-c) - **Enumeration.cs.** Base Enumeration class in eShopOnContainers \ - [*https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs*](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs) + [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/Enumeration.cs) - **CardType.cs**. Sample Enumeration class in eShopOnContainers. \ - [*https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs*](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs) + [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/CardType.cs) - **SmartEnum**. Ardalis - Classes to help produce strongly typed smarter enums in .NET. \ - [*https://www.nuget.org/packages/Ardalis.SmartEnum/*](https://www.nuget.org/packages/Ardalis.SmartEnum/) + [https://www.nuget.org/packages/Ardalis.SmartEnum/](https://www.nuget.org/packages/Ardalis.SmartEnum/) >[!div class="step-by-step"] >[Previous](implement-value-objects.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/eshoponcontainers-cqrs-ddd-microservice.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/eshoponcontainers-cqrs-ddd-microservice.md index 557c7697bcbd6..f42cb53736ba1 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/eshoponcontainers-cqrs-ddd-microservice.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/eshoponcontainers-cqrs-ddd-microservice.md @@ -38,25 +38,25 @@ There is only one application architecture: the architecture of the system or en ### Additional resources - **Martin Fowler. CQRS** \ - [*https://martinfowler.com/bliki/CQRS.html*](https://martinfowler.com/bliki/CQRS.html) + [https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html) - **Greg Young. CQS vs. CQRS** \ - [*http://codebetter.com/gregyoung/2009/08/13/command-query-separation/*](http://codebetter.com/gregyoung/2009/08/13/command-query-separation/) + [http://codebetter.com/gregyoung/2009/08/13/command-query-separation/](http://codebetter.com/gregyoung/2009/08/13/command-query-separation/) - **Greg Young. CQRS Documents** \ - [*https://cqrs.files.wordpress.com/2010/11/cqrs\_documents.pdf*](https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf) + [https://cqrs.files.wordpress.com/2010/11/cqrs\_documents.pdf](https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf) - **Greg Young. CQRS, Task Based UIs and Event Sourcing** \ - [*http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/*](http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/) + [http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/](http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/) - **Udi Dahan. Clarified CQRS** \ - [*http://udidahan.com/2009/12/09/clarified-cqrs/*](http://udidahan.com/2009/12/09/clarified-cqrs/) + [http://udidahan.com/2009/12/09/clarified-cqrs/](http://udidahan.com/2009/12/09/clarified-cqrs/) - **CQRS** \ - [*http://udidahan.com/2009/12/09/clarified-cqrs/*](http://udidahan.com/2009/12/09/clarified-cqrs/) + [http://udidahan.com/2009/12/09/clarified-cqrs/](http://udidahan.com/2009/12/09/clarified-cqrs/) - **Event-Sourcing (ES)** \ - [*http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/*](http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/) + [http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/](http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/) >[!div class="step-by-step"] >[Previous](apply-simplified-microservice-cqrs-ddd-patterns.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/implement-value-objects.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/implement-value-objects.md index 5ca1c703a8fb7..c0fd96cae1a00 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/implement-value-objects.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/implement-value-objects.md @@ -305,25 +305,25 @@ public class Address ## Additional resources - **Martin Fowler. ValueObject pattern** \ - [*https://martinfowler.com/bliki/ValueObject.html*](https://martinfowler.com/bliki/ValueObject.html) + [https://martinfowler.com/bliki/ValueObject.html](https://martinfowler.com/bliki/ValueObject.html) - **Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software.** (Book; includes a discussion of value objects) \ - [*https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/*](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) + [https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) - **Vaughn Vernon. Implementing Domain-Driven Design.** (Book; includes a discussion of value objects) \ - [*https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/*](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/) + [https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/) - **Shadow Properties** \ - [*https://docs.microsoft.com/ef/core/modeling/shadow-properties*](https://docs.microsoft.com/ef/core/modeling/shadow-properties) + [https://docs.microsoft.com/ef/core/modeling/shadow-properties](https://docs.microsoft.com/ef/core/modeling/shadow-properties) - **Complex types and/or value objects**. Discussion in the EF Core GitHub repo (Issues tab) \ - [*https://github.com/aspnet/EntityFramework/issues/246*](https://github.com/aspnet/EntityFramework/issues/246) + [https://github.com/aspnet/EntityFramework/issues/246](https://github.com/aspnet/EntityFramework/issues/246) - **ValueObject.cs.** Base value object class in eShopOnContainers.** \ - [*https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/ValueObject.cs*](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/ValueObject.cs) + [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/ValueObject.cs](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/SeedWork/ValueObject.cs) - **Address class.** Sample value object class in eShopOnContainers. \ - [*https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Address.cs*](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Address.cs) + [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Address.cs](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Address.cs) > [!div class="step-by-step"] > [Previous](seedwork-domain-model-base-classes-interfaces.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/index.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/index.md index e8a46f076f6e4..7ef1a9f6168f1 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/index.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/index.md @@ -26,44 +26,44 @@ DDD is a large topic with a rich set of resources for learning. You can start wi ##### DDD (Domain-Driven Design) - **Eric Evans. Domain Language** \ - [*https://domainlanguage.com/*](https://domainlanguage.com/) + [https://domainlanguage.com/](https://domainlanguage.com/) - **Martin Fowler. Domain-Driven Design** \ - [*https://martinfowler.com/tags/domain%20driven%20design.html*](https://martinfowler.com/tags/domain%20driven%20design.html) + [https://martinfowler.com/tags/domain%20driven%20design.html](https://martinfowler.com/tags/domain%20driven%20design.html) - **Jimmy Bogard. Strengthening your domain: a primer** \ - [*https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/*](https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/) + [https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/](https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/) ##### DDD books - **Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software** \ - [*https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/*](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) + [https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) - **Eric Evans. Domain-Driven Design Reference: Definitions and Pattern Summaries** \ - [*https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/*](https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/) + [https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/](https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/) - **Vaughn Vernon. Implementing Domain-Driven Design** \ - [*https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/*](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/) + [https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/) - **Vaughn Vernon. Domain-Driven Design Distilled** \ - [*https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/*](https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/) + [https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/](https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/) - **Jimmy Nilsson. Applying Domain-Driven Design and Patterns** \ - [*https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/*](https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/) + [https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/](https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/) - **Cesar de la Torre. N-Layered Domain-Oriented Architecture Guide with .NET** \ - [*https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/*](https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/) + [https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/](https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/) - **Abel Avram and Floyd Marinescu. Domain-Driven Design Quickly** \ - [*https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/*](https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/) + [https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/](https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/) - **Scott Millett, Nick Tune - Patterns, Principles, and Practices of Domain-Driven Design** \ - [*http://www.wrox.com/WileyCDA/WroxTitle/Patterns-Principles-and-Practices-of-Domain-Driven-Design.productCd-1118714709.html*](http://www.wrox.com/WileyCDA/WroxTitle/Patterns-Principles-and-Practices-of-Domain-Driven-Design.productCd-1118714709.html) + [http://www.wrox.com/WileyCDA/WroxTitle/Patterns-Principles-and-Practices-of-Domain-Driven-Design.productCd-1118714709.html](http://www.wrox.com/WileyCDA/WroxTitle/Patterns-Principles-and-Practices-of-Domain-Driven-Design.productCd-1118714709.html) ##### DDD training - **Julie Lerman and Steve Smith. Domain-Driven Design Fundamentals** \ - [*https://bit.ly/PS-DDD*](https://bit.ly/PS-DDD) + [https://bit.ly/PS-DDD](https://bit.ly/PS-DDD) >[!div class="step-by-step"] >[Previous](../multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design.md index 2007094876199..04a2de9dae17b 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design.md @@ -105,24 +105,24 @@ Repositories might be useful, but they are not critical for your DDD design, in ### Repository pattern - **The Repository pattern** \ - [*https://deviq.com/repository-pattern/*](https://deviq.com/repository-pattern/) + [https://deviq.com/repository-pattern/](https://deviq.com/repository-pattern/) - **Edward Hieatt and Rob Mee. Repository pattern.** \ - [*https://martinfowler.com/eaaCatalog/repository.html*](https://martinfowler.com/eaaCatalog/repository.html) + [https://martinfowler.com/eaaCatalog/repository.html](https://martinfowler.com/eaaCatalog/repository.html) - **The Repository pattern** \ - [*https://docs.microsoft.com/previous-versions/msp-n-p/ff649690(v=pandp.10)*](https://docs.microsoft.com/previous-versions/msp-n-p/ff649690(v=pandp.10)) + [https://docs.microsoft.com/previous-versions/msp-n-p/ff649690(v=pandp.10)](https://docs.microsoft.com/previous-versions/msp-n-p/ff649690(v=pandp.10)) - **Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software.** (Book; includes a discussion of the Repository pattern) \ - [*https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/*](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) + [https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) ### Unit of Work pattern - **Martin Fowler. Unit of Work pattern.** \ - [*https://martinfowler.com/eaaCatalog/unitOfWork.html*](https://martinfowler.com/eaaCatalog/unitOfWork.html) + [https://martinfowler.com/eaaCatalog/unitOfWork.html](https://martinfowler.com/eaaCatalog/unitOfWork.html) - **Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application** \ - [*https://docs.microsoft.com/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application*](https://docs.microsoft.com/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application) + [https://docs.microsoft.com/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application](https://docs.microsoft.com/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application) >[!div class="step-by-step"] >[Previous](domain-events-design-implementation.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-implemenation-entity-framework-core.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-implemenation-entity-framework-core.md index 4430f9c1816fc..698f8c0ff8a3c 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-implemenation-entity-framework-core.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-implemenation-entity-framework-core.md @@ -21,16 +21,16 @@ Since an introduction to EF Core is already available in Microsoft documentation #### Additional resources - **Entity Framework Core** \ - [*https://docs.microsoft.com/ef/core/*](https://docs.microsoft.com/ef/core/) + [https://docs.microsoft.com/ef/core/](https://docs.microsoft.com/ef/core/) - **Getting started with ASP.NET Core and Entity Framework Core using Visual Studio** \ - [*https://docs.microsoft.com/aspnet/core/data/ef-mvc/*](https://docs.microsoft.com/aspnet/core/data/ef-mvc/) + [https://docs.microsoft.com/aspnet/core/data/ef-mvc/](https://docs.microsoft.com/aspnet/core/data/ef-mvc/) - **DbContext Class** \ - [*https://docs.microsoft.com/ef/core/api/microsoft.entityframeworkcore.dbcontext*](https://docs.microsoft.com/ef/core/api/microsoft.entityframeworkcore.dbcontext) + [https://docs.microsoft.com/ef/core/api/microsoft.entityframeworkcore.dbcontext](https://docs.microsoft.com/ef/core/api/microsoft.entityframeworkcore.dbcontext) - **Compare EF Core & EF6.x** \ - [*https://docs.microsoft.com/ef/efcore-and-ef6/index*](https://docs.microsoft.com/ef/efcore-and-ef6/index) + [https://docs.microsoft.com/ef/efcore-and-ef6/index](https://docs.microsoft.com/ef/efcore-and-ef6/index) ## Infrastructure in Entity Framework Core from a DDD perspective @@ -230,13 +230,13 @@ Note that using the singleton lifetime for the repository could cause you seriou #### Additional resources - **Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application** \ - [*https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application*](https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application) + [https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application](https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application) - **Jonathan Allen. Implementation Strategies for the Repository Pattern with Entity Framework, Dapper, and Chain** \ - [*https://www.infoq.com/articles/repository-implementation-strategies*](https://www.infoq.com/articles/repository-implementation-strategies) + [https://www.infoq.com/articles/repository-implementation-strategies](https://www.infoq.com/articles/repository-implementation-strategies) - **Cesar de la Torre. Comparing ASP.NET Core IoC container service lifetimes with Autofac IoC container instance scopes** \ - [*https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/*](https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/) + [https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/](https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/) ## Table mapping @@ -447,22 +447,22 @@ Although we don’t recommend to return IQueryable from a repository, it’s per #### Additional resources - **Table Mapping** \ - [*https://docs.microsoft.com/ef/core/modeling/relational/tables*](https://docs.microsoft.com/ef/core/modeling/relational/tables) + [https://docs.microsoft.com/ef/core/modeling/relational/tables](https://docs.microsoft.com/ef/core/modeling/relational/tables) - **Use HiLo to generate keys with Entity Framework Core** \ - [*https://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/*](https://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/) + [https://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/](https://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/) - **Backing Fields** \ - [*https://docs.microsoft.com/ef/core/modeling/backing-field*](https://docs.microsoft.com/ef/core/modeling/backing-field) + [https://docs.microsoft.com/ef/core/modeling/backing-field](https://docs.microsoft.com/ef/core/modeling/backing-field) - **Steve Smith. Encapsulated Collections in Entity Framework Core** \ - [*https://ardalis.com/encapsulated-collections-in-entity-framework-core*](https://ardalis.com/encapsulated-collections-in-entity-framework-core) + [https://ardalis.com/encapsulated-collections-in-entity-framework-core](https://ardalis.com/encapsulated-collections-in-entity-framework-core) - **Shadow Properties** \ - [*https://docs.microsoft.com/ef/core/modeling/shadow-properties*](https://docs.microsoft.com/ef/core/modeling/shadow-properties) + [https://docs.microsoft.com/ef/core/modeling/shadow-properties](https://docs.microsoft.com/ef/core/modeling/shadow-properties) - **The Specification pattern** \ - [*https://deviq.com/specification-pattern/*](https://deviq.com/specification-pattern/) + [https://deviq.com/specification-pattern/](https://deviq.com/specification-pattern/) > [!div class="step-by-step"] > [Previous](infrastructure-persistence-layer-design.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api.md index 651737b00bda7..dfc0fbfde55b2 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api.md @@ -107,10 +107,10 @@ When using DI in .NET Core, you might want to be able to scan an assembly and au #### Additional resources - **Matthew King. Registering services with Scrutor** \ - [*https://www.mking.net/blog/registering-services-with-scrutor*](https://www.mking.net/blog/registering-services-with-scrutor) + [https://www.mking.net/blog/registering-services-with-scrutor](https://www.mking.net/blog/registering-services-with-scrutor) - **Kristian Hellang. Scrutor.** GitHub repo. \ - [*https://github.com/khellang/Scrutor*](https://github.com/khellang/Scrutor) + [https://github.com/khellang/Scrutor](https://github.com/khellang/Scrutor) #### Use Autofac as an IoC container @@ -162,13 +162,13 @@ The instance scope type determines how an instance is shared between requests fo #### Additional resources - **Introduction to Dependency Injection in ASP.NET Core** \ - [*https://docs.microsoft.com/aspnet/core/fundamentals/dependency-injection*](https://docs.microsoft.com/aspnet/core/fundamentals/dependency-injection) + [https://docs.microsoft.com/aspnet/core/fundamentals/dependency-injection](https://docs.microsoft.com/aspnet/core/fundamentals/dependency-injection) - **Autofac.** Official documentation. \ - [*http://docs.autofac.org/en/latest/*](http://docs.autofac.org/en/latest/) + [http://docs.autofac.org/en/latest/](http://docs.autofac.org/en/latest/) - **Comparing ASP.NET Core IoC container service lifetimes with Autofac IoC container instance scopes - Cesar de la Torre.** \ - [*https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/*](https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/) + [https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/](https://blogs.msdn.microsoft.com/cesardelatorre/2017/01/26/comparing-asp-net-core-ioc-service-life-times-and-autofac-ioc-instance-scopes/) ## Implement the Command and Command Handler patterns @@ -392,19 +392,19 @@ These are additional steps a command handler should take: #### Additional resources - **Mark Seemann. At the Boundaries, Applications are Not Object-Oriented** \ - [*https://blog.ploeh.dk/2011/05/31/AttheBoundaries,ApplicationsareNotObject-Oriented/*](https://blog.ploeh.dk/2011/05/31/AttheBoundaries,ApplicationsareNotObject-Oriented/) + [https://blog.ploeh.dk/2011/05/31/AttheBoundaries,ApplicationsareNotObject-Oriented/](https://blog.ploeh.dk/2011/05/31/AttheBoundaries,ApplicationsareNotObject-Oriented/) - **Commands and events** \ - [*http://cqrs.nu/Faq/commands-and-events*](http://cqrs.nu/Faq/commands-and-events) + [http://cqrs.nu/Faq/commands-and-events](http://cqrs.nu/Faq/commands-and-events) - **What does a command handler do?** \ - [*http://cqrs.nu/Faq/command-handlers*](http://cqrs.nu/Faq/command-handlers) + [http://cqrs.nu/Faq/command-handlers](http://cqrs.nu/Faq/command-handlers) - **Jimmy Bogard. Domain Command Patterns – Handlers** \ - [*https://jimmybogard.com/domain-command-patterns-handlers/*](https://jimmybogard.com/domain-command-patterns-handlers/) + [https://jimmybogard.com/domain-command-patterns-handlers/](https://jimmybogard.com/domain-command-patterns-handlers/) - **Jimmy Bogard. Domain Command Patterns – Validation** \ - [*https://jimmybogard.com/domain-command-patterns-validation/*](https://jimmybogard.com/domain-command-patterns-validation/) + [https://jimmybogard.com/domain-command-patterns-validation/](https://jimmybogard.com/domain-command-patterns-validation/) ## The Command process pipeline: how to trigger a command handler @@ -792,43 +792,43 @@ In a similar way, you could implement other behaviors for additional aspects or ##### The mediator pattern - **Mediator pattern** \ - [*https://en.wikipedia.org/wiki/Mediator\_pattern*](https://en.wikipedia.org/wiki/Mediator_pattern) + [https://en.wikipedia.org/wiki/Mediator\_pattern](https://en.wikipedia.org/wiki/Mediator_pattern) ##### The decorator pattern - **Decorator pattern** \ - [*https://en.wikipedia.org/wiki/Decorator\_pattern*](https://en.wikipedia.org/wiki/Decorator_pattern) + [https://en.wikipedia.org/wiki/Decorator\_pattern](https://en.wikipedia.org/wiki/Decorator_pattern) ##### MediatR (Jimmy Bogard) - **MediatR.** GitHub repo. \ - [*https://github.com/jbogard/MediatR*](https://github.com/jbogard/MediatR) + [https://github.com/jbogard/MediatR](https://github.com/jbogard/MediatR) - **CQRS with MediatR and AutoMapper** \ - [*https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/*](https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/) + [https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/](https://lostechies.com/jimmybogard/2015/05/05/cqrs-with-mediatr-and-automapper/) - **Put your controllers on a diet: POSTs and commands.** \ - [*https://lostechies.com/jimmybogard/2013/12/19/put-your-controllers-on-a-diet-posts-and-commands/*](https://lostechies.com/jimmybogard/2013/12/19/put-your-controllers-on-a-diet-posts-and-commands/) + [https://lostechies.com/jimmybogard/2013/12/19/put-your-controllers-on-a-diet-posts-and-commands/](https://lostechies.com/jimmybogard/2013/12/19/put-your-controllers-on-a-diet-posts-and-commands/) - **Tackling cross-cutting concerns with a mediator pipeline** \ - [*https://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/*](https://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/) + [https://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/](https://lostechies.com/jimmybogard/2014/09/09/tackling-cross-cutting-concerns-with-a-mediator-pipeline/) - **CQRS and REST: the perfect match** \ - [*https://lostechies.com/jimmybogard/2016/06/01/cqrs-and-rest-the-perfect-match/*](https://lostechies.com/jimmybogard/2016/06/01/cqrs-and-rest-the-perfect-match/) + [https://lostechies.com/jimmybogard/2016/06/01/cqrs-and-rest-the-perfect-match/](https://lostechies.com/jimmybogard/2016/06/01/cqrs-and-rest-the-perfect-match/) - **MediatR Pipeline Examples** \ - [*https://lostechies.com/jimmybogard/2016/10/13/mediatr-pipeline-examples/*](https://lostechies.com/jimmybogard/2016/10/13/mediatr-pipeline-examples/) + [https://lostechies.com/jimmybogard/2016/10/13/mediatr-pipeline-examples/](https://lostechies.com/jimmybogard/2016/10/13/mediatr-pipeline-examples/) - **Vertical Slice Test Fixtures for MediatR and ASP.NET Core** \ - [*https://lostechies.com/jimmybogard/2016/10/24/vertical-slice-test-fixtures-for-mediatr-and-asp-net-core/*](https://lostechies.com/jimmybogard/2016/10/24/vertical-slice-test-fixtures-for-mediatr-and-asp-net-core/) + [https://lostechies.com/jimmybogard/2016/10/24/vertical-slice-test-fixtures-for-mediatr-and-asp-net-core/](https://lostechies.com/jimmybogard/2016/10/24/vertical-slice-test-fixtures-for-mediatr-and-asp-net-core/) - **MediatR Extensions for Microsoft Dependency Injection Released** \ - [*https://lostechies.com/jimmybogard/2016/07/19/mediatr-extensions-for-microsoft-dependency-injection-released/*](https://lostechies.com/jimmybogard/2016/07/19/mediatr-extensions-for-microsoft-dependency-injection-released/) + [https://lostechies.com/jimmybogard/2016/07/19/mediatr-extensions-for-microsoft-dependency-injection-released/](https://lostechies.com/jimmybogard/2016/07/19/mediatr-extensions-for-microsoft-dependency-injection-released/) ##### Fluent validation - **Jeremy Skinner. FluentValidation.** GitHub repo. \ - [*https://github.com/JeremySkinner/FluentValidation*](https://github.com/JeremySkinner/FluentValidation) + [https://github.com/JeremySkinner/FluentValidation](https://github.com/JeremySkinner/FluentValidation) > [!div class="step-by-step"] > [Previous](microservice-application-layer-web-api-design.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md index 5da1a31d02b10..4233ec67c5364 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md @@ -33,13 +33,13 @@ It would take another guide to cover SOLID in detail. Therefore, this guide requ #### Additional resources - **SOLID: Fundamental OOP Principles** \ - [*https://deviq.com/solid/*](https://deviq.com/solid/%20) + [https://deviq.com/solid/](https://deviq.com/solid/%20) - **Inversion of Control Containers and the Dependency Injection pattern** \ - [*https://martinfowler.com/articles/injection.html*](https://martinfowler.com/articles/injection.html) + [https://martinfowler.com/articles/injection.html](https://martinfowler.com/articles/injection.html) - **Steve Smith. New is Glue** \ - [*https://ardalis.com/new-is-glue*](https://ardalis.com/new-is-glue) + [https://ardalis.com/new-is-glue](https://ardalis.com/new-is-glue) > [!div class="step-by-step"] > [Previous](nosql-database-persistence-infrastructure.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-domain-model.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-domain-model.md index 967b5728682a7..b1c489faa7647 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-domain-model.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-domain-model.md @@ -52,13 +52,13 @@ Some people say that the anemic domain model is an anti-pattern. It really depen #### Additional resources - **DevIQ. Domain Entity** \ - [*https://deviq.com/entity/*](https://deviq.com/entity/) + [https://deviq.com/entity/](https://deviq.com/entity/) - **Martin Fowler. The Domain Model** \ - [*https://martinfowler.com/eaaCatalog/domainModel.html*](https://martinfowler.com/eaaCatalog/domainModel.html) + [https://martinfowler.com/eaaCatalog/domainModel.html](https://martinfowler.com/eaaCatalog/domainModel.html) - **Martin Fowler. The Anemic Domain Model** \ - [*https://martinfowler.com/bliki/AnemicDomainModel.html*](https://martinfowler.com/bliki/AnemicDomainModel.html) + [https://martinfowler.com/bliki/AnemicDomainModel.html](https://martinfowler.com/bliki/AnemicDomainModel.html) ### The Value Object pattern @@ -77,16 +77,16 @@ EF Core 2.0 includes the [Owned Entities](https://devblogs.microsoft.com/dotnet/ #### Additional resources - **Martin Fowler. Value Object pattern** \ - [*https://martinfowler.com/bliki/ValueObject.html*](https://martinfowler.com/bliki/ValueObject.html) + [https://martinfowler.com/bliki/ValueObject.html](https://martinfowler.com/bliki/ValueObject.html) - **Value Object** \ - [*https://deviq.com/value-object/*](https://deviq.com/value-object/) + [https://deviq.com/value-object/](https://deviq.com/value-object/) - **Value Objects in Test-Driven Development** \ - [*https://leanpub.com/tdd-ebook/read\#leanpub-auto-value-objects*](https://leanpub.com/tdd-ebook/read#leanpub-auto-value-objects) + [https://leanpub.com/tdd-ebook/read\#leanpub-auto-value-objects](https://leanpub.com/tdd-ebook/read#leanpub-auto-value-objects) - **Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software.** (Book; includes a discussion of value objects) \ - [*https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/*](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) + [https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/) ### The Aggregate pattern @@ -139,13 +139,13 @@ Identifying and working with aggregates requires research and experience. For mo - **Sergey Grybniak. DDD Tactical Design Patterns** \ - [*https://www.codeproject.com/Articles/1164363/Domain-Driven-Design-Tactical-Design-Patterns-Part*](https://www.codeproject.com/Articles/1164363/Domain-Driven-Design-Tactical-Design-Patterns-Part) + [https://www.codeproject.com/Articles/1164363/Domain-Driven-Design-Tactical-Design-Patterns-Part](https://www.codeproject.com/Articles/1164363/Domain-Driven-Design-Tactical-Design-Patterns-Part) - **Chris Richardson. Developing Transactional Microservices Using Aggregates** \ - [*https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson*](https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson) + [https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson](https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson) - **DevIQ. The Aggregate pattern** \ - [*https://deviq.com/aggregate-pattern/*](https://deviq.com/aggregate-pattern/) + [https://deviq.com/aggregate-pattern/](https://deviq.com/aggregate-pattern/) >[!div class="step-by-step"] >[Previous](ddd-oriented-microservice.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md index a152d405f33b6..8769cca0cdc0f 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure.md @@ -308,31 +308,31 @@ services: #### Additional resources - **Modeling document data for NoSQL databases** \ - [*https://docs.microsoft.com/azure/cosmos-db/modeling-data*](https://docs.microsoft.com/azure/cosmos-db/modeling-data) + [https://docs.microsoft.com/azure/cosmos-db/modeling-data](https://docs.microsoft.com/azure/cosmos-db/modeling-data) - **Vaughn Vernon. The Ideal Domain-Driven Design Aggregate Store?** \ - **Introduction to Azure Cosmos DB: API for MongoDB** \ - [*https://docs.microsoft.com/azure/cosmos-db/mongodb-introduction*](https://docs.microsoft.com/azure/cosmos-db/mongodb-introduction) + [https://docs.microsoft.com/azure/cosmos-db/mongodb-introduction](https://docs.microsoft.com/azure/cosmos-db/mongodb-introduction) - **Azure Cosmos DB: Build a MongoDB API web app with .NET and the Azure portal** \ - [*https://docs.microsoft.com/azure/cosmos-db/create-mongodb-dotnet*](https://docs.microsoft.com/azure/cosmos-db/create-mongodb-dotnet ) + [https://docs.microsoft.com/azure/cosmos-db/create-mongodb-dotnet](https://docs.microsoft.com/azure/cosmos-db/create-mongodb-dotnet ) - **Use the Azure Cosmos DB Emulator for local development and testing** \ - [*https://docs.microsoft.com/azure/cosmos-db/local-emulator*](https://docs.microsoft.com/azure/cosmos-db/local-emulator) + [https://docs.microsoft.com/azure/cosmos-db/local-emulator](https://docs.microsoft.com/azure/cosmos-db/local-emulator) - **Connect a MongoDB application to Azure Cosmos DB** \ - [*https://docs.microsoft.com/azure/cosmos-db/connect-mongodb-account*](https://docs.microsoft.com/azure/cosmos-db/connect-mongodb-account) + [https://docs.microsoft.com/azure/cosmos-db/connect-mongodb-account](https://docs.microsoft.com/azure/cosmos-db/connect-mongodb-account) - **The Cosmos DB Emulator Docker image (Windows Container)** \ - [*https://hub.docker.com/r/microsoft/azure-cosmosdb-emulator/*](https://hub.docker.com/r/microsoft/azure-cosmosdb-emulator/) + [https://hub.docker.com/r/microsoft/azure-cosmosdb-emulator/](https://hub.docker.com/r/microsoft/azure-cosmosdb-emulator/) - **The MongoDB Docker image (Linux and Windows Container)** \ - [*https://hub.docker.com/r/_/mongo/*](https://hub.docker.com/r/_/mongo/) + [https://hub.docker.com/r/_/mongo/](https://hub.docker.com/r/_/mongo/) - **Use MongoChef (Studio 3T) with an Azure Cosmos DB: API for MongoDB account** \ - [*https://docs.microsoft.com/azure/cosmos-db/mongodb-mongochef*](https://docs.microsoft.com/azure/cosmos-db/mongodb-mongochef) + [https://docs.microsoft.com/azure/cosmos-db/mongodb-mongochef](https://docs.microsoft.com/azure/cosmos-db/mongodb-mongochef) >[!div class="step-by-step"] >[Previous](infrastructure-persistence-layer-implemenation-entity-framework-core.md) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/seedwork-domain-model-base-classes-interfaces.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/seedwork-domain-model-base-classes-interfaces.md index a930e76bd43bf..02767e56b00c0 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/seedwork-domain-model-base-classes-interfaces.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/seedwork-domain-model-base-classes-interfaces.md @@ -134,7 +134,7 @@ public interface IRepository where T : IAggregateRoot ## Additional resources - **Martin Fowler. Separated Interface.** \ - [*https://www.martinfowler.com/eaaCatalog/separatedInterface.html*](https://www.martinfowler.com/eaaCatalog/separatedInterface.html) + [https://www.martinfowler.com/eaaCatalog/separatedInterface.html](https://www.martinfowler.com/eaaCatalog/separatedInterface.html) >[!div class="step-by-step"] >[Previous](net-core-microservice-domain-model.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice.md index 8d4684f8e004b..277b81b70dd83 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice.md @@ -234,13 +234,13 @@ The `IHostedService` interface provides a convenient way to start background tas #### Additional resources - **Building a scheduled task in ASP.NET Core/Standard 2.0**
- [*https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html*](https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html) + [https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html](https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html) - **Implementing IHostedService in ASP.NET Core 2.0**
- [*https://www.stevejgordon.co.uk/asp-net-core-2-ihostedservice*](https://www.stevejgordon.co.uk/asp-net-core-2-ihostedservice) + [https://www.stevejgordon.co.uk/asp-net-core-2-ihostedservice](https://www.stevejgordon.co.uk/asp-net-core-2-ihostedservice) - **GenericHost Sample using ASP.NET Core 2.1**
- [*https://github.com/aspnet/Hosting/tree/release/2.1/samples/GenericHostSample*](https://github.com/aspnet/Hosting/tree/release/2.1/samples/GenericHostSample) + [https://github.com/aspnet/Hosting/tree/release/2.1/samples/GenericHostSample](https://github.com/aspnet/Hosting/tree/release/2.1/samples/GenericHostSample) >[!div class="step-by-step"] >[Previous](test-aspnet-core-services-web-apps.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/data-driven-crud-microservice.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/data-driven-crud-microservice.md index 2de2c493789af..8c13ade0175ea 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/data-driven-crud-microservice.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/data-driven-crud-microservice.md @@ -208,10 +208,10 @@ public void ConfigureServices(IServiceCollection services) ### Additional resources - **Querying Data** \ - [*https://docs.microsoft.com/ef/core/querying/index*](https://docs.microsoft.com/ef/core/querying/index) + [https://docs.microsoft.com/ef/core/querying/index](https://docs.microsoft.com/ef/core/querying/index) - **Saving Data** \ - [*https://docs.microsoft.com/ef/core/saving/index*](https://docs.microsoft.com/ef/core/saving/index) + [https://docs.microsoft.com/ef/core/saving/index](https://docs.microsoft.com/ef/core/saving/index) ## The DB connection string and environment variables used by Docker containers @@ -292,13 +292,13 @@ This versioning mechanism is simple and depends on the server routing the reques ### Additional resources - **Scott Hanselman. ASP.NET Core RESTful Web API versioning made easy** \ - [*https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx*](https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx) + [https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx](https://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersioningMadeEasy.aspx) - **Versioning a RESTful web API** \ - [*https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api*](https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api) + [https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api](https://docs.microsoft.com/azure/architecture/best-practices/api-design#versioning-a-restful-web-api) - **Roy Fielding. Versioning, Hypermedia, and REST** \ - [*https://www.infoq.com/articles/roy-fielding-on-versioning*](https://www.infoq.com/articles/roy-fielding-on-versioning) + [https://www.infoq.com/articles/roy-fielding-on-versioning](https://www.infoq.com/articles/roy-fielding-on-versioning) ## Generating Swagger description metadata from your ASP.NET Core Web API @@ -418,13 +418,13 @@ It is that simple. And because it is automatically generated, the Swagger metada ### Additional resources - **ASP.NET Web API Help Pages using Swagger** \ - [*https://docs.microsoft.com/aspnet/core/tutorials/web-api-help-pages-using-swagger*](https://docs.microsoft.com/aspnet/core/tutorials/web-api-help-pages-using-swagger) + [https://docs.microsoft.com/aspnet/core/tutorials/web-api-help-pages-using-swagger](https://docs.microsoft.com/aspnet/core/tutorials/web-api-help-pages-using-swagger) - **Get started with Swashbuckle and ASP.NET Core** \ - [*https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-swashbuckle?tabs=visual-studio*](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-swashbuckle?tabs=visual-studio) + [https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-swashbuckle?tabs=visual-studio](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-swashbuckle?tabs=visual-studio) - **Get started with NSwag and ASP.NET Core** \ - [*https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?tabs=visual-studio*](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?tabs=visual-studio) + [https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?tabs=visual-studio](https://docs.microsoft.com/aspnet/core/tutorials/getting-started-with-nswag?tabs=visual-studio) > [!div class="step-by-step"] > [Previous](microservice-application-design.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md index 099932969ce6a..0401134ef66ee 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md @@ -42,10 +42,10 @@ Having SQL Server running as a container is not just useful for a demo where you #### Additional resources - **Run the SQL Server Docker image on Linux, Mac, or Windows**
- [*https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker*](https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker) + [https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker](https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker) - **Connect and query SQL Server on Linux with sqlcmd**
- [*https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd*](https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd) + [https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd](https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd) ### Seeding with test data on Web application startup diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md index ae80caaefd5b7..afad37cc269d1 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot.md @@ -559,19 +559,19 @@ In the source code files of eShopOnContainers, the original “configuration.jso There are other important features to research and use, when using an Ocelot API Gateway, described in the following links. - **Service discovery in the client side integrating Ocelot with Consul or Eureka** \ - [*https://ocelot.readthedocs.io/en/latest/features/servicediscovery.html*](https://ocelot.readthedocs.io/en/latest/features/servicediscovery.html) + [https://ocelot.readthedocs.io/en/latest/features/servicediscovery.html](https://ocelot.readthedocs.io/en/latest/features/servicediscovery.html) - **Caching at the API Gateway tier** \ - [*https://ocelot.readthedocs.io/en/latest/features/caching.html*](https://ocelot.readthedocs.io/en/latest/features/caching.html) + [https://ocelot.readthedocs.io/en/latest/features/caching.html](https://ocelot.readthedocs.io/en/latest/features/caching.html) - **Logging at the API Gateway tier** \ - [*https://ocelot.readthedocs.io/en/latest/features/logging.html*](https://ocelot.readthedocs.io/en/latest/features/logging.html) + [https://ocelot.readthedocs.io/en/latest/features/logging.html](https://ocelot.readthedocs.io/en/latest/features/logging.html) - **Quality of Service (Retries and Circuit breakers) at the API Gateway tier** \ - [*https://ocelot.readthedocs.io/en/latest/features/qualityofservice.html*](https://ocelot.readthedocs.io/en/latest/features/qualityofservice.html) + [https://ocelot.readthedocs.io/en/latest/features/qualityofservice.html](https://ocelot.readthedocs.io/en/latest/features/qualityofservice.html) - **Rate limiting** \ - [*https://ocelot.readthedocs.io/en/latest/features/ratelimiting.html*](https://ocelot.readthedocs.io/en/latest/features/ratelimiting.html ) + [https://ocelot.readthedocs.io/en/latest/features/ratelimiting.html](https://ocelot.readthedocs.io/en/latest/features/ratelimiting.html ) > [!div class="step-by-step"] > [Previous](background-tasks-with-ihostedservice.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md index 3f0305589fd2c..d11d42e34a296 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md @@ -418,10 +418,10 @@ Note that the values set in the runtime environment always override the values d #### Additional resources - **Overview of Docker Compose**
- [*https://docs.docker.com/compose/overview/*](https://docs.docker.com/compose/overview/) + [https://docs.docker.com/compose/overview/](https://docs.docker.com/compose/overview/) - **Multiple Compose files**
- [*https://docs.docker.com/compose/extends/\#multiple-compose-files*](https://docs.docker.com/compose/extends/#multiple-compose-files) + [https://docs.docker.com/compose/extends/\#multiple-compose-files](https://docs.docker.com/compose/extends/#multiple-compose-files) ### Building optimized ASP.NET Core Docker images @@ -460,10 +460,10 @@ For faster startup, runtime images also automatically set aspnetcore\_urls to po #### Additional resources - **Building Optimized Docker Images with ASP.NET Core**
- [*https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/*](https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/) + [https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/](https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/) - **Building Docker Images for .NET Core Applications**
- [*https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images*](../../../core/docker/building-net-docker-images.md) + [https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images](../../../core/docker/building-net-docker-images.md) > [!div class="step-by-step"] > [Previous](data-driven-crud-microservice.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md index 52503db2a020d..32138b70ad99e 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md @@ -320,67 +320,67 @@ If the “redelivered” flag is set, the receiver must take that into account, ### Additional resources - **Forked eShopOnContainers using NServiceBus (Particular Software)**
- [*https://go.particular.net/eShopOnContainers*](https://go.particular.net/eShopOnContainers) + [https://go.particular.net/eShopOnContainers](https://go.particular.net/eShopOnContainers) - **Event Driven Messaging**
- [*http://soapatterns.org/design\_patterns/event\_driven\_messaging*](http://soapatterns.org/design_patterns/event_driven_messaging) + [http://soapatterns.org/design\_patterns/event\_driven\_messaging](http://soapatterns.org/design_patterns/event_driven_messaging) - **Jimmy Bogard. Refactoring Towards Resilience: Evaluating Coupling**
- [*https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/*](https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/) + [https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/](https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/) - **Publish-Subscribe channel**
- [*https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html*](https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html) + [https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html](https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html) - **Communicating Between Bounded Contexts**
- **Eventual Consistency**
- [*https://en.wikipedia.org/wiki/Eventual\_consistency*](https://en.wikipedia.org/wiki/Eventual_consistency) + [https://en.wikipedia.org/wiki/Eventual\_consistency](https://en.wikipedia.org/wiki/Eventual_consistency) - **Philip Brown. Strategies for Integrating Bounded Contexts**
- [*https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/*](https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/) + [https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/](https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/) - **Chris Richardson. Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 2**
- [*https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson*](https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson) + [https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson](https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson) - **Chris Richardson. Event Sourcing pattern**
- [*https://microservices.io/patterns/data/event-sourcing.html*](https://microservices.io/patterns/data/event-sourcing.html) + [https://microservices.io/patterns/data/event-sourcing.html](https://microservices.io/patterns/data/event-sourcing.html) - **Introducing Event Sourcing**
- **Event Store database**. Official site.
- [*https://geteventstore.com/*](https://geteventstore.com/) + [https://geteventstore.com/](https://geteventstore.com/) - **Patrick Nommensen. Event-Driven Data Management for Microservices**
* * - **The CAP Theorem**
- [*https://en.wikipedia.org/wiki/CAP\_theorem*](https://en.wikipedia.org/wiki/CAP_theorem) + [https://en.wikipedia.org/wiki/CAP\_theorem](https://en.wikipedia.org/wiki/CAP_theorem) - **What is CAP Theorem?**
- [*https://www.quora.com/What-Is-CAP-Theorem-1*](https://www.quora.com/What-Is-CAP-Theorem-1) + [https://www.quora.com/What-Is-CAP-Theorem-1](https://www.quora.com/What-Is-CAP-Theorem-1) - **Data Consistency Primer**
- **Rick Saling. The CAP Theorem: Why “Everything is Different” with the Cloud and Internet**
- [*https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/*](https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/) + [https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/](https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/) - **Eric Brewer. CAP Twelve Years Later: How the "Rules" Have Changed**
- [*https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed*](https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed) + [https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed](https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed) - **Azure Service Bus. Brokered Messaging: Duplicate Detection**
- [*https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25*](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) + [https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) - **Reliability Guide** (RabbitMQ documentation)*
- [*https://www.rabbitmq.com/reliability.html\#consumer*](https://www.rabbitmq.com/reliability.html#consumer) + [https://www.rabbitmq.com/reliability.html\#consumer](https://www.rabbitmq.com/reliability.html#consumer) - **Azure Service Bus. Brokered Messaging: Duplicate Detection**
- [*https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25*](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) + [https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) - **Reliability Guide** (RabbitMQ documentation)
- [*https://www.rabbitmq.com/reliability.html\#consumer*](https://www.rabbitmq.com/reliability.html%23consumer) + [https://www.rabbitmq.com/reliability.html\#consumer](https://www.rabbitmq.com/reliability.html%23consumer) > [!div class="step-by-step"] > [Previous](rabbitmq-event-bus-development-test-environment.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md index 8cb0da93d8b9b..c95d5eebeeac4 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md @@ -99,25 +99,25 @@ public class PrimeWebDefaultRequestShould #### Additional resources - **Steve Smith. Testing controllers** (ASP.NET Core)
- [*https://docs.microsoft.com/aspnet/core/mvc/controllers/testing*](https://docs.microsoft.com/aspnet/core/mvc/controllers/testing) + [https://docs.microsoft.com/aspnet/core/mvc/controllers/testing](https://docs.microsoft.com/aspnet/core/mvc/controllers/testing) - **Steve Smith. Integration testing** (ASP.NET Core)
- [*https://docs.microsoft.com/aspnet/core/test/integration-tests*](https://docs.microsoft.com/aspnet/core/test/integration-tests) + [https://docs.microsoft.com/aspnet/core/test/integration-tests](https://docs.microsoft.com/aspnet/core/test/integration-tests) - **Unit testing in .NET Core using dotnet test**
- [*https://docs.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test*](../../../core/testing/unit-testing-with-dotnet-test.md) + [https://docs.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test](../../../core/testing/unit-testing-with-dotnet-test.md) - **xUnit.net**. Official site.
- [*https://xunit.github.io/*](https://xunit.github.io/) + [https://xunit.github.io/](https://xunit.github.io/) - **Unit Test Basics.**
- [*https://docs.microsoft.com/visualstudio/test/unit-test-basics*](/visualstudio/test/unit-test-basics) + [https://docs.microsoft.com/visualstudio/test/unit-test-basics](/visualstudio/test/unit-test-basics) - **Moq**. GitHub repo.
- [*https://github.com/moq/moq*](https://github.com/moq/moq) + [https://github.com/moq/moq](https://github.com/moq/moq) - **NUnit**. Official site.
- [*https://www.nunit.org/*](https://www.nunit.org/) + [https://www.nunit.org/](https://www.nunit.org/) ### Implementing service tests on a multi-container application @@ -198,10 +198,10 @@ As you can see, these docker-compose files only start the Redis, RabbitMQ, SQL S ### Additional resources - **Tests README file** on the eShopOnContainers repo on GitHub
- [*https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test*](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test) + [https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test) - **Load tests README file** on the eShopOnContainers repo on GitHub
- [*https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/*](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/) + [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/) > [!div class="step-by-step"] > [Previous](subscribe-events.md) diff --git a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/authorization-net-microservices-web-applications.md b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/authorization-net-microservices-web-applications.md index eb0c672e8538e..64eda4ba9fd79 100644 --- a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/authorization-net-microservices-web-applications.md +++ b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/authorization-net-microservices-web-applications.md @@ -108,16 +108,16 @@ An example of a custom authorization requirement and handler for checking a user ## Additional resources - **ASP.NET Core Authentication** \ - [*https://docs.microsoft.com/aspnet/core/security/authentication/identity*](/aspnet/core/security/authentication/identity) + [https://docs.microsoft.com/aspnet/core/security/authentication/identity](/aspnet/core/security/authentication/identity) - **ASP.NET Core Authorization** \ - [*https://docs.microsoft.com/aspnet/core/security/authorization/introduction*](/aspnet/core/security/authorization/introduction) + [https://docs.microsoft.com/aspnet/core/security/authorization/introduction](/aspnet/core/security/authorization/introduction) - **Role-based Authorization** \ - [*https://docs.microsoft.com/aspnet/core/security/authorization/roles*](/aspnet/core/security/authorization/roles) + [https://docs.microsoft.com/aspnet/core/security/authorization/roles](/aspnet/core/security/authorization/roles) - **Custom Policy-Based Authorization** \ - [*https://docs.microsoft.com/aspnet/core/security/authorization/policies*](/aspnet/core/security/authorization/policies) + [https://docs.microsoft.com/aspnet/core/security/authorization/policies](/aspnet/core/security/authorization/policies) >[!div class="step-by-step"] >[Previous](index.md) diff --git a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/azure-key-vault-protects-secrets.md b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/azure-key-vault-protects-secrets.md index 57b07de9e3643..ea9ac2279d655 100644 --- a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/azure-key-vault-protects-secrets.md +++ b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/azure-key-vault-protects-secrets.md @@ -32,19 +32,19 @@ The **Microsoft.Extensions.Configuration.AzureKeyVault** package allows an ASP.N ## Additional resources - **Using Azure Key Vault to protect application secrets** \ - [*https://docs.microsoft.com/azure/guidance/guidance-multitenant-identity-keyvault*](/azure/guidance/guidance-multitenant-identity-keyvault) + [https://docs.microsoft.com/azure/guidance/guidance-multitenant-identity-keyvault](/azure/guidance/guidance-multitenant-identity-keyvault) - **Safe storage of app secrets during development** \ - [*https://docs.microsoft.com/aspnet/core/security/app-secrets*](/aspnet/core/security/app-secrets) + [https://docs.microsoft.com/aspnet/core/security/app-secrets](/aspnet/core/security/app-secrets) - **Configuring data protection** \ - [*https://docs.microsoft.com/aspnet/core/security/data-protection/configuration/overview*](/aspnet/core/security/data-protection/configuration/overview) + [https://docs.microsoft.com/aspnet/core/security/data-protection/configuration/overview](/aspnet/core/security/data-protection/configuration/overview) - **Data Protection key management and lifetime in ASP.NET Core** \ - [*https://docs.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings*](/aspnet/core/security/data-protection/configuration/default-settings) + [https://docs.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings](/aspnet/core/security/data-protection/configuration/default-settings) - **Microsoft.Extensions.Configuration.KeyPerFile** GitHub repository. \ - [*https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile*](https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile) + [https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile](https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile) >[!div class="step-by-step"] >[Previous](developer-app-secrets-storage.md) diff --git a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md index f4189ce1a1e69..16f03bdb850ad 100644 --- a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md +++ b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md @@ -271,25 +271,25 @@ The JWT bearer authentication middleware can also support more advanced scenario ## Additional resources - **Sharing cookies between applications** \ - [*https://docs.microsoft.com/aspnet/core/security/cookie-sharing*](/aspnet/core/security/cookie-sharing) + [https://docs.microsoft.com/aspnet/core/security/cookie-sharing](/aspnet/core/security/cookie-sharing) - **Introduction to Identity** \ - [*https://docs.microsoft.com/aspnet/core/security/authentication/identity*](/aspnet/core/security/authentication/identity) + [https://docs.microsoft.com/aspnet/core/security/authentication/identity](/aspnet/core/security/authentication/identity) - **Rick Anderson. Two-factor authentication with SMS** \ - [*https://docs.microsoft.com/aspnet/core/security/authentication/2fa*](/aspnet/core/security/authentication/2fa) + [https://docs.microsoft.com/aspnet/core/security/authentication/2fa](/aspnet/core/security/authentication/2fa) - **Enabling authentication using Facebook, Google and other external providers** \ - [*https://docs.microsoft.com/aspnet/core/security/authentication/social/*](/aspnet/core/security/authentication/social/) + [https://docs.microsoft.com/aspnet/core/security/authentication/social/](/aspnet/core/security/authentication/social/) - **Michell Anicas. An Introduction to OAuth 2** \ - [*https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2*](https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2) + [https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2](https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2) - **AspNet.Security.OAuth.Providers** (GitHub repo for ASP.NET OAuth providers) \ - [*https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src*](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src) + [https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src) - **Danny Strockis. Integrating Azure AD into an ASP.NET Core web app** \ - [*https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/*](https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/) + [https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/](https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/) - **IdentityServer4. Official documentation** \ ** diff --git a/docs/standard/modernize-with-azure-and-containers/index.md b/docs/standard/modernize-with-azure-and-containers/index.md index 747d9b91d489a..5411c497f272e 100644 --- a/docs/standard/modernize-with-azure-and-containers/index.md +++ b/docs/standard/modernize-with-azure-and-containers/index.md @@ -166,11 +166,11 @@ This guide doesn't show you how to create Cloud-Native applications, such as how ### Additional resources -- **Containerized Docker application lifecycle with Microsoft platform and tools** (downloadable e-book): [*https://aka.ms/dockerlifecycleebook*](https://aka.ms/dockerlifecycleebook) +- **Containerized Docker application lifecycle with Microsoft platform and tools** (downloadable e-book): [https://aka.ms/dockerlifecycleebook](https://aka.ms/dockerlifecycleebook) -- **.NET Microservices: Architecture for containerized .NET applications** (downloadable e-book): [*https://aka.ms/microservicesebook*](https://aka.ms/microservicesebook) +- **.NET Microservices: Architecture for containerized .NET applications** (downloadable e-book): [https://aka.ms/microservicesebook](https://aka.ms/microservicesebook) -- **Architecting modern web applications with ASP.NET Core and Azure** (downloadable e-book): [*https://aka.ms/webappebook*](https://aka.ms/webappebook) +- **Architecting modern web applications with ASP.NET Core and Azure** (downloadable e-book): [https://aka.ms/webappebook](https://aka.ms/webappebook) ## Who should use this guide From 97e3344981302b1e32ac0d48db66a26525722c3d Mon Sep 17 00:00:00 2001 From: NextTurn <45985406+NextTurn@users.noreply.github.com> Date: Tue, 19 Mar 2019 00:00:00 +0800 Subject: [PATCH 2/4] Update link formatting --- .../docker-app-development-workflow.md | 4 ++-- .../secure-net-microservices-web-applications/index.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md index 638e27beb152e..25179f3557da0 100644 --- a/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md +++ b/docs/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow.md @@ -119,10 +119,10 @@ You can specify additional configuration settings in the Dockerfile, depending o [https://docs.docker.com/engine/tutorials/dockerimages/](https://docs.docker.com/engine/tutorials/dockerimages/) - **Staying up-to-date with .NET Container Images** \ - ** + - **Using .NET and Docker Together - DockerCon 2018 Update** \ - ** + ### Using multi-arch image repositories diff --git a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md index 16f03bdb850ad..74c3c7a54656d 100644 --- a/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md +++ b/docs/standard/microservices-architecture/secure-net-microservices-web-applications/index.md @@ -292,7 +292,7 @@ The JWT bearer authentication middleware can also support more advanced scenario [https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/](https://azure.microsoft.com/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/) - **IdentityServer4. Official documentation** \ - ** + >[!div class="step-by-step"] >[Previous](../implement-resilient-applications/monitor-app-health.md) From 94335a70632f2312d3db63f6d458142f6720b374 Mon Sep 17 00:00:00 2001 From: NextTurn <45985406+NextTurn@users.noreply.github.com> Date: Tue, 19 Mar 2019 00:00:00 +0800 Subject: [PATCH 3/4] Update link formatting --- .../subscribe-events.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md index 32138b70ad99e..096b3802fa1a5 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md @@ -353,7 +353,7 @@ If the “redelivered” flag is set, the receiver must take that into account, [https://geteventstore.com/](https://geteventstore.com/) - **Patrick Nommensen. Event-Driven Data Management for Microservices**
- * * + - **The CAP Theorem**
[https://en.wikipedia.org/wiki/CAP\_theorem](https://en.wikipedia.org/wiki/CAP_theorem) @@ -373,7 +373,7 @@ If the “redelivered” flag is set, the receiver must take that into account, - **Azure Service Bus. Brokered Messaging: Duplicate Detection**
[https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) -- **Reliability Guide** (RabbitMQ documentation)*
+- **Reliability Guide** (RabbitMQ documentation)
[https://www.rabbitmq.com/reliability.html\#consumer](https://www.rabbitmq.com/reliability.html#consumer) - **Azure Service Bus. Brokered Messaging: Duplicate Detection**
From 24eac2f1edd1874f8e23d7bac0fd21087f6c7b69 Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Tue, 26 Mar 2019 00:22:16 +0800 Subject: [PATCH 4/4] Apply suggestions from code review Co-Authored-By: NextTurn <45985406+NextTurn@users.noreply.github.com> --- ...ervice-application-layer-web-api-design.md | 4 +- .../database-server-container.md | 6 +-- ...i-container-applications-docker-compose.md | 8 ++-- .../subscribe-events.md | 42 +++++++++---------- .../test-aspnet-core-services-web-apps.md | 20 ++++----- .../index.md | 11 +++-- 6 files changed, 47 insertions(+), 44 deletions(-) diff --git a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md index 4233ec67c5364..1a88cb90dc60e 100644 --- a/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md +++ b/docs/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-web-api-design.md @@ -33,7 +33,7 @@ It would take another guide to cover SOLID in detail. Therefore, this guide requ #### Additional resources - **SOLID: Fundamental OOP Principles** \ - [https://deviq.com/solid/](https://deviq.com/solid/%20) + [https://deviq.com/solid/](https://deviq.com/solid/) - **Inversion of Control Containers and the Dependency Injection pattern** \ [https://martinfowler.com/articles/injection.html](https://martinfowler.com/articles/injection.html) @@ -43,4 +43,4 @@ It would take another guide to cover SOLID in detail. Therefore, this guide requ > [!div class="step-by-step"] > [Previous](nosql-database-persistence-infrastructure.md) -> [Next](microservice-application-layer-implementation-web-api.md) \ No newline at end of file +> [Next](microservice-application-layer-implementation-web-api.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md index 0401134ef66ee..12004330c0217 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container.md @@ -41,10 +41,10 @@ Having SQL Server running as a container is not just useful for a demo where you #### Additional resources -- **Run the SQL Server Docker image on Linux, Mac, or Windows**
+- **Run the SQL Server Docker image on Linux, Mac, or Windows** \ [https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker](https://docs.microsoft.com/sql/linux/sql-server-linux-setup-docker) -- **Connect and query SQL Server on Linux with sqlcmd**
+- **Connect and query SQL Server on Linux with sqlcmd** \ [https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd](https://docs.microsoft.com/sql/linux/sql-server-linux-connect-and-query-sqlcmd) ### Seeding with test data on Web application startup @@ -196,4 +196,4 @@ As mentioned before, the name of the microservice "basket.data" is resolved by d >[!div class="step-by-step"] >[Previous](multi-container-applications-docker-compose.md) ->[Next](integration-event-based-microservice-communications.md) \ No newline at end of file +>[Next](integration-event-based-microservice-communications.md) diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md index d11d42e34a296..6b84ad0fa9c2d 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose.md @@ -417,10 +417,10 @@ Note that the values set in the runtime environment always override the values d #### Additional resources -- **Overview of Docker Compose**
+- **Overview of Docker Compose** \ [https://docs.docker.com/compose/overview/](https://docs.docker.com/compose/overview/) -- **Multiple Compose files**
+- **Multiple Compose files** \ [https://docs.docker.com/compose/extends/\#multiple-compose-files](https://docs.docker.com/compose/extends/#multiple-compose-files) ### Building optimized ASP.NET Core Docker images @@ -459,10 +459,10 @@ For faster startup, runtime images also automatically set aspnetcore\_urls to po #### Additional resources -- **Building Optimized Docker Images with ASP.NET Core**
+- **Building Optimized Docker Images with ASP.NET Core** \ [https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/](https://blogs.msdn.microsoft.com/stevelasker/2016/09/29/building-optimized-docker-images-with-asp-net-core/) -- **Building Docker Images for .NET Core Applications**
+- **Building Docker Images for .NET Core Applications** \ [https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images](../../../core/docker/building-net-docker-images.md) > [!div class="step-by-step"] diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md index 096b3802fa1a5..c3ccee2c9d0f8 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events.md @@ -319,67 +319,67 @@ If the “redelivered” flag is set, the receiver must take that into account, ### Additional resources -- **Forked eShopOnContainers using NServiceBus (Particular Software)**
+- **Forked eShopOnContainers using NServiceBus (Particular Software)** \ [https://go.particular.net/eShopOnContainers](https://go.particular.net/eShopOnContainers) -- **Event Driven Messaging**
+- **Event Driven Messaging** \ [http://soapatterns.org/design\_patterns/event\_driven\_messaging](http://soapatterns.org/design_patterns/event_driven_messaging) -- **Jimmy Bogard. Refactoring Towards Resilience: Evaluating Coupling**
+- **Jimmy Bogard. Refactoring Towards Resilience: Evaluating Coupling** \ [https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/](https://jimmybogard.com/refactoring-towards-resilience-evaluating-coupling/) -- **Publish-Subscribe channel**
+- **Publish-Subscribe channel** \ [https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html](https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html) -- **Communicating Between Bounded Contexts**
+- **Communicating Between Bounded Contexts** \ -- **Eventual Consistency**
+- **Eventual Consistency** \ [https://en.wikipedia.org/wiki/Eventual\_consistency](https://en.wikipedia.org/wiki/Eventual_consistency) -- **Philip Brown. Strategies for Integrating Bounded Contexts**
+- **Philip Brown. Strategies for Integrating Bounded Contexts** \ [https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/](https://www.culttt.com/2014/11/26/strategies-integrating-bounded-contexts/) -- **Chris Richardson. Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 2**
+- **Chris Richardson. Developing Transactional Microservices Using Aggregates, Event Sourcing and CQRS - Part 2** \ [https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson](https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson) -- **Chris Richardson. Event Sourcing pattern**
+- **Chris Richardson. Event Sourcing pattern** \ [https://microservices.io/patterns/data/event-sourcing.html](https://microservices.io/patterns/data/event-sourcing.html) -- **Introducing Event Sourcing**
+- **Introducing Event Sourcing** \ -- **Event Store database**. Official site.
+- **Event Store database**. Official site. \ [https://geteventstore.com/](https://geteventstore.com/) -- **Patrick Nommensen. Event-Driven Data Management for Microservices**
+- **Patrick Nommensen. Event-Driven Data Management for Microservices** \ -- **The CAP Theorem**
+- **The CAP Theorem** \ [https://en.wikipedia.org/wiki/CAP\_theorem](https://en.wikipedia.org/wiki/CAP_theorem) -- **What is CAP Theorem?**
+- **What is CAP Theorem?** \ [https://www.quora.com/What-Is-CAP-Theorem-1](https://www.quora.com/What-Is-CAP-Theorem-1) -- **Data Consistency Primer**
+- **Data Consistency Primer** \ -- **Rick Saling. The CAP Theorem: Why “Everything is Different” with the Cloud and Internet**
+- **Rick Saling. The CAP Theorem: Why “Everything is Different” with the Cloud and Internet** \ [https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/](https://blogs.msdn.microsoft.com/rickatmicrosoft/2013/01/03/the-cap-theorem-why-everything-is-different-with-the-cloud-and-internet/) -- **Eric Brewer. CAP Twelve Years Later: How the "Rules" Have Changed**
+- **Eric Brewer. CAP Twelve Years Later: How the "Rules" Have Changed** \ [https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed](https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed) -- **Azure Service Bus. Brokered Messaging: Duplicate Detection**
+- **Azure Service Bus. Brokered Messaging: Duplicate Detection** \ [https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) -- **Reliability Guide** (RabbitMQ documentation)
+- **Reliability Guide** (RabbitMQ documentation) \ [https://www.rabbitmq.com/reliability.html\#consumer](https://www.rabbitmq.com/reliability.html#consumer) -- **Azure Service Bus. Brokered Messaging: Duplicate Detection**
+- **Azure Service Bus. Brokered Messaging: Duplicate Detection** \ [https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25](https://code.msdn.microsoft.com/Brokered-Messaging-c0acea25) -- **Reliability Guide** (RabbitMQ documentation)
+- **Reliability Guide** (RabbitMQ documentation) \ [https://www.rabbitmq.com/reliability.html\#consumer](https://www.rabbitmq.com/reliability.html%23consumer) > [!div class="step-by-step"] diff --git a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md index c95d5eebeeac4..8e477b8889f5f 100644 --- a/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md +++ b/docs/standard/microservices-architecture/multi-container-microservice-net-applications/test-aspnet-core-services-web-apps.md @@ -98,25 +98,25 @@ public class PrimeWebDefaultRequestShould #### Additional resources -- **Steve Smith. Testing controllers** (ASP.NET Core)
+- **Steve Smith. Testing controllers** (ASP.NET Core) \ [https://docs.microsoft.com/aspnet/core/mvc/controllers/testing](https://docs.microsoft.com/aspnet/core/mvc/controllers/testing) -- **Steve Smith. Integration testing** (ASP.NET Core)
+- **Steve Smith. Integration testing** (ASP.NET Core) \ [https://docs.microsoft.com/aspnet/core/test/integration-tests](https://docs.microsoft.com/aspnet/core/test/integration-tests) -- **Unit testing in .NET Core using dotnet test**
+- **Unit testing in .NET Core using dotnet test** \ [https://docs.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test](../../../core/testing/unit-testing-with-dotnet-test.md) -- **xUnit.net**. Official site.
+- **xUnit.net**. Official site. \ [https://xunit.github.io/](https://xunit.github.io/) -- **Unit Test Basics.**
+- **Unit Test Basics.** \ [https://docs.microsoft.com/visualstudio/test/unit-test-basics](/visualstudio/test/unit-test-basics) -- **Moq**. GitHub repo.
+- **Moq**. GitHub repo. \ [https://github.com/moq/moq](https://github.com/moq/moq) -- **NUnit**. Official site.
+- **NUnit**. Official site. \ [https://www.nunit.org/](https://www.nunit.org/) ### Implementing service tests on a multi-container application @@ -197,12 +197,12 @@ As you can see, these docker-compose files only start the Redis, RabbitMQ, SQL S ### Additional resources -- **Tests README file** on the eShopOnContainers repo on GitHub
+- **Tests README file** on the eShopOnContainers repo on GitHub \ [https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/test) -- **Load tests README file** on the eShopOnContainers repo on GitHub
+- **Load tests README file** on the eShopOnContainers repo on GitHub \ [https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/](https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/test/ServicesTests/LoadTest/) > [!div class="step-by-step"] > [Previous](subscribe-events.md) -> [Next](background-tasks-with-ihostedservice.md) \ No newline at end of file +> [Next](background-tasks-with-ihostedservice.md) diff --git a/docs/standard/modernize-with-azure-and-containers/index.md b/docs/standard/modernize-with-azure-and-containers/index.md index 5411c497f272e..743165a105191 100644 --- a/docs/standard/modernize-with-azure-and-containers/index.md +++ b/docs/standard/modernize-with-azure-and-containers/index.md @@ -166,11 +166,14 @@ This guide doesn't show you how to create Cloud-Native applications, such as how ### Additional resources -- **Containerized Docker application lifecycle with Microsoft platform and tools** (downloadable e-book): [https://aka.ms/dockerlifecycleebook](https://aka.ms/dockerlifecycleebook) +- **Containerized Docker application lifecycle with Microsoft platform and tools** (downloadable e-book) \ + [https://aka.ms/dockerlifecycleebook](https://aka.ms/dockerlifecycleebook) -- **.NET Microservices: Architecture for containerized .NET applications** (downloadable e-book): [https://aka.ms/microservicesebook](https://aka.ms/microservicesebook) +- **.NET Microservices: Architecture for containerized .NET applications** (downloadable e-book) \ + [https://aka.ms/microservicesebook](https://aka.ms/microservicesebook) -- **Architecting modern web applications with ASP.NET Core and Azure** (downloadable e-book): [https://aka.ms/webappebook](https://aka.ms/webappebook) +- **Architecting modern web applications with ASP.NET Core and Azure** (downloadable e-book) \ + [https://aka.ms/webappebook](https://aka.ms/webappebook) ## Who should use this guide @@ -195,4 +198,4 @@ These sample apps have a second version, with modernized code, and which are fai This guide was written to help you understand your options for improving and modernizing existing .NET web applications. The guide and related sample applications are evolving. Your feedback is welcome! If you have comments about how this guide might be more helpful, please send them to [dotnet-architecture-ebooks-feedback@service.microsoft.com](mailto:dotnet-architecture-ebooks-feedback@service.microsoft.com?subject=Feedback%20for%20.NET%20Container%20&%20Microservices%20Architecture%20book). >[!div class="step-by-step"] ->[Next](lift-and-shift-existing-apps-azure-iaas.md) \ No newline at end of file +>[Next](lift-and-shift-existing-apps-azure-iaas.md)