Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00373 005780 11248822 na godz. na dobę w sumie
Budowanie aplikacji biznesowych za pomocą Windows Presentation Foundation i wzorca Model View ViewM - ebook/pdf
Budowanie aplikacji biznesowych za pomocą Windows Presentation Foundation i wzorca Model View ViewM - ebook/pdf
Autor: Liczba stron:
Wydawca: Promise Język publikacji: polski
ISBN: 978-83-7541-226-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie
Porównaj ceny (książka, ebook, audiobook).

Twórz bogate, elastyczne i łatwe w utrzymaniu aplikacje biznesowe przy pomocy wzorca projektowego MVVM
Projektuj aplikacje biznesowe w prostszy i lepszy sposób stosując wzorzec MVVM dla Windows Presentation Foundation (WPF) i Microsoft Silverlight 4. Dzięki temu przewodnikowi wykorzystasz MVVM do wiązania danych, poleceń i zachowań tworząc interfejsy użytkownika luźno powiązane z logiką biznesową. MVVM idealnie nadaje się dla programistów .NET pracujących z WPF i Silverlight – niezależnie od posiadanego doświadczenia w budowaniu aplikacji korporacyjnych.
Odkryj, jak:
•Zagłębić się w tajniki wzorca MVVM – i dowiedzieć się, czym różni się on od innych wzorców projektowych interfejsu użytkownika
•Zbudować prostą aplikację do zarządzania relacjami z klientami, którą można adaptować do swoich własnych projektów
•Implementować MVVM w celu utrzymywania podziału pomiędzy deklaratywną składnią interfejsu użytkownika a kodem logiki prezentacyjnej
•Tworzyć model domenowy definiujący kontekst biznesowy aplikacji
•Pisać dynamiczny kod dla warstwy dostępu do danych przy pomocy Microsoft Entity Framework i NHibernate
•Wymuszać złożone scenariusze sprawdzania poprawności danych przy użyciu Windows Workflow Foundation 4
•Implementować MVVM przy użyciu platform i zestawów narzędzi, takich jak Microsoft Prism

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Budowanie aplikacji biznesowych przy użyciu Windows® Presentation Foundation i wzorca MVVM Raffaele Garofalo Przekład: Jakub Niedźwiedź APN Promise Warszawa 2011 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Budowanie aplikacji biznesowych przy użyciu Windows® Presentation Foundation i wzorca MVVM © 2011 APN PROMISE SA Authorized Polish translation of English edition of Building Enterprise Applications with Windows® Presentation Foundation and the Model View ViewModel Pattern ISBN: 978-0-735-65092-3 Copyright © 2011 Raffaele Garofalo. All rights reserved This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. APN PROMISE SA, ul. Kryniczna 2, 03-934 Warszawa tel. +48 22 35 51 600, fax +48 22 35 51 699 e-mail: mspress@promise.pl Microsoft, Windows, Windows Server, Windows Vista, Visual C#, SQL Server, Active Directory, IntelliSense, Silverlight, MSDN, Internet Explorer i Visual Studio to znaki towarowe grupy Microsoft. Wszystkie inne znaki towarowe są własnością ich odnośnych właścicieli. Książka ta przedstawia poglądy i opinie autora. Informacje i widoki przedstawione w tym dokumencie, w tym adresy URL i inne odniesienia do witryn internetowych, mogą być zmieniane bez powiadomienia. Państwo sami ponoszą ryzyko związane z ich wykorzystywaniem. Niektóre przykłady zamieszczone w książce są fi kcyjne i są jedynie ilustracją omawianej tematyki. Żadne podobieństwa czy powiązania nie były zamierzone i nie należy też wyciągać wniosków o istnieniu takich związków. Niniejszy dokument nie zapewnia żadnych praw do żadnej własności intelektualnej w żadnym produkcie fi rmy Microsoft. Mogą Państwo kopiować i wykorzystywać ten dokument jedynie dla własnych potrzeb. APN PROMISE SA dołożyła wszelkich starań, aby zapewnić najwyższą jakość tej publikacji. Jednakże nikomu nie udziela się rękojmi ani gwarancji. APN PROMISE SA nie jest w żadnym wypadku odpowiedzialna za jakiekolwiek szkody będące następstwem korzystania z informacji zawartych w niniejszej publikacji, nawet jeśli APN PROMISE została powiadomiona o możliwości wystąpienia szkód. ISBN: 978-83-7541-078-5 Przekład: Jakub Niedźwiedź Redakcja: Marek Włodarz Korekta: Ewa Swędrowska Skład i łamanie: MAWart Marek Włodarz ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Spis treści Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Podziękowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Errata i wsparcie dla tej książki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Rozdział 1 Wprowadzenie do aplikacji biznesowych i wzorca Model View ViewModel . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Wzorzec Model View ViewModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Aplikacje biznesowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Wybór odpowiedniej technologii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Silverlight czy WPF? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Narzędzia firmy Microsoft do budowania interfejsu użytkownika . . . . . . . . . . . 6 Budowanie interfejsu użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Pasek menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Pasek narzędzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Etykietki narzędzi (i ich nadużywanie) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Powiadomienia i alarmy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Pasek wstążki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Ogólne rozważania dotyczące stylów kontrolek . . . . . . . . . . . . . . . . . . . . . . . . . 18 Podział interesów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Warstwy, poziomy i usługi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Rozdział 2 Wzorce projektowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Przegląd wzorców projektowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Klasyfikowanie wzorców projektowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Wzorce projektowe interfejsu użytkownika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Wzorzec MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Wzorzec MVP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Wzorzec PM i MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== iii Zaawansowane wzorce i techniki projektowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Wzorzec odwrócenia sterowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Języki DSL: pisanie płynnego kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Wprowadzenie do TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Rozdział 3 Model domenowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 Wprowadzenie do projektowania sterowanego domeną . . . . . . . . . . . . . . . . . . . . 65 Terminologia DDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Analizowanie domeny aplikacji CRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Jednostka domenowa i obiekt transferu danych . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Obiekt POCO i O/RM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Podejścia do projektowania domeny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Skrypt transakcyjny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Podejście sterowane bazą danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Podejście sterowane domeną . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Jak utworzyć obiekt w DDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Wzorce fabryki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Sprawdzanie poprawności jednostek domenowych . . . . . . . . . . . . . . . . . . . . . . . . 79 Klasyczne sprawdzanie poprawności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Sprawdzanie poprawności z wykorzystaniem atrybutów i adnotacji danych 82 Dostępne platformy sprawdzania poprawności danych . . . . . . . . . . . . . . . . . . 84 Testy jednostkowe modelu domenowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Kod przykładowy: model domenowy CRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Kontekst osoby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Domena Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Rozdział 4 Warstwa dostępu do danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Baza danych i procedury składowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Wybór systemu O/RM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Microsoft Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 NHibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Inne narzędzia O/RM dla .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Jednostka pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Cykl życia jednostki pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 iv ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Identyfikowanie transakcji biznesowej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Wzorzec repozytorium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Programowanie sterowane testami: warstwa danych . . . . . . . . . . . . . . . . . . . . . . 111 Budowanie rozproszonej warstwy danych przy pomocy RIA i WCF . . . . . . . . . . 114 Kod przykładowy: warstwa dostępu do danych aplikacji CRM . . . . . . . . . . . . . . 117 Elastyczny interfejs IUnitOfWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Mapowanie modelu domenowego przy użyciu Entity Framework . . . . . . . . 119 Mapowanie domeny przy użyciu NHibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Zebranie narzędzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 UnitOfWork i ISession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Rozdział 5 Warstwa biznesowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Reguła biznesowa nie jest regułą sprawdzania poprawności . . . . . . . . . . . . . . . . 130 Reguły biznesowe w usłudze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Wzorzec fasady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Reguły biznesowe w przepływie zadań przy użyciu WF 4.0 . . . . . . . . . . . . . . . . . 135 Różne sposoby wykonywania przepływu zadań . . . . . . . . . . . . . . . . . . . . . . . . 137 Zestawy narzędziowe firm trzecich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Technologie służące do sprawdzania poprawności danych . . . . . . . . . . . . . . 140 Silnik reguł i silnik reguł biznesowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Względy związane z warstwą biznesową . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Kiedy musimy tworzyć warstwę biznesową? . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Złe nawyki związane z warstwą BLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Kod przykładowy: Warstwa usługi biznesowej . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Sprawdzanie poprawności danych przy pomocy Enterprise Library 5.0 . . . . 145 Ogólny silnik przepływów zadań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Usługa dla transakcji biznesowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Rozdział 6 Warstwa interfejsu użytkownika w MVVM . . . . . . . . . . . . . . . . . . . .155 Wprowadzenie do wzorca MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Widok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Blend: atrapa modelu widoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Polecenie w WPF i Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== v Obejście problemu: MVVM Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Ponowne ocenianie możliwości wykonywania ICommand . . . . . . . . . . . . . . .167 Model widoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Interfejs INotifyPropertyChanged . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Interfejs IDataErrorInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 Szablon DataTemplate w WPF i Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 DataTemplate a MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Zdarzenia WeakEvent i komunikaty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Wzorzec WeakEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 Wzorzec EventAggregator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 Okna dialogowe i modalne okna wyskakujące . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Modalny widok w MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Odwrócenie sterowania w MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Kod przykładowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Microsoft Office Ribbon a MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Rozdział 7 Platformy i zestawy narzędzi MVVM . . . . . . . . . . . . . . . . . . . . . . . . .185 Zestawy narzędzi dla MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Zestaw narzędzi MVVM Light Toolkit autorstwa Laurenta Bugniona . . . . . . 186 MEFedMVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Cinch autorstwa Sachy Barbera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Inne narzędzia dla MVVM i XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Narzędzia Karla Shiffletta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Radical autorstwa Maura Servientiego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Platformy dla złożonych interfejsów użytkownika . . . . . . . . . . . . . . . . . . . . . . . . . 192 Microsoft Prism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Caliburn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 O autorze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 vi ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Wstęp Windows Presentation Framework (WPF), Silverlight i Windows Phone 7 są najnow- szymi technologiami budowania elastycznych interfejsów użytkownika (UI) dla apli- kacji tworzonych przy użyciu narzędzi fi rmy Microsoft. Wszystkie te trzy technologie opierają się na języku znaczników XAML przy opisywaniu elementów i układu interfej- su użytkownika, a aplikacje dla wszystkich tych trzech platform można programować przy użyciu najczęściej stosowanych języków Microsoft .NET Framework: Visual C# lub Visual Basic .NET. Będąc programistą .NET planującym stworzenie nowej apli- kacji biznesowej przy użyciu .NET Framework warto rozważyć zastosowanie którejś z tych technologii do utworzenia interfejsu użytkownika. Planując zbudowanie apli- kacji w oparciu o jedną z tych technologii warto też poważnie rozważyć nauczenie się i zastosowanie wzorca prezentacyjnego Model View ViewModel (MVVM), który jest wzorcem projektowym stworzonym specjalnie dla tych technologii. Tego właśnie dotyczy niniejsza książka. Można by się zastanawiać, po co kolejna książka dotycząca WPF? Po zapoznaniu się ze spisem treści można by z kolei pomy- śleć, po co kolejna książka na temat wzorców projektowych? Aby odpowiedzieć na te pytania, zacznę od stwierdzenia, że od dawna zauważyłem, iż programiści nie szukają „Biblii wzorców” ani „Biblii opisującej tworzenie układu aplikacji”, chcieliby natomiast mieć dostęp do prostej książki prowadzącej ich przez etapy opracowywania rzeczywistej, ale prostej aplikacji, która stosuje i wyjaśnia wzor- ce – a jednocześnie może być ponownie wykorzystana w przyszłych projektach jako „szablon” dla kolejnych aplikacji. WPF i Silverlight są młodymi technologiami i procentowy udział programistów przechodzących na te nowe sposoby projektowania interfejsu użytkownika jest nadal niewielki. Jest kilka powodów takiego stanu rzeczy. Po pierwsze, krzywa uczenia się jest dosyć stroma. Jeśli ktoś przyzwyczaił się do technologii Windows Forms, Java Swing lub Delphi, to sposób projektowania i organizowania struktury aplikacji przy użyciu XAML i WPF jest znacząco różny – w istocie nazwałbym go „rewolucyjnym”. W przeszłości korzystałem z dobrze znanych wzorców do budowania aplikacji, w tym z wzorca Model View Presenter w przypadku aplikacji Windows Forms oraz wzorca Model View Controller w przypadku aplikacji ASP.NET. Jednak w przypad- ku WPF te dwa podejścia są przestarzałe, ponieważ nie mogą korzystać z wydaj- nych mechanizmów zapewnianych przez XAML. Oczywiście nadal można korzystać z mechanizmów wiązania w WPF stosując wzorzec Model View Presenter, ale kosztem zbyt dużego wysiłku. Na szczęście wzorzec MVVM zapewnia dobrą alternatywę. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== vii Firma Microsoft we współpracy z kilkoma architektami przetworzyła pierwotny model prezentacyjny, który wiele lat temu zaproponował Martin Fowler. Ta wersja (nazwana wzorcem Model View ViewModel) jest idealnym podejściem w przypadku WPF i Silverlight, ponieważ została zaprojektowana specjalnie dla tych technologii! Niestety podobnie jak XAML, MVVM jest dosyć nową technologią, więc obecnie nie ma zbyt wielu informacji na temat jej implementowania. Jest kilku blogerów stosują- cych podejście MVVM i piszących na ten temat; są też osoby związane z budowaniem narzędzi przeznaczonych dla MVVM. Niemal wszystko jest nadal w fazie eksperymen- tów i istnieje niewiele naprawdę konkretnych przykładów. Stąd wziął się pomysł na książkę dotyczącą budowania aplikacji biznesowej przy użyciu MVVM. W miarę czytania tej książki zobaczymy przykłady, które pokażą, jak zbudować prosty program do obsługi relacji z klientami (CRM) przy pomocy WPF 4, Silverlight 4 i wzorca MVVM. Ta książka będzie przewodnikiem przez cały proces architektoniczny ilustrując odpowiednie podejście do zastosowania MVVM. Skorzy- stamy też z kilku innych nowych technologii dostarczanych przez platformę Microsoft .NET 4, takich jak Managed Extensions, Windows Workfl ow Foundation 4 i oczywi- ście Entity Framework. Najpierw pokażemy narzędzia. Następnie przejdziemy do budowania aplikacji CRM zaczynając od modelu domenowego, stosując prostą technikę zachowywania danych w relacyjnej bazie danych przy pomocy dwóch najpopularniejszych systemów Object- -Relational Mapper (O/RM) dostępnych dla .NET: Entity Framework i NHibernate. Następnie zobaczymy, jak dodać większą elastyczność przy pomocy platformy MEF. Wreszcie nauczymy się stosować w tym modelu logikę biznesową i sprawdzanie poprawności danych w sposób spełniający wymagania wzorca MVVM. W tej fazie przyjrzymy się też Windows Workfl ow Foundation (WF) 4.0, stworzonemu przez Microsoft wydajnemu, nowemu silnikowi przepływów zadań oraz zbadamy kroki wymagane do zbudowania prostego silnika przepływów zadań. Pozostałe rozdziały skupiają się na MVVM. Istnieją cztery główne pojęcia, które trze- ba poznać, aby prawidłowo korzystać z MVVM: polecenia, szablon, silnik wiązań, oraz orkiestracja wszystkiego razem. Podczas tego procesu odwiedzimy wszystkie warstwy wymagane do ukończenia klasycznej aplikacji biznesowej, a co ważniejsze, będziemy w stanie ponownie wykorzystać opisane tu części jako szablony do budowania przy- szłych aplikacji. Istnieją oczywiście pewne różnice pomiędzy WPF a Silverlight, więc niniejsza książka spróbuje omówić je w miarę możliwości. Na koniec krótko przyjrzymy się dostępnym zestawom narzędzi MVVM, takim jak PRISM, który jest złożoną platformą aplikacyjną dla WPF i Silverlight. Pomoże nam to w określeniu, kiedy i jak powinniśmy korzystać z każdego z nich podczas procesu budowania niewielkiej i elastycznej platformy MVVM. Kluczowym celem tej książki jest zapewnienie pełnego przewodnika opisującego krok po kroku korzystanie z WPF/Silverlight w połączeniu z MVVM przy tworzeniu ogólnego kodu, który będzie można ponownie wykorzystać w przyszłości. viii Wstęp ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Budowanie aplikacji biznesowych przy pomocy Windows Presentation Foundation i wzor- ca Model View ViewModel zapewnia nie tylko solidną analizę sposobu działania wzorca MVVM i jego zastosowania w połączeniu z WPF i Silverlight, ale także oferuje wyczer- pujący przewodnik po budowaniu warstwowych aplikacji przy użyciu najczęściej sto- sowanych technik. Książka ta celowo nie pokazuje całego kodu związanego z danym projektem; skupia się natomiast bardziej na zasadach i wzorcach, które programiści powinni stosować przy tworzeniu dobrze zorganizowanych i łatwych w utrzymaniu aplikacji biznesowych. Ta książka analizuje każdą warstwę składającą się na aplikację biznesową począw- szy od modelu domenowego (znanego też jako warstwa biznesowa), poprzez warstwę danych (omawiając przy tym Entity Framework i NHibernate), a kończąc rozdziałem poświęconym regułom biznesowym i Windows Workfl ow Foundation. Oczywiście pojawi się też rozdział poświęcony wzorcowi MVVM. Oprócz wzorców i praktyk wyjaśnionych w tej książce, rozdział 7 zawiera przydat- ną listę platform i wtyczek z otwartym kodem źródłowym stosowanych przez innych członków społeczności .NET do budowania aplikacji implementujących wzorzec MVVM w technologiach WPF lub Silverlight. Kto powinien przeczytać tę książkę Ta książka jest przeznaczona dla każdego programisty lub architekta oprogramowania .NET, który chce nauczyć się, jak budować aplikacje biznesowe korzystając z dobrze znanych biznesowych wzorców architektonicznych, w tym wzorca MVVM. Czytelnicy powinni mieć już solidnie opanowane podstawowe zagadnienia związane z programo- waniem, znać ogólny cel i zastosowanie wzorców, a także oczywiście znać technologie WPF, Silverlight lub Windows Phone 7. Choć książka ta porusza wszystkie te zagad- nienia, to nie próbuje nauczyć podstaw programowania lub zasad stosowania wzor- ców. Jest natomiast przeznaczona dla programistów i architektów, którzy budowali już aplikacje .NET i chcą zająć się projektowaniem i budowaniem biznesowych aplikacji przy pomocy .NET. W szczególności książka ta przeznaczona jest dla programistów WPF lub Silver- light, którzy mają już doświadczenie w jednej lub obu tych technologiach, ale którzy nie wiedzą jeszcze, jak implementować wzorzec MVVM – albo dla programistów, któ- rzy w jakimś stopniu zaznajomili się już z MVVM i chcą opanować techniki efektyw- nego zastosowania wzorca MVVM. W tym celu trzeba mieć pewną podstawową wiedzę na temat WPF i Silverlight; jeśli jej komuś brakuje, to przed przeczytaniem tej książki zalecam zapoznanie się z tematami poleceń wytyczanych, wiązania danych i stylów. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== ix Założenia Koncentrując się na wzorcach projektowych, architekturach oprogramowania oraz zwinnych technikach i metodologiach programowania (agile) książka ta zakłada u czy- telnika podstawowe umiejętności tworzenia aplikacji WPF lub Silverlight przy pomocy .NET Framework i Visual Studio. Ponadto zakłada, że czytelnik tworzył już aplikacje łączące się z bazą danych i posiadające interaktywny interfejs użytkownika. Cały kod przykładowy zapewniony w tej książce został utworzony przy pomocy języka Visual C# dostępnego w .NET Framework 4. Trzeba dobrze rozumieć język C#, aby śledzić i wykorzystywać ten kod. Książka szeroko wykorzystuje zarówno WPF, jak i Silverlight, więc należy mieć co najmniej podstawową wiedzę na temat tych dwóch technologii (a także solidne podstawy języka znaczników XAML – książka ta wyko- rzystuje w przykładach kod XAML). Organizacja tej książki Ta książka została opracowana w taki sposób, że każdy rozdział skupia się na określo- nym zagadnieniu. Pierwszy rozdział „Wprowadzenie do aplikacji biznesowych i wzor- ca Model View ViewModel” jest ogólnym wprowadzeniem do aplikacji biznesowych, ich składników i ich struktury. Rozdział 2 „Wzorce projektowe” pokazuje pełny prze- gląd wszystkich dobrze znanych wzorców projektowych i wzorców architektonicznych używanych do programowania aplikacji biznesowych, a zwłaszcza do projektowania luźno powiązanych składników. Rozdział 3 „Model domenowy” jest wprowadzeniem do modelu domenowego i projektowania sterowanego domeną (DDD – Domain-Dri- ven Design). Ilustruje, jak osiągać cele projektowe DDD i jak unikać powszechnych błędów, które zwykle występują przy budowaniu aplikacji DDD. Rozdział 4 „Warstwa dostępu do danych” koncentruje się na warstwie dostępu do danych (DAL – Data Access Layer) i sposobach jej budowania przy użyciu systemu O/RM, takiego jak Entity Framework i/lub NHibernate. Rozdział 5 „Warstwa biznesowa” skupia swoją uwagę na projektowaniu i budowie warstwy logiki biznesowej (BLL – Business Logic Layer) w tym dogłębnie omawia reguły biznesowe, silniki reguł biznesowych i projektowanie architektury zorientowanej na usługi (SOA – Service-Oriented Architecture). Wreszcie rozdział 6, „Warstwa interfejsu użytkownika w MVVM” omawia dogłębnie MVVM, natomiast rozdział 7 „Platformy i zestawy narzędzi MVVM” wymienia dostępne platfor- my programowe i narzędzia, które mogą być przydatne podczas budowania aplikacji biznesowych przy pomocy MVVM. Od czego najlepiej zacząć czytanie tej książki Rozdziały tej książki omawiają różne aspekty budowania aplikacji biznesowej. Poza pierwszymi dwoma rozdziałami, które stanowią ogólny przegląd technik używanych w tej książce, każdy rozdział skupia się na określonej warstwie aplikacji biznesowej. x Wstęp ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Poniższa tabela może pomóc w ustaleniu, gdzie najlepiej sięgnąć, jeśli ktoś planuje skupić się tylko na określonej warstwie. Jeśli ktoś Jest nowicjuszem w programowaniu aplikacji biznesowych i aplikacji wielowarstwowych Jest zaznajomiony z wzorcami projektowymi i architekturami oprogramowania, ale ich jeszcze dobrze nie opanował Jest zainteresowany jedynie określoną warstwą, taką jak DAL lub BLL Jest zainteresowany jedynie wzorcem MVVM To powinien: Przeczytać całą książkę i poeksperymentować z rozwiązaniami użytymi jako przykłady w każdym rozdziale. Przejrzeć rozdziały 1 i 2, aby przypomnieć sobie podstawowe pojęcia. Następnie uważnie przeczytać pozostałe rozdziały stosując zasady napotkane w każdym rozdziale w swoich codziennych zadaniach. Uważnie przeczytać określony rozdział, który omawia daną warstwę będącą przedmiotem zainteresowania. Aby jednak ustalić kontekst, należy też przejrzeć pozostałe rozdziały. Przeczytać rozdziały 1 i 2, aby utrwalić wiedzę na temat wzorców projektowych i wzorców prezentacyjnych, a następnie uważnie przeczytać rozdziały 6 i 7. Konwencje i zasady w tej książce Ta książka przedstawia informacje korzystając z konwencji zaprojektowanych tak, aby informacje te były czytelne i łatwe w odbiorze. W większości przypadków książka ta zawiera osobne ćwiczenia dla programistów Visual Basic i programistów Visual C#. Można pominąć ćwiczenia, które nie dotyczą wybranego języka. Elementy w ramkach z etykietami, takimi jak „Uwaga”, zapewniają dodatkowe informacje lub alternatywne metody wykonania danego kroku. Tekst, który należy wpisać (oprócz bloków kodu), wyróżniony jest pogrubieniem. Znak plus (+) pomiędzy nazwami dwóch klawiszy oznacza, że trzeba nacisnąć te klawisze jednocześnie. Na przykład „Alt+Tab” oznacza, że trzeba przytrzymać wciśnięty klawisz Alt podczas naciskania klawisza Tab. Pionowa kreska pomiędzy dwoma lub więcej elementami menu (na przykład File | Close) oznacza, że należy wybrać pierwsze menu lub element menu, potem następ- ne, i tak dalej. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xi ■ ■ ■ ■ Wymagania systemowe Do pracy z kodem i przykładami z tej książki potrzebny będzie następujący sprzęt i oprogramowanie: Dowolny z następujących systemów operacyjnych: Windows XP z Service Pack 3 (oprócz Starter Edition), Windows Vista z Service Pack 2 (oprócz Starter Edition), Windows 7, Windows Server 2003 z Service Pack 2, Windows Server 2003 R2, Windows Server 2008 z Service Pack 2 lub Windows Server 2008 R2. Visual Studio 2010, dowolne wydanie (kilka dodatkowych elementów do pobrania osobno może być wymaganych w przypadku korzystania z produktów Express Edition). SQL Server 2008 Express Edition lub wyższa wersja (wydanie 2008 lub R2) z narzę- dziem SQL Server Management Studio 2008 Express lub wyższą wersją (zawarte w Visual Studio, wydania Express Edition wymagają oddzielnego pobrania). Procesor o prędkości 1,6 GHz lub większej (zalecane 2 GHz). 1 GB (system 32-bitowy) lub 2 GB (system 64-bitowy) pamięci RAM (należy dodać 512 MB w przypadku uruchamiania w maszynie wirtualnej lub w przypadku wydań SQL Server Express Edition; więcej w przypadku bardziej zaawansowanych wydań SQL Server). 3,5 GB dostępnego miejsca na dysku twardym. Napęd dysku twardego o prędkości 5400 RPM. Karta grafi ki zgodna z DirectX 9 działająca z rozdzielczością ekranu 1024 × 768 lub wyższą. Napęd DVD-ROM (w przypadku instalowania Visual Studio z płyty DVD). Połączenie internetowe do pobierania oprogramowania lub przykładów kodu. W zależności od konfi guracji Windows, konieczne mogą być uprawnienia administra- tora lokalnego do zainstalowania lub skonfi gurowania produktów Visual Studio 2010 i SQL Server 2008. Przykłady kodu Większość rozdziałów w tej książce zawiera ćwiczenia, które pozwalają w interaktywny sposób wypróbować nowy materiał poznany w głównym tekście. Wszystkie projekty przykładowe w postaci przed wykonaniem i po wykonaniu ćwiczenia są dostępne do pobrania ze strony tej książki na witrynie wydawnictwa O’Reilly Media: http://oreilly.com/catalog/9780735650923/ Wystarczy kliknąć łącze Examples na tej stronie. Gdy pojawi się lista plików, należy zlokalizować i pobrać plik MvvmCrm.zip. xii Wstęp ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ UWAGA Aby skorzystać z przykładów kodu, w swoim systemie trzeba mieć zainsta- lowane programy Visual Studio 2010 i SQL Server 2008. Poniższe instrukcje wykorzy- stują SQL Server Management Studio 2008 do skonfigurowania przykładowej bazy danych używanej w przykładowych ćwiczeniach. Należy zainstalować najnowsze pa- kiety serwisowe dla każdego produktu, jeśli są dostępne. Instalowanie przykładów kodu Aby zainstalować przykłady kodu na swoim komputerze, należy: 1. Rozpakować plik MvvmCrm.zip pobrany ze strony http://oreilly.com/ catalog/9780735650923/. 2. Przejrzeć wyświetlaną umowę licencyjną dla użytkownika końcowego. Zaakcepto- wać warunki umowy, a następnie kliknąć Next. UWAGA z poziomu tej samej strony WWW, z której pobrano plik MvvmCrm.zip. Jeśli umowa licencyjna się nie pojawi, to  można uzyskać do niej dostęp Korzystanie z przykładów kodu Struktura rozwiązania Visual Studio dostarczanego z tą książką jest podzielona na sześć różnych projektów, w których każdy projekt składa się z pełnego kodu źródło- wego dla związanego z nim rozdziału w książce. Cała aplikacja stanowi program CRM opracowany w WPF. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xiii Podziękowania Gdy ktoś jest jedynym autorem książki, to jest trwale związany z tym, co daje ona innym; w istocie jest to jeden z powodów, dla których wiele osób chce napisać książkę. Ale nawet wyłączny autor nie jest jedyną osobą odpowiedzialną za powstanie książki. Chciałbym podziękować wszystkim osobom, które pomogły mi w napisaniu i wydaniu tej książki, ponieważ bez nich pozostałaby ona jedynie pomysłem. To moja pierwsza książka. Pisanie jej było dla mnie wspaniałą przygodą i mam nadzieję, że jest to początek czegoś nowego, do czego czuję się naturalnie predyspono- wany. Nie byłbym w stanie napisać tej książki bez ogromnej pomocy mojej wspaniałej żony Deborah. Pisanie książki wymaga czasu, a pracuję na pełny etat w fi rmie ubez- pieczeniowej, więc kilka wolnych godzin spośród dni spędzonych na pisaniu książ- ki i wyszukiwaniu dokumentacji (co zajęło pełne sześć miesięcy) zostało zabranych z naszego wspólnego czasu. Bez tak wspaniałej i wyrozumiałej żony prawdopodobnie nie byłbym w stanie poświęcić tego czasu. Wiele razy, gdy byłem bliski zrezygnowania z ukończenia tej książki – ze względu na skomplikowanie i ogrom informacji – sta- nowczo nakłaniała mnie do ukończenia tej pracy, jak doskonały menedżer projektu! Dziękuję, Debbie! Chciałbym też podziękować Russellowi Jones’owi, mojemu redaktorowi i głównej osobie z wydawnictwa kontaktującej się ze mną w sprawie tej książki. Jest on jedy- ną osobą, która wierzyła we mnie od początku i zaangażowała się w przekonanie Microsoft Press do tego projektu. Zawsze będę mu za to wdzięczny. Pomógł mi też w ukończeniu tej pracy na czas i organizował cały projekt. Na koniec chcę podziękować Davidowi Hillowi, który jest recenzentem technicz- nym tej książki i moim mentorem. David jest pracownikiem w zespole patterns practices w fi rmie Microsoft. Jego nieocenione uwagi podczas pisania tej książki pomo- gły mi znacznie poprawić moje ogólne pojęcie na temat wzorców prezentacyjnych oraz poprawnie skonstruować architekturę aplikacji biznesowej. David jest elastyczny i skromny. Mam niezwykłe szczęście, że miałem okazję z nim pracować i mam nadzieję na kolejną współpracę w przyszłości. Dziękuję Wam wszystkim! xiv ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Errata i wsparcie dla tej książki Podjęliśmy wszelkie starania w celu zapewnienia poprawności tej książki i dołączonej do niej zawartości. Jeśli ktoś znajdzie błąd, prosimy o zgłoszenie go na naszej witrynie Microsoft Press w serwisie oreilly.com: 1. Przejdź do http://microsoftpress.oreilly.com. 2. W polu Search wpisz numer ISBN lub tytuł książki. 3. Wybierz książkę z wyników wyszukiwania. 4. Na stronie katalogowej książki, pod rysunkiem okładki pojawi się lista łączy. 5. Kliknij View/Submit Errata. Dodatkowe informacje i usługi związane z książką można znaleźć na jej stronie katalo- gowej. Jeśli potrzebne jest dodatkowe wsparcie, wystarczy wysłać e-maila do Microsoft Press Book Support pod adres mspinput@microsoft.com. Należy zwrócić uwagę, że wsparcie techniczne dla produktów nie jest oferowane pod powyższymi adresami. Chcemy poznać opinie Czytelników W wydawnictwie Microsoft Press zadowolenie Czytelnika jest naszym głównym prio- rytetem, a informacja zwrotna jest cennym zasobem. Swoje opinie na temat tej książki można zostawiać pod adresem: http://www.microsoft.com/learning/booksurvey Ankieta jest krótka i przeczytamy każdy zgłoszony komentarz i pomysł. Z góry dzię- kujemy za wszelkie uwagi! Kontakt Możemy pozostać w kontakcie! Jesteśmy dostępni w serwisie Twitter pod adresem http://twitter.com/MicrosoftPress. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== xv ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== ROZDZIAŁ 1 Wprowadzenie do aplikacji biznesowych i wzorca Model View ViewModel Po zakończeniu tego rozdziału będziemy w stanie: Zidentyfikować aplikację biznesową. Wybrać odpowiednią technologię do utworzenia aplikacji biznesowej. Wzorzec Model View ViewModel Wzorzec Model View ViewModel (MVVM) został przedstawiony przez Johna Gossma- na (architekta oprogramowania w fi rmie Microsoft w dziedzinie technologii Windows Presentation Foundation i Silverlight) na jego blogu w 2005 roku. MVVM jest wyspe- cjalizowaną odmianą wzorca Presentation Model (PM), który został przedstawiony w roku 2004 przez Martina Fowlera. Jednym z głównych celów wzorca PM jest oddzielenie abstrakcyjnego widoku (View) – widocznego interfejsu użytkownika – od logiki prezentacyjnej, aby łatwiej było testować interfejs użytkownika. Dodatkowymi celami może być umożliwienie ponownego wykorzystywania logiki prezentacyjnej w różnych interfejsach użytkowni- ka i różnych technologiach interfejsów użytkownika, co jest ograniczane przez powią- zania pomiędzy interfejsem użytkownika a innym kodem oraz pozwala projektantom interfejsów użytkownika na pracę w bardziej niezależny sposób. MVVM jest wyspe- cjalizowaną interpretacją wzorca PM zaprojektowaną pod kątem wymagań Windows Presentation Foundation (WPF) i Silverlight. Strukturalnie aplikacja MVVM składa się przede wszystkim z trzech głównych składników: modelu (Model), widoku (View) i modelu widoku (ViewModel). Model jest elementem, który reprezentuje jakieś pojęcie biznesowe; może to być cokolwiek od prostego przedstawienia klienta do skomplikowanego opisu handlu na giełdzie. Widok jest grafi czną kontrolką lub zbiorem kontrolek odpowiedzialnych za przed- stawienie danych modelu na ekranie. Widok może być oknem WPF, stroną Silver- light lub po prostu kontrolką szablonu danych w XAML. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== 1 ■ ■ ■ ■ Model widoku odpowiada za „magię” działającą w tle. Model widoku zawiera logi- kę interfejsu użytkownika, polecenia, zdarzenia i odwołania do modelu. W MVVM model widoku nie odpowiada za aktualizowanie danych wyświetlanych w inter- fejsie użytkownika – dzięki świetnemu silnikowi wiązania danych zapewnianemu przez WPF i Silverlight model widoku nie musi tego robić. Dzieje się tak dlatego, że widok obserwuje model widoku, więc jak tylko model widoku ulega zmia- nie, to interfejs użytkownika się aktualizuje. Aby to było możliwe, model wido- ku musi implementować interfejs INotifyPropertyChanged i wyzwalać zdarzenie PropertyChanged. Pierwotnie tylko technologia WPF była wystarczająco zaawansowana, żeby spełniać wymagania wzorca MVVM. W wersji Silverlight 2 mieliśmy opcję implementowania MVVM, ale było to trudniejsze niż implementowanie MVVM w WPF. Obecnie w wersji Silverlight 4 możemy stosować MVVM zarówno w WPF, jak i Silverlight w taki sam spo- sób korzystając z możliwości wiązania danych, poleceń, zachowań i szablonów danych. Gdy stosujemy wzorzec MVVM, musimy specjalnie zadbać o model widoku. Ponie- waż ma on tak dużo obowiązków, to łatwo jest tworzyć nieuporządkowane rozwią- zania, w których będziemy ponownie pisać ten sam kod. Jednak przy zastosowa- niu odpowiedniego podejścia wzorzec MVVM może nam zaoszczędzić czas i pomóc w utworzeniu interfejsu użytkownika, który będzie łatwy do testowania i utrzymania. Oczywiście w celu prawidłowego wykorzystania MVVM trzeba koniecznie opanować język XAML i jego strukturę przy budowaniu interfejsu użytkownika. Musimy też wie- dzieć, jak działa silnik wiązania XAML, a także jaką strukturę mają obiekty i zachowa- nia poleceń (ICommand) oraz szablony danych. Do skutecznego wykorzystania MVVM zarówno w WPF, jak i Silverlight, trzeba też znać różnice pomiędzy WPF a Silverlight. Ta książka dogłębnie analizuje każdy składnik wzorca MVVM. Na końcu utwo- rzymy prostą aplikację biznesową stosującą MVVM, która będzie mogła być wyko- rzystywana jako szablon dla dowolnych przyszłych aplikacji MVVM. Jednocześnie zbudujemy niewielką platformę narzędziową MVVM, która będzie działać jako auto- matyczny składnik do wykorzystania w aplikacjach WPF lub Silverlight upraszczający pisanie aplikacji MVVM. Platforma ta zapewni na przykład podstawową klasę View- Model, przykładowego brokera komunikatów i inne funkcje wymagane w typowej aplikacji MVVM. 2 Rozdział 1 Wprowadzenie do aplikacji biznesowych i wzorca Model View ViewModel ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== ■ Aplikacje biznesowe Z mojego doświadczenia najlepszym sposobem nauczenia się nowej technologii jest zbudowanie aplikacji krok po kroku. Aplikacja biznesowa stanowi najlepszy przykład z kilku powodów: jest odpowiednia dla elastycznej technologii interfejsu użytkownika występującej zarówno w WPF, jak i Silverlight; jest otwarta na zastosowanie wzorca MVVM; i jest to typowy rodzaj aplikacji, więc możemy ponownie wykorzystać te przy- kłady później dla prawdziwych celów biznesowych. UWAGA Aplikacje biznesowe obsługują działania istotne dla przedsiębiorstwa takie, jak księgowość, zarządzanie łańcuchem dostaw lub planowanie zasobów. Aplikacje biznesowe są zwykle dużymi programami, które zawierają wiele zintegrowanych funkcjonalności i wiążą się z innymi aplikacjami oraz systemami zarządzania baz da- nych. Są też często nazywane aplikacjami dla przedsiębiorstw. Aplikacja biznesowa może być dowolną aplikacją istotną dla prowadzenia biznesu: systemem zarządzania relacjami z klientami używanym w biurze, oprogramowaniem księgowym używanym przez departament fi nansowy do przygotowywania listy płac lub dowolnym innym typem aplikacji biznesowej, która spełnia określone wytyczne i ma określony styl interfejsu użytkownika. Jeśli by się nad tym zastanowić, to takie aplikacje doskonale pasują do pojęcia „szablonu”. Aplikacje biznesowe są najczęściej zamawianymi przez klientów, a przy tym najła- twiejszymi do zaprogramowania. Jednocześnie bywają najtrudniejszymi do zaprojekto- wania. Wynika to z tego, że chociaż ich struktura jest zwykle dość prosta i powtarzalna, to ich wymagania często zmieniają się podczas procesu tworzenia oraz w okresie ich użytkowania. Coraz częściej aplikacje biznesowe wykorzystują interfejsy WWW, co sprawia, że stają się łatwiej dostępne poprzez przeglądarki, łatwiejsze we wdrażaniu i aktualizo- waniu oraz pozwalają na realizację scenariuszy biznesowych, które wymagają dostępu do tych samych funkcji przez partnerów biznesowych i klientów. Wykorzystują też osobiste funkcje aplikacyjne, takie jak poczta elektroniczna i książki adresowe. Aplikacja biznesowa często zmienia się w sposób przyrostowy podczas projekto- wania. Książka na temat zarządzania projektami, którą jakiś czas temu przeczytałem (dzięki swojemu szefowi), wspominała, że największe wydatki departamentów IT i producentów oprogramowania wiążą się z utrzymywaniem istniejącego oprogramo- wania. Zwykle osoby zaangażowane w projekt programistyczny dowolnego rodzaju uważają, że najdroższą częścią jest faza programowania prowadząca do pierwszej edy- cji programu, ale tak naprawdę dopiero po wydaniu pierwszej wersji pojawiają się prawdziwe kłopoty. Na przykład załóżmy, że tworzymy i sprzedajemy aplikację księ- gową, w której pierwotnie nie zaprojektowano obsługi wypłat dla pracowników. Po jakimś czasie klienci poprosili o tę nową „funkcję”. Jeśli projekt nie jest wystarczająco ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Aplikacje biznesowe 3 elastyczny na przyjmowanie nowych elementów i zmian, to prawdopodobnie stracimy klienta i aplikacja okaże się porażką. Aplikacja biznesowa świetnie pasuje do technologii WPF/Silverlight i wzorca MVVM, ponieważ skupia się na wszystkich typowych problemach, które mały, średni lub duży zespół napotka podczas różnych faz procesu tworzenia programu, a które można rozwiązać korzystając z tych elastycznych technologii. Niestety książka nie nauczy nas wszystkiego, więc w tej książce nie dowiemy się, jak budować przemysłowe aplikacje CRM albo jak stosować metodologię Scrum w swoim zespole – ale dowiemy się, jak zbudować aplikację biznesową, która implementuje niewielki system do zarzą- dzania klientami korzystając z najnowszych technologii Microsoft. Wybór odpowiedniej technologii Ponieważ możemy zbudować aplikację biznesową albo przy pomocy WPF, albo Silver- light, to musimy przeanalizować wymagania projektu, aby ustalić, która technologia jest najbardziej odpowiednia dla tej określonej aplikacji i z których narzędzi chcemy skorzystać do jej zbudowania. Aby odpowiedzieć na te pytania, najpierw zbadamy, jak wybrać technologię pomiędzy Silverlight a WPF, a następnie zbadamy narzędzia, które fi rma Microsoft obecnie oferuje do projektowania interfejsu użytkownika. Na koniec przejdziemy do analizy typowego układu grafi cznego aplikacji biznesowej i oczekiwań użytkowników wobec niego. Silverlight czy WPF? Silverlight i WPF opierają się na tej samej podstawowej technologii: Microsoft .NET Framework. W obu przypadkach budujemy interfejsy użytkownika przy pomocy języka XAML. Technologia WPF jest następcą Windows Forms, więc została zaprojektowana tak, aby obejmowała pełen zestaw kontrolek interfejsu użytkownika i elementów multi- medialnych, przy pomocy których możemy tworzyć bogate i interaktywne aplikacje klienckie dla systemu Windows. Silverlight jest międzyprzeglądarkową, międzyplat- formową technologią, która obsługuje bogate aplikacje internetowe. Zasadniczo WPF służy do budowania aplikacji klienckich dla systemu Windows, a Silverlight służy do tworzenia bogatych aplikacji WWW, ale również przeglądarki mogą obsługiwać aplika- cje WPF, a aplikacje Silverlight mogą być uruchamiane poza przeglądarką na pulpitach. Istnieje kompatybilność pomiędzy Silverlight a WPF, ponieważ obie te technologie wykorzystują ten sam język opisu interfejsu użytkownika (XAML), ten sam zestaw składników interfejsu (choć Silverlight wykorzystuje tylko podzbiór tego zestawu), tę samą bazową bibliotekę klas .NET oraz środowisko CLR. Jedyną znaczącą różnicą jest tutaj to, że Silverlight obecnie wykorzystuje inną implementację .NET CLR. Rysunek 1-1 wyświetla główne różnice pomiędzy tymi dwiema technologiami. 4 Rozdział 1 Wprowadzenie do aplikacji biznesowych i wzorca Model View ViewModel ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== WPF Podstawowe elementy prezentacyjne NET Framework Common Language Runtime SILVERLIGHT Podstawowe elementy prezentacyjne NET Framework dla Silverlight CLR dla Silverlight Przeglądarka RYSUNEK 1-1 Przegląd architektury WPF i Silverlight Ponieważ Silverlight skupia się na odbiorcach korzystających z wielu platform i prze- glądarek, to fi rma Microsoft zmuszona była do zmniejszenia i ograniczenia środo- wiska uruchomieniowego dla tej technologii. Wniosek z tego jest taki, że najlepiej od początku planować aplikację pod kątem ostatecznej grupy docelowej dla naszej aplikacji biznesowej, ponieważ nie wszystkie funkcje WPF będą dostępne w Silverlight i znacznie trudniej jest przejść później z jednej technologii na drugą. Oczywiście technologie WPF i Silverlight stają się coraz lepsze z każdym wydaniem, więc istnieje nadzieja, że w przyszłości otrzymamy zunifi kowaną platformę, ale na razie ważne jest, aby pamiętać, że grupy docelowe dla tych dwóch technologii są nieco inne. UWAGA Firma Wintellect we współpracy z firmą Microsoft wydała dokument do- stępny pod adresem http://wpfslguidance.codeplex.com, który w pełni wyjaśnia róż- nice pomiędzy tymi dwiema technologiami. Dokument ten ma około 69 stron. Jak można się spodziewać, ta książka nie może obejmować wszystkich tych różnic; dlate- go jedynie podkreśla najważniejsze z nich. Pierwsza różnica dotyczy technologii istotnych dla implementacji MVVM. Silverlight nie implementuje wytyczanych poleceń, wyzwalaczy albo szablonów danych w taki sam sposób jak WPF. Dlatego, aby uzyskać takie samo (lub podobne) zachowanie, musimy implementować niestandardową funkcjonalność w Silverlight. Najpierw jed- nak słowo ostrzeżenia dotyczące wykorzystania wyzwalaczy w WPF i Silverlight przy implementowaniu wzorca MVVM: nie powinny być intensywnie używane, ponieważ łatwo może się zdarzyć, że będą zawierać logikę prezentacyjną, której nie będzie się dało testować. Logika ta nie jest dostępna w modelu widoku, ale jest udostępniana w widoku przez wyzwalacz. Silverlight 4 zawiera bogaty zestaw kontrolek, stylów i szablonów, z których jed- nym jest ciekawy szablon aplikacji biznesowej. Z kolei WPF zawiera mniejszy zestaw narzędzi z kontrolkami. ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Wybór odpowiedniej technologii 5 Z której technologii powinniśmy więc skorzystać – Silverlight, czy WPF? Odpo- wiedź brzmi: należy dokonać wyboru w oparciu o typ budowanej aplikacji i najbar- dziej typową grupę docelową dla tej aplikacji. Jeśli na przykład zamierzamy stworzyć aplikację biznesową dla departamentu fi nansowego, która nie będzie używana poza fi rmą klienta, to WPF jest odpowiednią technologią. Z drugiej strony, jeśli mamy opra- cować aplikację CRM, która będzie używana przez klientów i menedżerów korzystają- cych z różnych urządzeń, to lepiej umieścić aplikację w przeglądarce, a więc Silverlight byłby odpowiednią technologią. Możemy łatwo zbudować dwie warstwy interfejsu użytkownika, jeśli prawidłowo korzystamy z wzorca MVVM: jedną warstwę dla WPF i jedną warstwę dla Silver- light. Obecnie wielu programistów stosuje to podejście z dwoma warstwami interfejsu użytkownika. Ostateczna grupa docelowa i zadania naszej aplikacji stanowią klucze, które powinny wpływać na wybór zastosowanej technologii. Nie musimy się martwić w tym momen- cie różnicami w zestawie kontrolek lub interfejsie użytkownika; fi rma Microsoft wydała zestaw narzędzi projektowych (Microsoft Expression Studio), które mogą obsługiwać cały proces projektowania zarówno na potrzeby WPF, jak i Silverlight. Narzędzia firmy Microsoft do budowania interfejsu użytkownika Największym problemem dla programistów, którzy chcą przejść na WPF lub Silver- light jest krzywa uczenia się. Obie te technologie wykorzystują nową specyfi kację języka opisu interfejsu użytkownika o nazwie XAML, który jest po prostu deklara- tywnym językiem znaczników, podobnie jak HTML lub XML. Oczywiście nie jest łatwo korzystać z tego języka do budowy układów grafi cznych, gdy nie wiemy, jak działa silnik przetwarzający XAML. Podobnie nie jest łatwo zaimplementować pełne wsparcie narzędzi projektowych dla podejścia WYSIWYG. XAML jest bardzo elastycz- nym językiem znaczników z kilkoma ograniczeniami. Na przykład możemy umieś- cić kontrolkę DataGrid w przycisku typu Button – nawet jeśli nie miałoby to sensu z punktu widzenia użyteczności. Taka elastyczność może doprowadzać silniki gra- fi czne do szału. Żeby pomóc w rozwiązywaniu takich problemów, fi rma Microsoft wydała pakiet narzędzi grafi cznych o nazwie Expression Studio. Najnowsza wersja to Expression Studio 4, którą trzeba kupić oddzielnie (można również kupować pojedynczo każde z narzędzi dostępnych w pakiecie Expression). Ten pełen zestaw aplikacji dla pro- jektantów WPF/Silverlight obsługuje cały proces projektowania aplikacji XAML, od początkowego symulowania interfejsu użytkownika po wszystkie elementy projektowe zawarte w fi nalnym produkcie. Niektóre z narzędzi w pakiecie Expression Studio, takie jak Expression Web, są przeznaczone specjalnie dla projektantów WWW. Program Expression Blend przeznaczony dla projektantów interfejsu użytkownika oddziela nie tylko kod proceduralny od znaczników, ale też oddziela zadania projektowe od zadań 6 Rozdział 1 Wprowadzenie do aplikacji biznesowych i wzorca Model View ViewModel ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== programistycznych pozwalając programistom skupić się na pisaniu kodu biznesowe- go, a projektantom projektować funkcjonalny interfejs użytkownika bez konieczności znajomości C#, Visual Basic lub dowolnego innego języka .NET. MVVM jest kluczem do tego procesu współpracy pomiędzy projektantem a programistą. W istocie program Expression Blend jest dostarczany z określoną przestrzenią nazw, którą programiści mogą wykorzystać do utworzenia atrapy modelu widoku na potrzeby projektantów. Projektanci następnie mogą wiązać widok z tym odbiciem ostatecznego modelu wido- ku i projektować warstwę interfejsu użytkownika. Pakiet Expression Studio w 60-dniowej wersji próbnej można pobrać pod adresem http://www.microsoft.com/expression/, kupić go przez sieć lub uzyskać poprzez subskryp- cję MSDN. Expression Blend Expression Blend jest głównym produktem pakietu Expression Suite dla projektanta WPF/Silverlight. Pliki projektowe tego programu są w pełni kompatybilne z Microsoft Visual Studio. Możemy pracować nad projektem w programie Expression Blend, a następnie otwierać ten projekt w Visual Studio i vice versa. Ta dwukierunkowa kom- patybilność ułatwia wykorzystanie programu Expression Blend do zaprojektowania szablonu i kontrolek naszej aplikacji biznesowej, a następnie przejście do Visual Stu- dio w celu napisania kodu .NET. Mimo tej wygody, przechodzenie tam i z powrotem pomiędzy Expression Blend a Visual Studio nie jest obowiązkowe, ponieważ program Expression Blend może przetwarzać XAML oraz budować rozwiązania w językach C# i Visual Basic tak samo jak Visual Studio. Korzystając z Expression Blend możemy projektować interfejs użytkownika w XAML, tworzyć bibliotekę kontrolek dla Silverlight lub WPF albo po prostu pro- jektować i stosować niestandardowe style w naszej aplikacji XAML. Jedną z napraw- dę mocnych funkcji Expression Blend jest możliwość tworzenia szablonów danych w czasie projektowania. Ta możliwość oznacza, że projektant grafi czny nie potrzebuje „prawdziwej” bazy danych lub plików z danymi, żeby przedstawiać realistyczne wyniki w programie projektowym; Expression Blend pozwala nam łatwo skonfi gurować szab- lon danych lub może wygenerować taki szablon. Końcowy wynik pojawia się w zin- tegrowanym środowisku projektowym i wygląda tak, jak wyniki, które moglibyśmy uzyskać przy użyciu danych rzeczywistych. Najnowsza wersja Expression Blend 4 ma pełną obsługę WPF i Silverlight w cza- sie projektowania i znacznie ułatwia pracę projektanta. Ponadto Expression Blend udostępnia pakiet Behaviors SDK, który dodaje obsługę wzorca MVVM w czasie pro- jektowania. Funkcja ta sprawia, że Expression Blend jest podstawowym narzędziem projektanta interfejsów użytkownika dla aplikacji wykorzystujących MVVM. Na koniec, aby wspomnieć kilka nowych funkcji w najnowszej wersji Expression Blend, możemy łatwo budować i emulować aplikacje dla nowej platformy mobil- nej Windows Phone 7; tworzyć wspaniałe przejścia i animacje dla swoich aplikacji ##7#52#aSUZPUk1BVC1WaXJ0dWFsbw== Wybór odpowiedniej technologii 7
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Budowanie aplikacji biznesowych za pomocą Windows Presentation Foundation i wzorca Model View ViewM
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: