From b747d4ef9a0a0d8d16b9a2b8842b833d609f15f4 Mon Sep 17 00:00:00 2001 From: Rob Vettor Date: Tue, 23 Feb 2021 20:25:33 -0600 Subject: [PATCH 1/5] We lost history right before we published. Updating msdate metadata values to get added back as a contributor on each chapter --- docs/architecture/dapr-for-net-developers/bindings.md | 2 +- docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md | 2 +- docs/architecture/dapr-for-net-developers/foreword.md | 2 +- docs/architecture/dapr-for-net-developers/getting-started.md | 2 +- docs/architecture/dapr-for-net-developers/index.md | 2 +- docs/architecture/dapr-for-net-developers/observability.md | 2 +- docs/architecture/dapr-for-net-developers/publish-subscribe.md | 2 +- .../dapr-for-net-developers/reference-application.md | 2 +- docs/architecture/dapr-for-net-developers/secrets.md | 2 +- docs/architecture/dapr-for-net-developers/service-invocation.md | 2 +- docs/architecture/dapr-for-net-developers/state-management.md | 2 +- docs/architecture/dapr-for-net-developers/summary.md | 2 +- .../dapr-for-net-developers/the-world-is-distributed.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/architecture/dapr-for-net-developers/bindings.md b/docs/architecture/dapr-for-net-developers/bindings.md index 145cf9ae28ada..393321abe707d 100644 --- a/docs/architecture/dapr-for-net-developers/bindings.md +++ b/docs/architecture/dapr-for-net-developers/bindings.md @@ -2,7 +2,7 @@ title: The Dapr bindings building block description: A description of the bindings building block, its features, benefits, and how to apply it author: edwinvw -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # The Dapr bindings building block diff --git a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md index 2aa7010d8a352..fe03a30849dbb 100644 --- a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md +++ b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md @@ -2,7 +2,7 @@ title: Dapr at 20,000 feet description: A high-level overview of what dapr is, what it does, and how it works. author: robvet -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # Dapr at 20,000 feet diff --git a/docs/architecture/dapr-for-net-developers/foreword.md b/docs/architecture/dapr-for-net-developers/foreword.md index df0fdb4e6d3ee..635ba4dcf458f 100644 --- a/docs/architecture/dapr-for-net-developers/foreword.md +++ b/docs/architecture/dapr-for-net-developers/foreword.md @@ -2,7 +2,7 @@ title: Foreword description: A foreword to Dapr for .NET Developers by Mark Russinovich author: markrussinovich -ms.date: 02/14/2021 +ms.date: 02/17/2021 --- # Foreword diff --git a/docs/architecture/dapr-for-net-developers/getting-started.md b/docs/architecture/dapr-for-net-developers/getting-started.md index c50313d9cad50..a554bbf424dcc 100644 --- a/docs/architecture/dapr-for-net-developers/getting-started.md +++ b/docs/architecture/dapr-for-net-developers/getting-started.md @@ -2,7 +2,7 @@ title: Get started with Dapr description: A guide for preparing your local development environment and building your first .NET applications with Dapr. author: amolenk -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # Get started with Dapr diff --git a/docs/architecture/dapr-for-net-developers/index.md b/docs/architecture/dapr-for-net-developers/index.md index 67fccda2ae534..086df8d083dc5 100644 --- a/docs/architecture/dapr-for-net-developers/index.md +++ b/docs/architecture/dapr-for-net-developers/index.md @@ -2,7 +2,7 @@ title: Dapr for .NET Developers description: A guide for .NET developers to understand and leverage the full power of Microsoft's open source Distributed Application Runtime. author: robvet -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # Dapr for .NET Developers diff --git a/docs/architecture/dapr-for-net-developers/observability.md b/docs/architecture/dapr-for-net-developers/observability.md index 2552e43397681..8475ca90896a7 100644 --- a/docs/architecture/dapr-for-net-developers/observability.md +++ b/docs/architecture/dapr-for-net-developers/observability.md @@ -2,7 +2,7 @@ title: The Dapr observability building block description: A description of the observability building block, its features, benefits, and how to apply it author: edwinvw -ms.date: 02/07/2021 +ms.date: 02/17/2021 ms.reviewer: robvet --- diff --git a/docs/architecture/dapr-for-net-developers/publish-subscribe.md b/docs/architecture/dapr-for-net-developers/publish-subscribe.md index c06609431f15c..d0705e3a9a32b 100644 --- a/docs/architecture/dapr-for-net-developers/publish-subscribe.md +++ b/docs/architecture/dapr-for-net-developers/publish-subscribe.md @@ -2,7 +2,7 @@ title: The Dapr publish & subscribe building block description: A description of the Dapr publish & subscribe building-block and how to apply it author: edwinvw -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # The Dapr publish & subscribe building block diff --git a/docs/architecture/dapr-for-net-developers/reference-application.md b/docs/architecture/dapr-for-net-developers/reference-application.md index 2c8bd58def81c..b66ccba10786c 100644 --- a/docs/architecture/dapr-for-net-developers/reference-application.md +++ b/docs/architecture/dapr-for-net-developers/reference-application.md @@ -2,7 +2,7 @@ title: Introduction to the eShopOnDapr reference application description: An overview of the eShopOnDapr reference application and its history. author: amolenk -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # Dapr reference application diff --git a/docs/architecture/dapr-for-net-developers/secrets.md b/docs/architecture/dapr-for-net-developers/secrets.md index e1d02bca6d234..b2f4521d2527a 100644 --- a/docs/architecture/dapr-for-net-developers/secrets.md +++ b/docs/architecture/dapr-for-net-developers/secrets.md @@ -2,7 +2,7 @@ title: The Dapr secrets building block description: A description of the secrets building block, its features, benefits, and how to apply it author: edwinvw -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # The Dapr secrets building block diff --git a/docs/architecture/dapr-for-net-developers/service-invocation.md b/docs/architecture/dapr-for-net-developers/service-invocation.md index d806c4a6e447a..3a6376ae8eb5c 100644 --- a/docs/architecture/dapr-for-net-developers/service-invocation.md +++ b/docs/architecture/dapr-for-net-developers/service-invocation.md @@ -2,7 +2,7 @@ title: The Dapr service invocation building block description: A description of the service invocation building block, its features, benefits, and how to apply it author: amolenk -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # The Dapr service invocation building block diff --git a/docs/architecture/dapr-for-net-developers/state-management.md b/docs/architecture/dapr-for-net-developers/state-management.md index e756b32bf7a75..ba6b423ea6dd1 100644 --- a/docs/architecture/dapr-for-net-developers/state-management.md +++ b/docs/architecture/dapr-for-net-developers/state-management.md @@ -2,7 +2,7 @@ title: The Dapr state management building block description: A description of the state management building block, its features, benefits, and how to apply it. author: amolenk -ms.date: 02/07/2021 +ms.date: 02/17/2021 ms.reviewer: robvet --- diff --git a/docs/architecture/dapr-for-net-developers/summary.md b/docs/architecture/dapr-for-net-developers/summary.md index 68874f9611448..a2ec5f4c803f8 100644 --- a/docs/architecture/dapr-for-net-developers/summary.md +++ b/docs/architecture/dapr-for-net-developers/summary.md @@ -1,7 +1,7 @@ --- title: Summary and the road ahead description: A summary of key Dapr conclusions and a look at the road ahead. -ms.date: 02/04/2021 +ms.date: 02/17/2021 author: robvet --- diff --git a/docs/architecture/dapr-for-net-developers/the-world-is-distributed.md b/docs/architecture/dapr-for-net-developers/the-world-is-distributed.md index a065b99ca1c15..61cbce2c09172 100644 --- a/docs/architecture/dapr-for-net-developers/the-world-is-distributed.md +++ b/docs/architecture/dapr-for-net-developers/the-world-is-distributed.md @@ -2,7 +2,7 @@ title: The world is distributed description: The benefits and challenges of distributed applications with a look at monolithic and SOA approaches. author: robvet -ms.date: 02/07/2021 +ms.date: 02/17/2021 --- # The world is distributed From ca505875ad588f417629fc2a600be2a64c22ed21 Mon Sep 17 00:00:00 2001 From: Rob Vettor Date: Sun, 28 Feb 2021 22:44:51 -0600 Subject: [PATCH 2/5] Removed tracing exporters from Ch 2 --- .../dapr-for-net-developers/dapr-at-20000-feet.md | 11 +++++++---- .../dapr-for-net-developers/getting-started.md | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md index fe03a30849dbb..f380f24ac959e 100644 --- a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md +++ b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md @@ -21,7 +21,9 @@ Imagine flying in a jet at 20,000 feet. You look out the window and see the land Dapr addresses a large challenge inherent in modern distributed applications: **Complexity**. -Through an architecture of pluggable components, Dapr greatly simplifies the plumbing behind distributed applications. It provides a **dynamic glue** that binds your application with infrastructure capabilities from the Dapr runtime. For example, your application may require a state store. You could write custom code to target Redis Cache and inject it into your service at runtime. However, Dapr simplifies your experience by providing a distributed cache capability out-of-the-box. Your service invokes a Dapr **building block** that dynamically binds to Redis Cache **component** via a Dapr **configuration**. With this model, your service delegates the call to Dapr, which calls Redis on your behalf. Your service has no SDK, library, or direct reference to Redis. You code against the common Dapr state management API, not the Redis Cache API. +Through an architecture of pluggable components, Dapr greatly simplifies the plumbing behind distributed applications. It provides a **dynamic glue** that binds your application with infrastructure capabilities from the Dapr runtime. + +Consider the need for state management. What if your service required a state store? You could write custom code to target Redis Cache and inject it into your service at runtime. However, Dapr simplifies your experience by providing a distributed cache capability out-of-the-box. Your service invokes a Dapr **building block** that dynamically binds to Redis Cache **component** via a Dapr **configuration**. With this model, your service delegates the call to Dapr, which calls Redis on your behalf. Your service has no SDK, library, or direct reference to Redis. You code against the common Dapr state management API, not the Redis Cache API. Figure 2-1 shows Dapr from 20,000 feet. @@ -150,7 +152,6 @@ At the time of this writing, the following component types are provided by Dapr: | [Bindings](https://github.com/dapr/components-contrib/tree/master/bindings) | Provides a uniform interface to trigger application events from external systems and invoke external systems with optional data payloads. | | [Middleware](https://github.com/dapr/components-contrib/tree/master/middleware) | Allows custom middleware to plug into the request processing pipeline and invoke additional actions on a request or response. | | [Secret stores](https://github.com/dapr/components-contrib/tree/master/secretstores) | Provides a uniform interface to interact with external secret stores, including cloud, edge, commercial, open-source services. | -| [Tracing exporters](https://github.com/dapr/components-contrib/tree/master/exporters) | Provides a uniform interface to open telemetry wrappers. | As the jet completes its fly over of Dapr, you look back once more and can see how it connects together. @@ -204,6 +205,8 @@ gRPC is a modern, high-performance framework that evolves the age-old [remote pr - Bidirectional full-duplex communication for sending both client requests and server responses simultaneously. - Built-in streaming enabling requests and responses to asynchronously stream large data sets. +To learn more, check out the [gRPC overview](https://docs.microsoft.com/dotnet/architecture/cloud-native/grpc#what-is-grpc) from the [Architecting Cloud-Native .NET Apps for Azure](https://docs.microsoft.com/dotnet/architecture/cloud-native/) eBook. + ## Dapr and service meshes Service mesh is another rapidly evolving technology for distributed applications. @@ -216,7 +219,7 @@ Figure 2-8 shows an application that implements service mesh technology. **Figure 2-8**. Service mesh with a side car. -The previous figure shows how messages are intercepted by a proxy that runs alongside each service. Each proxy can be configured with traffic rules specific to the service. It understands messages and can route them across your services and the outside world. +The previous figure shows how messages are intercepted by a sidecar proxy that runs alongside each service. Each proxy can be configured with traffic rules specific to the service. It understands messages and can route them across your services and the outside world. So the question becomes, "Is Dapr a service mesh?". @@ -230,7 +233,7 @@ Figure 2-9 shows an application that implements both Dapr and service mesh techn **Figure 2-9**. Dapr and service mesh together. -In the book, [Learning Dapr](https://www.amazon.com/Learning-Dapr-Building-Distributed-Applications/dp/1492072427/ref=sr_1_1?dchild=1&keywords=dapr&qid=1604794794&sr=8-1), authors Haishi Bai and Yaron Schneider, cover the integration of Dapr and service mesh. +The [Dapr online documentation](https://docs.dapr.io/concepts/faq/#networking-and-service-meshes) cover Dapr and service mesh integration. ## Summary diff --git a/docs/architecture/dapr-for-net-developers/getting-started.md b/docs/architecture/dapr-for-net-developers/getting-started.md index a554bbf424dcc..7070fb4a7bad4 100644 --- a/docs/architecture/dapr-for-net-developers/getting-started.md +++ b/docs/architecture/dapr-for-net-developers/getting-started.md @@ -250,7 +250,7 @@ Now, you'll configure communication between the services using Dapr [service inv } ``` - The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. You'll use the `DaprClient` class later on to communicate with the Dapr sidecar. + The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. Now, you can inject an instance of `DaprClient` into your classes to communicate with the Dapr sidecar. 1. Add a new C# class file named *WeatherForecast* to the `DaprFrontEnd` project: From c32c371e2604e62be51292032663aedf5ba2807d Mon Sep 17 00:00:00 2001 From: Rob Vettor Date: Wed, 3 Mar 2021 22:44:10 -0600 Subject: [PATCH 3/5] minor acrolynx adjustments to chapter 3 --- docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md index f380f24ac959e..947843fcaf036 100644 --- a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md +++ b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md @@ -23,7 +23,7 @@ Dapr addresses a large challenge inherent in modern distributed applications: ** Through an architecture of pluggable components, Dapr greatly simplifies the plumbing behind distributed applications. It provides a **dynamic glue** that binds your application with infrastructure capabilities from the Dapr runtime. -Consider the need for state management. What if your service required a state store? You could write custom code to target Redis Cache and inject it into your service at runtime. However, Dapr simplifies your experience by providing a distributed cache capability out-of-the-box. Your service invokes a Dapr **building block** that dynamically binds to Redis Cache **component** via a Dapr **configuration**. With this model, your service delegates the call to Dapr, which calls Redis on your behalf. Your service has no SDK, library, or direct reference to Redis. You code against the common Dapr state management API, not the Redis Cache API. +Consider a requirement to make one of your services stateful? What would be your design? You could write custom code that targets a state store such as Redis Cache. However, Dapr provides state management capabilities out-of-the-box. Your service invokes a Dapr state management **building block** that dynamically binds to a state store **component** via a Dapr **configuration**. Dapr ships with several pre-built state store components, including Redis. With this model, your service delegates state management to the Dapr runtime. Your service has no SDK, library, or direct reference to the underlying component. You can even change state stores, say, from Redis to MySQL or Cassandra, with no code changes. Figure 2-1 shows Dapr from 20,000 feet. From 5273e7d637c2d2bc03823d7cb7b26e69f19e2d86 Mon Sep 17 00:00:00 2001 From: Rob Vettor Date: Sat, 6 Mar 2021 12:02:38 -0600 Subject: [PATCH 4/5] additional fine-tuning based on team recommendations --- docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md | 2 +- docs/architecture/dapr-for-net-developers/getting-started.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md index ab5f44e763f90..3394cb784f6f9 100644 --- a/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md +++ b/docs/architecture/dapr-for-net-developers/dapr-at-20000-feet.md @@ -23,7 +23,7 @@ Dapr addresses a large challenge inherent in modern distributed applications: ** Through an architecture of pluggable components, Dapr greatly simplifies the plumbing behind distributed applications. It provides a **dynamic glue** that binds your application with infrastructure capabilities from the Dapr runtime. -Consider a requirement to make one of your services stateful? What would be your design? You could write custom code that targets a state store such as Redis Cache. However, Dapr provides state management capabilities out-of-the-box. Your service invokes a Dapr state management **building block** that dynamically binds to a state store **component** via a Dapr **configuration**. Dapr ships with several pre-built state store components, including Redis. With this model, your service delegates state management to the Dapr runtime. Your service has no SDK, library, or direct reference to the underlying component. You can even change state stores, say, from Redis to MySQL or Cassandra, with no code changes. +Consider a requirement to make one of your services stateful? What would be your design. You could write custom code that targets a state store such as Redis Cache. However, Dapr provides state management capabilities out-of-the-box. Your service invokes the Dapr state management **building block** that dynamically binds to a state store **component** via a Dapr **component configuration** yaml file. Dapr ships with several pre-built state store components, including Redis. With this model, your service delegates state management to the Dapr runtime. Your service has no SDK, library, or direct reference to the underlying component. You can even change state stores, say, from Redis to MySQL or Cassandra, with no code changes. Figure 2-1 shows Dapr from 20,000 feet. diff --git a/docs/architecture/dapr-for-net-developers/getting-started.md b/docs/architecture/dapr-for-net-developers/getting-started.md index 4bacacbd2c086..f460f682909a4 100644 --- a/docs/architecture/dapr-for-net-developers/getting-started.md +++ b/docs/architecture/dapr-for-net-developers/getting-started.md @@ -250,7 +250,7 @@ Now, you'll configure communication between the services using Dapr [service inv } ``` - The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. You'll use the `DaprClient` class later on to communicate with the Dapr sidecar. + The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. That done, you can now inject an instance of `DaprClient` into your service code to communicate with the Dapr sidecar, building blocks, and components. 1. Add a new C# class file named *WeatherForecast* to the `DaprFrontEnd` project: From 1dd6ee502bf843ef9cc73e5cbb74d2831f82a9be Mon Sep 17 00:00:00 2001 From: Rob Vettor Date: Fri, 12 Mar 2021 22:32:26 -0600 Subject: [PATCH 5/5] Update docs/architecture/dapr-for-net-developers/getting-started.md Co-authored-by: David Pine --- docs/architecture/dapr-for-net-developers/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/dapr-for-net-developers/getting-started.md b/docs/architecture/dapr-for-net-developers/getting-started.md index f460f682909a4..87861b5457567 100644 --- a/docs/architecture/dapr-for-net-developers/getting-started.md +++ b/docs/architecture/dapr-for-net-developers/getting-started.md @@ -250,7 +250,7 @@ Now, you'll configure communication between the services using Dapr [service inv } ``` - The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. That done, you can now inject an instance of `DaprClient` into your service code to communicate with the Dapr sidecar, building blocks, and components. + The call to `AddDapr` registers the `DaprClient` class with the ASP.NET Core dependency injection system. With the client registered, you can now inject an instance of `DaprClient` into your service code to communicate with the Dapr sidecar, building blocks, and components. 1. Add a new C# class file named *WeatherForecast* to the `DaprFrontEnd` project: