Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
1. Wzorce
Repository, Unity Of Work
w architekturze ASP.NET MVC
Piotr Stola
Grupa .NET Politechnika Koszalińska 14-12-2016
2. Wprowadzenie
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
> piotr.stola@quick-solution.net / @quick_net
> niezależny konsultant, programista .NET / C# / Devexpress
> tworzymy rozwiązania dla szeroko rozumianego sektor finansowego
> od 2014 Devexpress MVP
> popołudniami – Mistrz Jedi i Architekt LEGO ;)
7. Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Model
>
>
>
>
abstrakcyjne pojęcie
reprezentuje poszczególne stany naszej aplikacji
POCOs, ViewModels, Domain Models,
Data Containers
powinien być dostępny na każdym poziomie
aplikacji
grupowanie obiektów w
biznesowe – domenowe zbiory
8. Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
View
>
>
>
>
prezentacja wyników operacji, stanu modelu
użytkownikowi w postaci UI
odpowiedzialny za interakcję z użytkownikiem,
brak logiki biznesowej, widoki powinny zawierać
tylko logikę prezentacyjną
technologie powiązane : HTML5, JavaScript
(JQuery, Angular JS, Knockout JS), CSS,
TypeScript, rozwiązania zewnętrzne jak
Devexpress MVC
> na jeden widok, może składać się wiele
niezależnych widoków częściowych – pratial views
9. Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Controller
>
>
>
interpretacja akcji użytkownika
przetworzenie i operacje biznesowe
na obiekcie modelu
przekazanie wyników operacji do widoku
11. Wzorzec Repository
@quick_net
>
>
>
>
>
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
warstwa abstrakcji pomiędzy logiką biznesową aplikacji,
a warstwą dostępu do danych
głównie realizuje implementacje operacji CRUD
na warstwie dostępu do danych
dzięki implementacji interfejsu Repository możemy w „łatwy”
sposób podmienić warstwę dostępu do danych
zmniejsza liczbę duplikowanego kodu przez co ogranicza
wystąpienie błędów oraz zapewnia łatwość
utrzymania kodu
istnieje kilka rodzajów implementacji
13. Wzorzec Unity Of Work
@quick_net
>
>
>
>
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
zarządzanie stanem obiektów, które modyfikujemy, dodajemy,
usuwamy z bazy danych
zapewnienie transakcyjności operacji
współdzielenie kontekstu dostępu do bazy danych pomiędzy
repozytoriami i minimalizowanie operacji zapisu
najprostsza implementacja Unity Of Work sprowadza się do
implementacji metody Save()
14. Wzorzec Unity of Work
@quick_net
1
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
DO OR DO NOT – THERE IS NO TRY
15. Wzorzec Unity of Work
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
16. Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Presentation
Buissnes
Buissnes Services
Data Access
ASP.NET MVC
DB
UNITY OF WORK
REPOSITORY REPOSITORY
DbContext
C V
M
Common
Core
17. Feel the force! Devexpress MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
18. Feel the force! Devexpress MVC
@quick_net
1
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
DO OR DO NOT – THERE IS NO TRY
19. Feel the force! Devexpress MVC
@quick_net
>
>
>
>
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
niski próg wejściowy jeżeli chodzi o naukę implementacji
szybsza implementacja funkcjonalności w projekcie
UI out of the box
aplikacja, która jest cross-browser
> wsparcie dla JavaScripy i AJAX - Callbacks, TypeScript
> wsparcie dla urządzeń mobilnych
20. Pros & Cons
@quick_net
+
-
+
-
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
klarowne rozdzielenie zależności i odpowiedzialności w projekcie
ograniczenie, spłaszczenie możliwości systemów ORM
minimalizacja duplikowanego kodu oraz podniesienie
możliwości reużywalności kodu
nadmierne rozbudowanie Repository = zmniejszenie uniwersalności
+ oddzielenie kodu warstwy prezentacji (HTML/JS) od code behind
(Controller / Repository)
- prawie zawsze systemy ORM mają zaimplementowane obydwa wzorce
+ dzięki implementacji interfejsu Repository możemy w „łatwy” sposób
podmienić warstwę dostępu do danych
- zagrożenie pobierania nadmiernej ilości danych do warstwy prezentacji
21. Podsumowanie
@quick_net
+
+
+
+
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Separate of Concerns
Repository
Unity of Work
Devexpress MVC
+ Model View Controller
- DI / Services / Unit Testing / Validation Strategy