Clean Architecture w .NET Core
Cel warsztatu
Celem warsztatu jest zapoznanie uczestników z tzw. Czystą Architekturą (ang. Clean Architecture) wykorzystując do jej implementacji platformę .NET Core. Po warsztacie uczestnik powinien znać założenia i zasady takiej architektury, jej główne komponenty i przepływ informacji pomiędzy nimi oraz powinien być w stanie zaimplementować funkcjonalności zgodnie z jej kształtem. Dodatkowo, po warsztacie uczestnik powinien wiedzieć, kiedy stosowanie takiej architektury ma największe korzyści a kiedy może to być zwykły over-engineering.
Opis warsztatu
Warsztat będzie polegał na implementacji "od zera" aplikacji typu REST API zgodnie z Clean Architecture wykorzystując framework ASP.NET Core. Na warsztacie będą implementowane przykładowe przypadki użycia w trybie end-to-end: zajmiemy się zarówno warstwą aplikacyjną, domeną jak i bazą danych. Na zajęciach, poza samą architekturą, poruszone zostaną m. in. takie pojęcia jak REST, Inversion Of Control, SOLID, CQRS, Write/Read Model, Transaction Boundary, Eventual Consistency, Domain-Driven Design. Przed częścią praktyczną przewidziane jest krótkie wprowadzenie teoretyczne.
Niezmienną rzeczą naszych spotkań oczywiście jest:
Kawa, herbata, pizza sponsorowana przez https://www.shijigroup.com/
Adresaci
Grupa docelowa warsztatu to programiści za poziomie ponadpodstawowym, średnim, lub zaawansowanym, którzy chcą doskonalić swój warsztat oraz umiejętności programowania i projektowania aplikacji.
Wymagania
- Znajomość języka C#
- Podstawowa znajomość zasad programowania obiektowego
- Komputer
- Zainstalowane VisualStudio 2017 / Visual Studio Code
- Zainstalowany SDK .NET Core 2.2 -https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.300-windows-x64-installer
- Zainstalowany serwer bazy danych MS SQL Express (lub inny) https://www.microsoft.com/pl-pl/sql-server/sql-server-editions-express
- Zainstalowany klient do wywoływania żądań HTTP (np. Postman https://www.getpostman.com/)
- Głód wiedzy
Materiały do zapoznania się przed warsztatem (opcjonalnie)
Clean Architecture - https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
DDD - http://domainlanguage.com/wp-content/uploads/2016/05/DDD_Reference_2015-03.pdf
CQRS - https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs https://docs.microsoft.com/pl-pl/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/apply-simplified-microservice-cqrs-ddd-patterns
Przykłady implementacji - https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/src/Services/Ordering (oficjalny MS) https://github.com/kgrzybek/sample-dotnet-core-cqrs-api (mój własny)
Prowadzący
Kamil Grzybek - Architekt, Team Leader oraz programista związany z technologią .NET od ponad 11 lat. Absolwent Politechniki Warszawskiej i kierunku Informatyka o specjalizacji Inżynieria Oprogramowania. Zwolennik podejścia Software Craftsmanship, Agile, automatyzacji, Czystego Kodu oraz pragmatycznego rozwiązywania problemów zgodnie z ich klasą. Pasjonat tematów związanych z architekturą oprogramowania i projektowaniem systemów. Entuzjasta i praktyk Domain-Driven Design. Przemyślenia dotyczące wytwarzania oprogramowania opisuje na swoim blogu http://www.kamilgrzybek.com i Twitterze: @kamgrzybek.
Związany z firmą ITSG Global, gdzie jako architekt, programista i konsultant odpowiedzialny jest za wytwarzanie oprogramowania dla firm z branży finansowej, medycznej i Big Data.
Prywatnie - mąż, tata ukochanej córeczki, opiekun niesfornego psa, biegacz - amator i pasjonat samodoskonalenia żyjący zgodnie z Sokratesową dewizą - "wiem, że nic wiem".