MVVM pro desktop i web

Podobné dokumenty
CineStar Černý Most Praha

Praktické zkušenosti s Azure DevOps

Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Proč Angular JS framework?

Web Services na SOAP

Architektura. Vedení sesterské dokumentace

RESTful API TAMZ 1. Cvičení 11

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Tvorba informačních systémů

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Část 1 Moderní JavaScript

Historie, současnost a budoucnost ASP.NET

Jak testovat software v praxi

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Ember.js. Jan Kopřiva, Vojtěch Jasný

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

(Enterprise) JavaBeans. Lekce 7

UJO Framework. revoluční architektura beans. verze

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

CZ.1.07/1.5.00/

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Převod LN aplikace do xpages

OMO Patterny pro UI. Základy UI - HTML, DOM, JavaScript, CSS. Single Page Application

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Microsoft Azure Workshop

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Domino 10 nové komponenty a související témata (node.js, ES )

WCF RIA Services. aneb jak na RIA aplikace v Silverlightu

Analýza a Návrh. Analýza

Tvorba informačních systémů

Semináˇr Java X J2EE Semináˇr Java X p.1/23

MVC (Model-View-Controller)

Programátorská příručka

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

Sem vložte zadání Vaší práce.

Studentská tvůrčí a odborná činnost STOČ Petr Čápek

KIV/PIA 2013 Jan Tichava

Úvod do Entity Frameworku

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Michal Krátký, Miroslav Beneš

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Mediareference Vojtěch

Vzdálený přístup k počítačům

3. HODINA. Prohlížeče Druhy prohlížečů Přehled funkcí Bc. Tomáš Otruba, Informatika 7. třída 1

Integrace mobilních zařízení do ICT, provoz tlustých aplikací na mobilních telefonech a tabletech Roman Kapitán, Citrix Systems Czech

E LEARNINGOVÁ WEBOVÁ APLIKACE PRO VÝUKU BIOMEDICÍNSKÉHO INŽENÝRSTVÍ Petr Huňka

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Artlingua Translation API

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko

IS pro podporu BOZP na FIT ČVUT

Vytvořte si vlastní webovou hru

Olga Rudikova 2. ročník APIN

Návod k vygenerování certifikátu PKI-O2CZ-AUTENTIZACE

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Informační systém pro podporu řízení, správu a zjišťování aktuálního stavu rozvrhované výuky

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Workshop Exact Software CEE

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Microsoft ASP.NET 2.0/3.0 (advanced)

Projekt JetConf REST API pro vzdálenou správu

Michal Augustýn Microsoft Most Valuable Professional

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Profesionální služby kolem Linuxu

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Návrhové vzory pro J2EE. Miroslav Beneš

Jak se dělá sociální síť. Část 1- Implementace. Implementace, Startup, Motivace

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Responzivní web. Co je mobilní verze webové stránky?

Formy komunikace s knihovnami

Richtext editory. Filip Dvořák

SIMATIC WinCC Novinky

Kubernetes Azure Service Fabric

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Ing. Jiří Fůsek. Základní informace. Pracovní zkušenosti. Vzdělání. 09/ nyní Freelancer. 09/ /2010 Univerzita Tomáše Bati ve Zlíně

Mobile application developent

Databázové patterny. RNDr. Ondřej Zýka

Architektura aplikace

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Programování v jazyce JavaScript

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

SOAP & REST služby. Rozdíly, architektury, použití

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Transkript:

MVVM pro desktop i web Tomáš Herceg CEO @ RIGANTI Co-founder of Update Conference Microsoft MVP tomas.herceg@riganti.cz @hercegtomas www.tomasherceg.com/blog

MVVM Model View ViewModel { firstname: "Humphrey", abc abc OK } lastname: "Appleby", submit: function () { }

MVVM View definuje uživatelské rozhraní provázání s ViewModelem pomocí data-bindingu ViewModel reprezentuje "stav UI" obsahuje akce, které lze vyvolat z UI jen volají funkce z modelu a zpracují výsledek Model rozhraní mezi prezentační a business vrstvou (fasády, DTO/modely) ideálně nezávislý na ViewModelu a technologii

Výhody MVVM Data-binding šetří spoustu kódu natažení hodnoty z objektu do textboxu vrácení hodnoty z textboxu do objektu naplnění comboboxu položkami Většina aplikace není závislá na prezentační technologii Snadná výměna komponent za jinou bez zásahu do viewmodelu ViewModel se dá snadno testovat Snadné ukládání a načítání stavu (stačí serializovat viewmodel)

Nevýhody MVVM Větší spotřeba paměti u velkých formulářů pokud máme řádově desítky tisíc objektů typicky složitější grafy V C# nepříjemné kvůli implementaci INotifyPropertyChanged V Knockout JS zase kvůli ko.observable() V DotVVM je to v pohodě

DEMO Ugly WPF vs MVVM pattern

Jak používat MVVM správně Gettery a settery nic nedělají (kromě vyvolávání událostí) Nemáte garantované pořadí, v jakém se settery volají Důsledné oddělení dat, hodnot prostředí (číselníky) a stavu UI CustomerAddress Name Street City CountryId Countries IsSaved

Jak používat MVVM správně ViewModel je součást prezentační vrstvy Nepatří do něj business logika Nemají v něm být entity z Entity Frameworku Vždy důsledně mapujte na DTO Pozor na nadbytečné vlastnosti výkon a bezpečnost (na webu) ViewModely nemusí být ploché Každá část view může mít svůj viewmodel Komunikace přes události nebo message bus

Caliburn Micro MVVM framework pro WPF Šetří ještě více kódu Binding by convention (např. podle názvu komponenty) Binding na události (např. double click) Event aggregator, Window manager Screens & Conductors Alternativy: MVVM Light, Prism,

DEMO WPF s MVVM frameworkem

Knockout JS MVVM framework pro HTML Minimalistický a nezávislý nepotřebuje jquery ani jiné knihovny nekoliduje s nimi Relativně slušná dokumentace na to, že to je open source IE 6+, Firefox 2+, Chrome, Opera, Safari, mobilní browsery http://knockoutjs.com/ Open source (MIT license)

DotVVM Open source framework postavený nad Knockout JS https://github.com/riganti/dotvvm Viewmodely se píší v C# Musí být JSON-serializovatelné Framework je přeloží pro potřeby Knockout JS a přenese na klienta

Zajímavé aspekty DotVVM Není třeba INotifyPropertyChanged Změny na klientovi se provádí hned díky Knockout observables Změny na serveru se aplikují po dokončení HTTP requestu Properties musí být public Lze určit směr přenosu dat ServerToClient (ServerToClientFirstRequest ) ClientToServer Both (default)

Zajímavé aspekty DotVVM ViewModel má svůj lifecycle Init Load {command: funkce()} PreRender Na serveru žije jen po dobu HTTP requestu Na klientovi žije dokud je stránka načtená

Zajímavé aspekty DotVVM ViewModely lze snadno vnořovat Stačí dědit z DotvvmViewModelBase Framework volá metody Init, Load a PreRender i na child viewmodelech Komunikaci mezi nimi lze řešit událostmi Pozor, nepřežijí serializaci je nutné je navázat vždy znovu

DEMO MVVM přístup v DotVVM

Q&A Tomáš Herceg CEO @ RIGANTI Co-founder of Update Conference Microsoft MVP, Microsoft RD tomas.herceg@riganti.cz @hercegtomas