SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Wzorce
Repository, Unity Of Work
w architekturze ASP.NET MVC
Piotr Stola
Grupa .NET Politechnika Koszalińska 14-12-2016
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 ;)
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
Wprowadzenie
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
Controller View
Model
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
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
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
Architektura ASP.NET MVC
@quick_netWzorce Repository, Unity Of Work
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
Wzorzec Repository
@quick_net
1
Wzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
DO OR DO NOT – THERE IS NO TRY
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()
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
Wzorzec Unity of Work
@quick_netWzorce Repository, Unity Of Work
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
Feel the force! Devexpress MVC
@quick_netWzorce Repository, Unity Of Work
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
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
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
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
Podsumowanie
@quick_netWzorce Repository, Unity Of Work
w architekturze ASP.NET MVC
QUESTION
&
ANSWERS
Piotr Stola
Grupa .NET Politechnika Koszalińska 14-12-2016

Weitere ähnliche Inhalte

Was ist angesagt?

Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...The Software House
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"HighSolutions Sp. z o.o.
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Bartlomiej Zass
 
Serverless w Azure, czyli Azure Functions
Serverless w Azure, czyli Azure FunctionsServerless w Azure, czyli Azure Functions
Serverless w Azure, czyli Azure FunctionsLukasz Kaluzny
 
ASP.NET Core i Angular : Jak zacząć przygodę
ASP.NET Core  i Angular : Jak zacząć przygodę ASP.NET Core  i Angular : Jak zacząć przygodę
ASP.NET Core i Angular : Jak zacząć przygodę Cezary Walenciuk
 
Ciągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I NarzędziaCiągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I NarzędziaPaweł Harajda
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETBartlomiej Zass
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
REvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w RailsachREvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w RailsachThe Software House
 

Was ist angesagt? (17)

Ext js
Ext jsExt js
Ext js
 
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
 
Speaker Idol Asp .Net Mvc
Speaker Idol   Asp .Net MvcSpeaker Idol   Asp .Net Mvc
Speaker Idol Asp .Net Mvc
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
 
Serverless w Azure, czyli Azure Functions
Serverless w Azure, czyli Azure FunctionsServerless w Azure, czyli Azure Functions
Serverless w Azure, czyli Azure Functions
 
Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?Laravel 8.0 - co nowego?
Laravel 8.0 - co nowego?
 
ASP.NET Core i Angular : Jak zacząć przygodę
ASP.NET Core  i Angular : Jak zacząć przygodę ASP.NET Core  i Angular : Jak zacząć przygodę
ASP.NET Core i Angular : Jak zacząć przygodę
 
Ciągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I NarzędziaCiągła Integracja W Projekcie - Metodyka I Narzędzia
Ciągła Integracja W Projekcie - Metodyka I Narzędzia
 
O Electronie słów kilka
O Electronie słów kilkaO Electronie słów kilka
O Electronie słów kilka
 
zmeny v Java 9
zmeny v Java 9zmeny v Java 9
zmeny v Java 9
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
REvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w RailsachREvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w Railsach
 

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

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 officialskowronkow
 
Wzorce projektowe w Magento
Wzorce projektowe w MagentoWzorce projektowe w Magento
Wzorce projektowe w MagentoDivante
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&testWykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&testJarek Sokolnicki
 
Budowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureBudowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureSages
 
Podstawy Asp.Net Mvc 1.0 W 3600 Sekund
Podstawy Asp.Net Mvc 1.0 W 3600 SekundPodstawy Asp.Net Mvc 1.0 W 3600 Sekund
Podstawy Asp.Net Mvc 1.0 W 3600 Sekundemdzej
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Tomasz Cieplak
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiGrzegorz Bartman
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieArtur Radosz
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 

Ähnlich wie Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC (20)

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Projektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowychProjektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowych
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 official
 
Wzorce projektowe w Magento
Wzorce projektowe w MagentoWzorce projektowe w Magento
Wzorce projektowe w Magento
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&testWykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test
 
WF w zastosowaniach Web
WF w zastosowaniach WebWF w zastosowaniach Web
WF w zastosowaniach Web
 
Budowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureBudowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze Azure
 
Podstawy Asp.Net Mvc 1.0 W 3600 Sekund
Podstawy Asp.Net Mvc 1.0 W 3600 SekundPodstawy Asp.Net Mvc 1.0 W 3600 Sekund
Podstawy Asp.Net Mvc 1.0 W 3600 Sekund
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
university day 1
university day 1university day 1
university day 1
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
 
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław SobieckiPodstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
Podstawy programowania w Drupalu - Drupal idzie na studia - Jarosław Sobiecki
 
Ciągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - WprowadzenieCiągłe Dostarcznie - Wprowadzenie
Ciągłe Dostarcznie - Wprowadzenie
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 

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 ;)
  • 3. 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
  • 4. Wprowadzenie @quick_netWzorce Repository, Unity Of Work w architekturze ASP.NET MVC
  • 5. Architektura ASP.NET MVC @quick_netWzorce Repository, Unity Of Work w architekturze ASP.NET MVC
  • 6. Architektura ASP.NET MVC @quick_netWzorce Repository, Unity Of Work w architekturze ASP.NET MVC Controller View Model
  • 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
  • 10. Architektura ASP.NET MVC @quick_netWzorce Repository, Unity Of Work w architekturze ASP.NET MVC
  • 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
  • 12. Wzorzec Repository @quick_net 1 Wzorce Repository, Unity Of Work w architekturze ASP.NET MVC DO OR DO NOT – THERE IS NO TRY
  • 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
  • 22. Podsumowanie @quick_netWzorce Repository, Unity Of Work w architekturze ASP.NET MVC
  • 23. QUESTION & ANSWERS Piotr Stola Grupa .NET Politechnika Koszalińska 14-12-2016