Please activate JavaScript!
Please install Adobe Flash Player, click here for download

arcAKTUELL 3.2012 - Reale und virtuelle Infrastrukturen

50 T I P P S U N D T R I C K S ArcGIS Runtime SDK for WPF und MVVM TIPPS UND TRICKS FÜR ENTWICKLER MVVM Das Model-View-ViewModel-Pattern (MVVM) ist ein Vertreter einer gan- zen Familie von Patterns, deren vorrangige Aufgabe es ist, die Daten von ihrer Darstellung zu trennen. Die Ursprünge dieses Pattern liegen schon 30 Jahre zurück. In Smalltalk als Model-View-Controller (MVC) im- plementiert, fand es über die Weiterentwicklung Model-View-Presen- ter (MVP) zur aktuellen Ausprägung. Dabei bezeichnet MVVM eine spezielle Form des Presentation Pattern von Microsoft für seine neue- ren Technologien WPF und Silverlight. Die Idee dahinter ist die Kapse- lung der Geschäftslogik in einem eigenen Konzept (Model), deren Da- ten mittels eines Vermittlers (ViewModel) im Frontend (View) dargestellt werden. Diese Art der Aufteilung bezieht sich auf gleich mehrere Auf- gaben: · Fokussierung der technischen Verantwortlichkeiten: Das Model kümmert sich ausschließlich um das Management (Lesen, Bearbeiten, Speichern) von Daten. Das ViewModel wiederum dient ausschließlich zur visuellen Aufbereitung von Daten und steuert die Logik des User Interface (UI). Der View ist lediglich für Anzeige und Manipulation von Daten verantwortlich. Damit wird auch das Architektur-Pattern SOC (Separation of Concerns)1 umgesetzt. · Fokussierung der organisatorischen Verantwortlichkeiten: Während der Entwickler die eigentliche Programmlogik programmiert, kann das Frontend völlig losgelöst von einem UX-Experten gestaltet werden. · Flexibilität: Eine derartige Architektur erlaubt das schnelle Aus- wechseln und Anpassen von Komponenten. Was heute noch auf dem Desktop ist, kann morgen einfach ins Web portiert werden. Dazu muss entsprechend nur der View mit seinem zugehörigen ViewModel implementiert werden. Die meist aufwendige Business- logik bleibt unangetastet. · Testbarkeit: Durch den fehlenden UI-Bezug ist die Geschäftslogik relativ einfach Unit-testbar. Das Besondere an MVVM ist das sogenannte DataBinding. Dabei wer- den die UI-Elemente vom Designer einfach auf entsprechende An- knüpfpunkte des ViewModel geklemmt. Die Technologie sorgt dann völlig eigenständig dafür, dass die Daten korrekt im Frontend ange- zeigt oder in der anderen Richtung im ViewModel aktualisiert werden. So kann beispielsweise ein Integerwert mit einem Slider, Spinedit oder Eingabefeld verbunden werden. Der Entwickler muss sich keine Gedan- ken mehr darüber machen, wie er den Slider oder das Spinedit korrekt setzt – das passiert automatisch im Hintergrund durch das Binding. ArcGIS Runtime SDK for WPF ArcGIS Runtime for Desktops ist ein neues Produkt von Esri für die Ent- wicklung von leichtgewichtigen und funktional reichhaltigen GIS-An- wendungen für verschiedene Desktop-Plattformen (siehe Artikel in arcAKTUELL 4/2011, 2/2012 und dieser Ausgabe). Dabei kann der Entwick- ler zwischen verschiedenen nativen SDKs wählen. Diese SDKs sind im Rahmen einer Subskription des Esri Developer Network (EDN) erhält- lich. Eines davon ist das ArcGIS Runtime SDK for WPF.2 Bei der Erstel- lung von Applikationen auf dieser Basis sollte natürlich auch das be- währte MVVM-Pattern angewendet werden. Ein möglicher Ansatz dazu wird im Folgenden beschrieben. Werkzeuge Entwicklungsumgebungen Neben Visual Studio bietet Microsoft mit Expression Blend ein ausge- zeichnetes Programm zum Designen von Oberflächen an. Die anvisier- te Zielgruppe wird schon auf dem ersten Blick klar: Designer. Visuell orientiert sich Expression Blend an den Adobe-Klassikern – ein dunkles UI, um die Augen nicht abzulenken, und zahlreiche kleine Panels zur Parametrierung. Nicht nur dem Designer wird die Arbeit erleichtert, auch dem Entwickler kann Expression Blend eine gute Hilfe sein. Unter anderem lässt sich das DataBinding über diverse Menüs sehr komfor- tabel umsetzen. MVVM Light Toolkit Darüber hinaus gibt es für die Entwicklung mit MVVM unzählige kleine und große Helferlein. Ein elegantes und gern von uns verwendetes Framework ist das kostenfreie MVVM Light Toolkit von Galasoft.3 Die Vorteile sind: · Verwendbarkeit für WPF- und Silverlight-Projekte · Projekt- und Item Templates · Viele nützliche Hilfen für DataBinding (Blendability) · Messaging-Unterstützung · Umfangreiche Dokumentation Mittels NuGet4 lässt sich das Toolkit einfach in eigene Projekte einbin- den. Dabei wird neben dem Einbetten der eigentlichen Bibliotheken auch der DevTree für die Verwendung angepasst. Praxis-Check Anhand eines praktischen Beispielprojekts wird exemplarisch eine mögliche Vorgehensweise beschrieben. Wir erstellen eine kleine GIS- Anwendung auf Basis von ArcGIS Runtime SDK for WPF und nutzen das MVVM Light Toolkit als Hilfsmittel für unsere MVVM-Architektur. Die Funktion der Anwendung ist ganz simpel – es soll für jeden Feature- Layer die Anzahl der Features im momentan sichtbaren Kartenaus- schnitt ermittelt und angezeigt werden. In Visual Studio erstellen wir dazu ein Projekt mithilfe eines Templates, das nach der Installation des ArcGIS Runtime SDK for WPF in Visual Stu- dio integriert ist. Die automatisch generierte MainWindow.xaml ist un- ser View. In ihm konfigurieren wir unsere Map und fügen noch einige Controls für die Anzeigen der Anzahl der Features hinzu. Anschließend erweitern wir mit NuGet unser Projekt um die MVVM-Light-Toolkit- Komponenten. Dabei wird unter anderem das Projekt um unser View- Model ergänzt. Anschließend werden noch einige Komponenten für unser Model benötigt. Damit hat man strukturell schon einmal alles zu- sammen. Dies könnte in etwa so aussehen wie in » Abbildung 2. Der Sinn von MVVM ist das Trennen von UI und Logik. Für unsere Funk- tion müssen wir vereinfacht betrachtet auf das ExtentChanged Event der Map lauschen, den neuen Extent den Query Tasks mitteilen, an- schließend die Queries starten und die ermittelten Ergebnisse in den jeweiligen Controls darstellen. Das Auslösen des ExtentChanged Events und das Darstellen der Ergebnisse geschieht in der UI, also in unserem View. Das Ermitteln der Anzahl der Features durch Queries ist eine Logik, die dementsprechend in unserem Model implementiert wird. Das ViewModel hingegen fungiert als Bindeglied zwischen bei- den, es reicht nur Informationen durch. 50

Seitenübersicht