21
C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store Damir Arh Adacta d.o.o. @DamirArh [email protected]

C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Embed Size (px)

DESCRIPTION

A presentation about the architecture of WIndows Store applications.

Citation preview

Page 1: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Damir ArhAdacta d.o.o.@DamirArh

[email protected]

Page 2: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

C++ + XAML

Zakaj C# in XAML?

JavaScript + HTML

C#/VB + XAML

Page 3: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Agenda

• Model-View-ViewModel• ViewModelLocator• IoC Container• Unit testing• Mocking• Local caching

Page 4: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Model-View-ViewModel

View• XAML• Data binding

ViewModel• Priprava podatkov• Podpora interakciji

Model• Dostop do podatkov• Poslovna logika

http://bit.ly/MvvmLighthttp://bit.ly/CaliburnMicro

Page 5: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

OSNOVNO

OGRODJE

APLIKACIJE

Demo

Page 6: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Drugačni podatki za designer

View Model

Runtime model

Designer model

Page 7: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

DEPENDENCY INJECTION

IN

VIEW MODEL LOCATOR

Demo

Page 8: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Managed Extensibility Framework

[Export]Model1 : IModel

[Export]Model2 : IModel

[Export]Model3 : IModel

CompositionHost

[Import]ExportFactory<IModel>

[Import]IModel

http://bit.ly/MefPortable

Page 9: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

MEF KOT

IOC CONTAINER

Demo

Page 10: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Testiranje razredov

• Testiranje asinhronih metod• Referenca na aplikacijo za Windows Store• Izvajanje testov v peskovniku

• Predloga za Unit Test Library• MSTest• Visual Studio Test Runner

Page 11: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

TESTIRANJE ASINHRONIH METOD

V APLIKACIJAH ZA WINDOWS STORE

Demo

Page 12: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Mocking

• Slabost prikazanega testa?– Vhodne podatke fiksno določa uporabljeni model

• Rešitev?– Implementacija modela z nastavljivim naborom

vhodnih podatkov

http://bit.ly/MoqRT

Page 13: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

MODEL Z

DINAMIČNO NASTAVLJIVIMI

IMPLEMENTACIJAMI METOD

Demo

Page 14: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Lokalno shranjevanje podatkov

• Razred Windows.Storage.ApplicationData– Nastavitve• LocalSettings• RemoteSettings

– Datoteke• LocalFolder• RemoteFolder• TemporaryFolder

Page 15: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Knjižnice za lokalno predpomnjenje

• SQLite– http://bit.ly/SQLiteExtension – http://bit.ly/SQLiteNet

• Q42.WinRT– http://bit.ly/Q42WinRT

Page 16: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

LOKALNO SHRANJEVANJE

STRUKTURIRANIH PODATKOV

Demo

Page 17: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

LOKALNO PREDPOMNJENJE SLIK

Demo

Page 18: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Končni rezultat

• Šibko sklopljena arhitektura– Izolirane dodelave– Enostavne menjave gradnikov– Testiranje funkcionalnosti

• Preostali izzivi– Navigacija med stranmi– „Modalna“ pogovorna okna– Življenjski cikel aplikacije

Page 20: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

VAŠA

VPRAŠANJA

?

Page 21: C#, XAML in MVVM: Orodja pri razvoju aplikacij za Windows Store

Apache Hadoop v Windows Azure

Hvala za udeležbo in prosim izpolnite ankete.