Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC

23
Wzorce Repository, Unity Of Work w architekturze ASP.NET MVC Piotr Stola Grupa .NET Politechnika Koszalińska 14-12-2016

Transcript of Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC

Page 1: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wzorce

Repository, Unity Of Work

w architekturze ASP.NET MVC

Piotr StolaGrupa .NET Politechnika Koszalińska 14-12-2016

Page 2: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wprowadzenie

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

> [email protected] / @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 ;)

Page 3: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wprowadzenie

@quick_net

1

2

3

4

5

6

7

8

Wzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Wprowadzenie

Architektura ASP.NET MVC

Wzorzec Repository

Wzorzec Unity of Work

Feel the force! Devexpress MVC

Pros & Cons

Podsumowanie

Q & A

Page 4: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wprowadzenie

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 5: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Architektura ASP.NET MVC

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 6: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Architektura ASP.NET MVC

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Controller View

Model

Page 7: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 8: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 9: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 10: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Architektura ASP.NET MVC

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 11: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 12: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wzorzec Repository

@quick_net

1

Wzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

DO OR DO NOT – THERE IS NO TRY

Page 13: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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()

Page 14: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 15: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Wzorzec Unity of Work

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 16: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 17: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Feel the force! Devexpress MVC

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 18: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 19: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 20: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 21: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

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

Page 22: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

Podsumowanie

@quick_netWzorce Repository, Unity Of Work

w architekturze ASP.NET MVC

Page 23: Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC

QUESTION

&

ANSWERS

Piotr StolaGrupa .NET Politechnika Koszalińska 14-12-2016