Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thangchung/practical-dapr
A full-stack .NET microservices build on Dapr and Tye
https://github.com/thangchung/practical-dapr
blazor clean-architecture dapr ddd-patterns docker docker-compose domain-driven-design dotnet-core graphql grpc-dotnet hotchocolate kubernetes mediatr microservices minimalist protobuf tye
Last synced: 9 days ago
JSON representation
A full-stack .NET microservices build on Dapr and Tye
- Host: GitHub
- URL: https://github.com/thangchung/practical-dapr
- Owner: thangchung
- License: mit
- Created: 2020-02-29T09:06:32.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-07-05T20:28:54.000Z (over 1 year ago)
- Last Synced: 2024-10-15T05:22:53.757Z (24 days ago)
- Topics: blazor, clean-architecture, dapr, ddd-patterns, docker, docker-compose, domain-driven-design, dotnet-core, graphql, grpc-dotnet, hotchocolate, kubernetes, mediatr, microservices, minimalist, protobuf, tye
- Language: C#
- Homepage:
- Size: 3.16 MB
- Stars: 301
- Watchers: 20
- Forks: 63
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# practical-dapr project
A lightweight low ceremony .NET microservices are lifted and shifted to Kubernetes platform and run on Dapr runtime (with and without Tye options).
[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/thangchung/practical-dapr/blob/master/LICENSE)
![webhost-ui](https://github.com/thangchung/practical-dapr/workflows/webhost-ui-ci/badge.svg?branch=master)
![graphql-api](https://github.com/thangchung/practical-dapr/workflows/graphql-ci/badge.svg?branch=master)
![identity-api](https://github.com/thangchung/practical-dapr/workflows/identity-ci/badge.svg?branch=master)
![product-catalog-api](https://github.com/thangchung/practical-dapr/workflows/product-catalog-ci/badge.svg?branch=master)
![inventory-api](https://github.com/thangchung/practical-dapr/workflows/inventory-ci/badge.svg?branch=master)> This repository based on some of the old libraries. So be careful if you use it in your production environment!!!
>
> We're working on [`clean-architecture-dotnet`](https://github.com/thangchung/clean-architecture-dotnet) for the new and lightweight version of the minimal Clean Architecture, Domain-driven Design lite, CQRS lite, and just enough Cloud-native patterns, then package into Docker, and finally deploy it using Tye on Kubernetes and Dapr in a practical way 👍# High level architecture
![](docs/assets/high_level_architecture.png)
# CoolStore demo application
![](docs/assets/webui-products.png)
> Want to develop this application? Reference at [Developer Guidance](/docs/developer_guide.md)
> Want to deployment this application? Reference at [Deployment Guidance](/docs/deployment_guide.md)
# Dapr building blocks
## Service to service
- Dapr client to calling to another service (`product-catalog-api` to `inventory-api`)
- HTTP/gRPC invocation## State store
- Using state management to store the shopping cart data and its items
- Redis for state management## Pub/sub message
- Create, update and delete a project at `product-catalog-api`, and subsequently publish an event to `inventory-api` to create `price`, `rop`, and `eoq`
- Redis for pub/sub## Input/output binding
TODO
## Observability
- Run `tye` command as following
```bash
$ tye run --dtrace zipkin=http://localhost:9411 --logs seq=http://localhost:5340
```- Log management with Seq dashboard
![](docs/assets/seq_dashboard.png)
- Distributed Tracing with Zipkin dashboard (OpenTelemetry)
![](docs/assets/zipkin_dashboard.png)
> Technical stack is at [technical_stack](/docs/technical_stack.md)
## Show your support
If you liked `practical-dapr` project or if it helped you, please give a star :star: for this repository. That will not only help strengthen our .NET community but also improve cloud-native apps development skills for .NET developers in around the world. Thank you very much :+1:
## Contributing
1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :p