Dapr enables developers using any language or framework to easily write microservices. It addresses many of the challenges found that come along with distributed applications, such as:
eShopOnDapr evolves (or, Daprizes, if you will) the earlier eShopOnContainers application by integrating Dapr building blocks and components:
As focus of the eShopOnDapr reference application is on Dapr, the original application has been updated. The updated architecture consists of:
A frontend web-app written in Blazor. It sends user requests to an API gateway microservice.
The API gateway abstracts the backend core microservices from the frontend client. It's implemented using Envoy, a high performant, open-source service proxy. Envoy routes incoming requests to various backend microservices. Most requests are simple CRUD operations (for example, get the list of brands from the catalog) and handled by a direct call to a backend microservice.
Other requests are logically more complex and require multiple microservices to work together. For these cases, eShopOnDapr implements an aggregator microservice that orchestrates a workflow across the microservices needed to complete the operation.
The set of core backend microservices includes functionality required for an eCommerce store. Each is self-contained and independent of the others. Following widely accepted domain decomposing patterns, each microservice isolates a specific business capability:
Finally, the event bus enables asynchronous publish/subscribe messaging across microservices. Developers can plug in any Dapr-supported message broker.
eShopOnDapr runs in containers and requires Docker to run. There are various ways to start the application:
Note that it will take a little while to start all containers. eShopOnDapr includes a health UI that you can use to see if the containers are ready. You can access it at http://localhost:5107.
When all microservices are healthy, you can navigate to http://localhost:5104 to view the eShopOnDapr UI.