Skip to content

Commit d64e2dc

Browse files
committed
Updated cloud native content to net 5
1 parent e4e6c2e commit d64e2dc

13 files changed

+28
-26
lines changed

docs/architecture/cloud-native/application-resiliency-patterns.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
title: Application resiliency patterns
33
description: Architecting Cloud Native .NET Apps for Azure | Application Resiliency Patterns
44
author: robvet
5-
ms.date: 05/13/2020
5+
ms.date: 01/19/2021
66
---
77

88
# Application resiliency patterns
99

1010
The first line of defense is application resiliency.
1111

12-
While you could invest considerable time writing your own resiliency framework, such products already exist. [Polly](http://www.thepollyproject.org/) is a comprehensive .NET resilience and transient-fault-handling library that allows developers to express resiliency policies in a fluent and thread-safe manner. Polly targets applications built with either the .NET Framework or .NET Core. The following table describes the resiliency features, called `policies`, available in the Polly Library. They can be applied individually or grouped together.
12+
While you could invest considerable time writing your own resiliency framework, such products already exist. [Polly](http://www.thepollyproject.org/) is a comprehensive .NET resilience and transient-fault-handling library that allows developers to express resiliency policies in a fluent and thread-safe manner. Polly targets applications built with either the .NET Framework or .NET 5. The following table describes the resiliency features, called `policies`, available in the Polly Library. They can be applied individually or grouped together.
1313

1414
| Policy | Experience |
1515
| :-------- | :-------- |
@@ -33,7 +33,7 @@ Note how in the previous figure the resiliency policies apply to request message
3333

3434
Question: Would you retry an HTTP Status Code of 403 - Forbidden? No. Here, the system is functioning properly, but informing the caller that they aren't authorized to perform the requested operation. Care must be taken to retry only those operations caused by failures.
3535

36-
As recommended in Chapter 1, Microsoft developers constructing cloud-native applications should target the .NET Core platform. Version 2.1 introduced the [HTTPClientFactory](https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore) library for creating HTTP Client instances for interacting with URL-based resources. Superseding the original HTTPClient class, the factory class supports many enhanced features, one of which is [tight integration](../microservices/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md) with the Polly resiliency library. With it, you can easily define resiliency policies in the application Startup class to handle partial failures and connectivity issues.
36+
As recommended in Chapter 1, Microsoft developers constructing cloud-native applications should target the .NET platform. Version 2.1 introduced the [HTTPClientFactory](https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore) library for creating HTTP Client instances for interacting with URL-based resources. Superseding the original HTTPClient class, the factory class supports many enhanced features, one of which is [tight integration](../microservices/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly.md) with the Polly resiliency library. With it, you can easily define resiliency policies in the application Startup class to handle partial failures and connectivity issues.
3737

3838
Next, let's expand on retry and circuit breaker patterns.
3939

docs/architecture/cloud-native/definition.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Defining Cloud Native
33
description: Learn about the foundational pillars that provide the bedrock for cloud-native systems
44
author: robvet
5-
ms.date: 05/13/2020
5+
ms.date: 01/19/2021
66
---
77

88
# Defining cloud native
@@ -166,11 +166,11 @@ An excellent reference guide for understanding microservices is [.NET Microservi
166166

167167
Microservices can be created with any modern development platform.
168168

169-
The Microsoft .NET Core platform is an excellent choice. Free and open source, it has many built-in features to simplify microservice development. .NET Core is cross-platform. Applications can be built and run on Windows, macOS, and most flavors of Linux.
169+
The Microsoft .NET platform is an excellent choice. Free and open source, it has many built-in features to simplify microservice development. .NET is cross-platform. Applications can be built and run on Windows, macOS, and most flavors of Linux.
170170

171-
.NET Core is highly performant and has scored well in comparison to Node.js and other competing platforms. Interestingly, [TechEmpower](https://www.techempower.com/) conducted an extensive set of [performance benchmarks](https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=plaintext) across many web application platforms and frameworks. .NET Core scored in the top 10 - well above Node.js and other competing platforms.
171+
.NET is highly performant and has scored well in comparison to Node.js and other competing platforms. Interestingly, [TechEmpower](https://www.techempower.com/) conducted an extensive set of [performance benchmarks](https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=plaintext) across many web application platforms and frameworks. .NET scored in the top 10 - well above Node.js and other competing platforms.
172172

173-
.NET Core is maintained by Microsoft and the .NET community on GitHub.
173+
.NET is maintained by Microsoft and the .NET community on GitHub.
174174

175175
## Containers
176176

docs/architecture/cloud-native/front-end-communication.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Front-end client communication
33
description: Learn how front-end clients communicate with cloud-native systems
44
author: robvet
5-
ms.date: 05/13/2020
5+
ms.date: 01/19/2021
66
---
77

88
# Front-end client communication
@@ -50,7 +50,7 @@ To start, you could build your own API Gateway service. A quick search of GitHub
5050

5151
For simple .NET cloud-native applications, you might consider the [Ocelot Gateway](https://github.com/ThreeMammals/Ocelot). Ocelot is an Open Source API Gateway created for .NET microservices that require a unified point of entry into their system. It's lightweight, fast, scalable.
5252

53-
Like any API Gateway, its primary functionality is to forward incoming HTTP requests to downstream services. Additionally, it supports a wide variety of capabilities that are configurable in a .NET Core middleware pipeline. Its feature set is presented in following table.
53+
Like any API Gateway, its primary functionality is to forward incoming HTTP requests to downstream services. Additionally, it supports a wide variety of capabilities that are configurable in a .NET middleware pipeline. Its feature set is presented in following table.
5454

5555
|Ocelot Features | |
5656
| :-------- | :-------- |

docs/architecture/cloud-native/grpc.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: gRPC
33
description: Learn about gRPC, its role in cloud-native applications, and how it differs from HTTP RESTful communication.
44
author: robvet
55
no-loc: [Blazor, "Blazor WebAssembly"]
6-
ms.date: 05/13/2020
6+
ms.date: 01/19/2021
77
---
88

99
# gRPC
@@ -54,7 +54,7 @@ gRPC is integrated into .NET Core 3.0 SDK and later. The following tools support
5454
- Visual Studio Code
5555
- the dotnet CLI
5656

57-
The SDK includes tooling for endpoint routing, built-in IoC, and logging. The open-source Kestrel web server supports HTTP/2 connections. Figure 4-20 shows a Visual Studio 2019 template that scaffolds a skeleton project for a gRPC service. Note how .NET Core fully supports Windows, Linux, and macOS.
57+
The SDK includes tooling for endpoint routing, built-in IoC, and logging. The open-source Kestrel web server supports HTTP/2 connections. Figure 4-20 shows a Visual Studio 2019 template that scaffolds a skeleton project for a gRPC service. Note how .NET fully supports Windows, Linux, and macOS.
5858

5959
![gRPC Support in Visual Studio 2019](./media/visual-studio-2019-grpc-template.png)
6060

@@ -86,7 +86,7 @@ At the time, of this writing, gRPC is primarily used with backend services. Mode
8686

8787
## gRPC implementation
8888

89-
The microservice reference architecture, [eShop on Containers](https://github.com/dotnet-architecture/eShopOnContainers), from Microsoft, shows how to implement gRPC services in .NET Core applications. Figure 4-22 presents the back-end architecture.
89+
The microservice reference architecture, [eShop on Containers](https://github.com/dotnet-architecture/eShopOnContainers), from Microsoft, shows how to implement gRPC services in .NET applications. Figure 4-22 presents the back-end architecture.
9090

9191
![Backend architecture for eShop on Containers](./media/eshop-with-aggregators.png)
9292

@@ -98,7 +98,7 @@ In the previous figure, note how eShop embraces the [Backend for Frontends patte
9898

9999
**Figure 4-23**. gRPC in eShop on Containers
100100

101-
gRPC communication requires both client and server components. In the previous figure, note how the Shopping Aggregator implements a gRPC client. The client makes synchronous gRPC calls (in red) to backend microservices, each of which implement a gRPC server. Both the client and server take advantage of the built-in gRPC plumbing from the .NET Core SDK. Client-side *stubs* provide the plumbing to invoke remote gRPC calls. Server-side components provide gRPC plumbing that custom service classes can inherit and consume.
101+
gRPC communication requires both client and server components. In the previous figure, note how the Shopping Aggregator implements a gRPC client. The client makes synchronous gRPC calls (in red) to backend microservices, each of which implement a gRPC server. Both the client and server take advantage of the built-in gRPC plumbing from the .NET SDK. Client-side *stubs* provide the plumbing to invoke remote gRPC calls. Server-side components provide gRPC plumbing that custom service classes can inherit and consume.
102102

103103
Microservices that expose both a RESTful API and gRPC communication require multiple endpoints to manage traffic. You would open an endpoint that listens for HTTP traffic for the RESTful calls and another for gRPC calls. The gRPC endpoint must be configured for the HTTP/2 protocol that is required for gRPC communication.
104104

docs/architecture/cloud-native/index.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
title: Architecting Cloud Native .NET Applications for Azure
33
description: A guide for building cloud-native applications leveraging containers, microservices, and serverless features of Azure.
44
author: ardalis
5-
ms.date: 11/10/2020
5+
ms.date: 01/19/2021
66
---
77

88
# Architecting Cloud Native .NET Applications for Azure
99

1010
![cover image](./media/cover.png)
1111

12-
**EDITION v1.0**
12+
**EDITION v1.0.2**
1313

1414
Refer [changelog](https://aka.ms/cn-ebook-changelog) for the book updates and community contributions.
1515

@@ -54,14 +54,16 @@ Participants and Reviewers:
5454
> **Jeremy Likness**, Senior Program Manager, .NET team, Microsoft
5555
>
5656
> **Cecil Phillip**, Senior Cloud Advocate, Microsoft
57+
>
58+
> **Sumit Ghosh**, Principal Consultant at Neudesic
5759
5860
Editors:
5961

6062
> **Maira Wenzel**, Program Manager, .NET team, Microsoft
6163
6264
## Version
6365

64-
This guide has been written to cover **.NET Core 3.1** version along with many additional updates related to the same “wave” of technologies (that is, Azure and additional third-party technologies) coinciding in time with the .NET Core 3.1 release.
66+
This guide has been written to cover **.NET 5** version along with many additional updates related to the same “wave” of technologies (that is, Azure and additional third-party technologies) coinciding in time with the .NET 5 release.
6567

6668
## Who should use this guide
6769

docs/architecture/cloud-native/introduce-eshoponcontainers-reference-app.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
title: Introducing eShopOnContainers reference app
33
description: Introducing the eShopOnContainers Cloud Native Microservices Reference App for ASP.NET Core and Azure.
4-
ms.date: 05/13/2020
4+
ms.date: 01/19/2021
55
---
66

77
# Introducing eShopOnContainers reference app
88

9-
Microsoft, in partnership with leading community experts, has produced a full-featured cloud-native microservices reference application, eShopOnContainers. This application is built to showcase using .NET Core and Docker, and optionally Azure, Kubernetes, and Visual Studio, to build an online storefront.
9+
Microsoft, in partnership with leading community experts, has produced a full-featured cloud-native microservices reference application, eShopOnContainers. This application is built to showcase using .NET and Docker, and optionally Azure, Kubernetes, and Visual Studio, to build an online storefront.
1010

1111
![eShopOnContainers Sample App Screenshot.](./media/eshoponcontainers-sample-app-screenshot.png)
1212

@@ -45,7 +45,7 @@ The eShopOnContainers application is accessible from web or mobile clients that
4545

4646
The application's functionality is broken up into a number of distinct microservices. There are services responsible for authentication and identity, listing items from the product catalog, managing users' shopping baskets, and placing orders. Each of these separate services has its own persistent storage. There's no single master data store with which all services interact. Instead, coordination and communication between the services is done on an as-needed basis and through the use of a message bus.
4747

48-
Each of the different microservices is designed differently, based on their individual requirements. This means their technology stack may differ, although they're all built using .NET Core and designed for the cloud. Simpler services provide basic Create-Read-Update-Delete (CRUD) access to the underlying data stores, while more advanced services use Domain-Driven Design approaches and patterns to manage business complexity.
48+
Each of the different microservices is designed differently, based on their individual requirements. This means their technology stack may differ, although they're all built using .NET and designed for the cloud. Simpler services provide basic Create-Read-Update-Delete (CRUD) access to the underlying data stores, while more advanced services use Domain-Driven Design approaches and patterns to manage business complexity.
4949

5050
![Different kinds of microservices](./media/different-kinds-of-microservices.png)
5151

docs/architecture/cloud-native/leverage-containers-orchestrators.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Leveraging containers and orchestrators
33
description: Leveraging Docker Containers and Kubernetes Orchestrators in Azure
4-
ms.date: 05/31/2020
4+
ms.date: 01/19/2021
55
---
66

77
# Leveraging containers and orchestrators
@@ -179,12 +179,12 @@ Visual Studio supports Docker development for web-based applications. When you c
179179
When this option is selected, the project is created with a `Dockerfile` in its root, which can be used to build and host the app in a Docker container. An example Dockerfile is shown in Figure 3-6.git
180180

181181
```dockerfile
182-
FROM mcr.microsoft.com/dotnet/aspnet:3.1-buster-slim AS base
182+
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
183183
WORKDIR /app
184184
EXPOSE 80
185185
EXPOSE 443
186186
187-
FROM mcr.microsoft.com/dotnet/sdk:3.1-buster AS build
187+
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
188188
WORKDIR /src
189189
COPY ["eShopWeb/eShopWeb.csproj", "eShopWeb/"]
190190
RUN dotnet restore "eShopWeb/eShopWeb.csproj"

docs/architecture/cloud-native/map-eshoponcontainers-azure-services.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
title: Mapping eShopOnContainers to Azure Services
33
description: Mapping eShopOnContainers to Azure Services like Azure Kubernetes Service, API Gateway, and Azure Service Bus.
4-
ms.date: 05/13/2020
4+
ms.date: 01/19/2021
55
---
66

77
# Mapping eShopOnContainers to Azure Services
88

9-
Although not required, Azure is well-suited to supporting the eShopOnContainers because the project was built to be a cloud-native application. The application is built with .NET Core, so it can run on Linux or Windows containers depending on the Docker host. The application is made up of multiple autonomous microservices, each with its own data. The different microservices showcase different approaches, ranging from simple CRUD operations to more complex DDD and CQRS patterns. Microservices communicate with clients over HTTP and with one another via message-based communication. The application supports multiple platforms for clients as well, since it adopts HTTP as a standard communication protocol and includes ASP.NET Core and Xamarin mobile apps that run on Android, iOS, and Windows platforms.
9+
Although not required, Azure is well-suited to supporting the eShopOnContainers because the project was built to be a cloud-native application. The application is built with .NET, so it can run on Linux or Windows containers depending on the Docker host. The application is made up of multiple autonomous microservices, each with its own data. The different microservices showcase different approaches, ranging from simple CRUD operations to more complex DDD and CQRS patterns. Microservices communicate with clients over HTTP and with one another via message-based communication. The application supports multiple platforms for clients as well, since it adopts HTTP as a standard communication protocol and includes ASP.NET Core and Xamarin mobile apps that run on Android, iOS, and Windows platforms.
1010

1111
The application's architecture is shown in Figure 2-5. On the left are the client apps, broken up into mobile, traditional Web, and Web Single Page Application (SPA) flavors. On the right are the server-side components that make up the system, each of which can be hosted in Docker containers and Kubernetes clusters. The traditional web app is powered by the ASP.NET Core MVC application shown in yellow. This app and the mobile and web SPA applications communicate with the individual microservices through one or more API gateways. The API gateways follow the "backends for front ends" (BFF) pattern, meaning that each gateway is designed to support a given front-end client. The individual microservices are listed to the right of the API gateways and include both business logic and some kind of persistence store. The different services make use of SQL Server databases, Redis cache instances, and MongoDB/CosmosDB stores. On the far right is the system's Event Bus, which is used for communication between the microservices.
1212

26.9 KB
Loading
15.6 KB
Loading

0 commit comments

Comments
 (0)