Date post: | 28-Nov-2014 |
Category: |
Technology |
Upload: | damir-arh |
View: | 736 times |
Download: | 4 times |
Učinkovita arhitektura modernih aplikacijDamir Arh, Adacta d.o.o.Arhitekt programske opremeMVP – Visual C#@DamirArh, damirscorner.com
• Model-View-ViewModel• ViewModelLocator• IoC Container• Unit testing• Mocking• Razvoj za več platform• Modularnost
Agenda
• Ločitev odgovornosti• Lažje testiranje• Neodvisnost kode od podobe
Cilji uporabe arhitekturnih vzorcev
Model-View-ViewModel
View• XAML• Data binding
ViewModel• Priprava podatkov• Podpora interakciji
Model• Dostop do podatkov
• Poslovna logika
• http://bit.ly/PrismWinRT• http://bit.ly/MvvmLight• http://bit.ly/CaliburnMicro • http://bit.ly/MvvmCross
Osnovno ogrodje aplikacije
Drugačni podatki za designer
View Mode
l
Runtime
model
Designer
model
Dependency injection in view model locator
Dependency Injection
Web Service
View Model
Repository
Dependency Injection
Web Service
View Model
Repository
IRepository
Dependency Injection
Web Service
View Model
Repository
IRepository
Dependency Injection
Web Service
View Model
Repository
IRepositoryIoC Container
IoC Container
• Premik odvisnosti v ločen razred• Abstrakcija prek vmesnika• Zunanje instanciranje odvisnih razredov• Uporaba ogrodja IoC• http://bit.ly/Autofac• http://bit.ly/NinjectPcl• http://bit.ly/UnityIoC
Ključni poudarki
• Testiranje asinhronih metod• Referenca na aplikacijo za Windows Store• Izvajanje testov v peskovniku
• Predloga za Unit Test Library, MSTest• Izvajalniki testov• Visual Studio Test Runner• ReSharper• NCrunch
Testiranje razredov
Testiranje aplikacij za Windows Store
• Slabost prikazanega testa• Vhodne podatke fiksno določa uporabljeni model
• Rešitev?• Implementacija modela z nastavljivimi rezultati funkcij
• Težava?• Dinamično generiranje zbirov ni podprto• http://bit.ly/MoqaLate• http://bit.ly/MoqRT
Mocking
Implementacija testnega modela
• Raznolikost mobilnih platform• Windows 8 / Windows Phone 8• iOS• Android
• .NET in C# prisotna na vseh• Windows Store / Windows Phone 8• Xamarin.iOS• Xamarin.Android
Razvoj za več platform
Portable Class Library
• Skupna poslovna logika vsem platformam• Ista knjižnica uporabna brez ponovnega prevajanja• Enkraten razvoj in enkratno testiranje
• Ločen uporabniški vmesnik• Vsaka platforma ima svoje posebnosti• Podobnost Windows Store in Windows Phone 8• http://bit.ly/MvvmCross
Koristi PCL
• MEF (Manage Extensibility Framework)• Microsoft.Composition
• Izvajanje v peskovniku• Dinamično nalaganje zbirov ni mogoče• Vsi zbiri morajo biti del paketa aplikacije in znani vnaprej
• Statična modularnost• Moduli znani v času prevajanja• MEF : IoC
• Kompozitni uporabniški vmesnik• Event aggregation / Service bus
Modularnost
• Šibka sklopljenost• Izolirane dodelave• Enostavna zamenjava gradnikov• Testiranje posameznih funkcionalnosti
• Podpora več platformam• Skupni storitveni nivo• Skupna poslovna logika na odjemalcih• Skupni view modeli z uporabo MvvmCross
Prednosti dobre arhitekture