Smart Business Web Clients mit Silverlight 4 & WCF RIA Services Markus Unterauer Software Architect Cubido Business Solutions Max Knor Technical Evangelist Microsoft Österreich
Quellcode der Demoapplikation auf
Demoszenario Helfen-helfen Hilfsorganisationen (Organisation) können Hilfseinsätze posten (Demand) Bei jeden Einsatz fallen unterschiedliche Tätigkeiten an (DemandDetails) Benutzer (UserDetail) können sich für Tätigkeiten bei Einsätzen registrieren (Mission) Für erfolgreiche Einsätze gibt es Punkte (BonusAccount), die dann gegen kleine Geschenke eingetauscht werden können (BonusItem)
Helfen-helfen - Architektur Backend Client (Silverlight 4 / RIA) Web Frontend (ASP.NET / AJAX / MVC) Anwendungs- Server Web Server (Web) Service HTTP/HTML TDS
Helfen-helfen – Teil des Datenmodells
Silverlight vs. ASP.NET vs. WPF für Business Apps Effizientes Arbeiten mit Daten im Mittelpunkt Einfaches Deployment und Update auf mehreren Plattformen Anwender & IT fordern Schnelle Reaktion des UI (Datenprüfung, Daten-Lookup, …) Näher an Excel (z.B. Editieren direkt im DataGrid) Mächtige Controls (DropTarget, Webcam, RichTextBox, …) Auto-Update, Out-Of-Browser Modus Silverlight 4 bietet
Ziele von WCF RIA Services Arbeiten mit asynchronen Webservices ist mühsam und unintuitiv Vor allem für datenzentrierte Applikationen Einfachere Entwicklung von Rich-Internet-Apps Fertige Module für Datenzugriff, Validierung, Sicherheit, … ASP.NET Produktivität für Silverlight RIA-Clients
Agenda Zielsetzung Architektur der WCF RIA Services Erste Schritte mit WCF RIA Services Business Application Beispiel – Einfache Listendarstellung – Blättern, Sortieren, Filtern – Formularansicht – Speichern & Validierung – Contextmenü, Clipboard, DropTarget
Application Browser Rich Internet Application DB Service Other Applications Client und Server – Eine Einheit?! Client als Erweiterung des Servers Applikation als Gesamtheit aus Client + Server Data Access Layer App Logic App Logic Services HTML Presentation Logic Network
Windows Communication Foundation Programming Model Service Model Data Contract Channel Model RIA Services RIA Services Core Services Service Contract Service Behavior Workflow Services Workflow Services Formats (Atom, JSON, XML,…) Formats (Atom, JSON, XML,…) Transports (HTTP, TCP,…) Transports (HTTP, TCP,…) Protocols (SOAP, HTTP, OData,…) Protocols (SOAP, HTTP, OData,…) Web Http Services Data Services
demo Erste Schritte mit WCF RIA Services
Client Projekt Applikationsarchitektur Server Projekt Domain Service Data Access Layer (DAL) Entities Applikation Views Domain Context Entities Build, reflect & code-gen
demo WCF RIA Services, DataGrid, Visual Studio Data Sources Einfache Listendarstellung
Data Sources – Fenster – Drag & Drop für gebundene Listen Domain Data Source – Kapselt Servicemethoden & Entitäten DataGrid Zusammenfassung
demo DataGrid, DataPager Blättern, Sortieren, Filtern
Busy Indicator – System.Windows.Controls.Toolkit.dll – IsBusy gebunden auf DomainDataSource.DomainContext.IsLoading Data Pager – System.Windows.Controls.Toolkit.dll – Rückgabe muss sortiert sein! (OrderBy(..) am Server) – Echtes Paging --> in der Datenbank, nicht In-Memory Filterung – FilterDescriptors Collection der DomainDataSource Zusammenfassung
demo Formularansicht
DataGrid Template Column – Button für Navigation zur Detailseite Silverlight Seitennavigation – Alles hinter #: Lokal für Silverlight – NavigationService.Navigate( " – NavigationContext.QueryString Data Sources Fenster auch für Formulare Zusammenfassung
demo Speichern und Validierung
DomainDataSource – Lokales Changetracking – SubmitChanges() Validierung – DataAnnotation Attribute in domainservice.metadata.cs – Client & Server Validierung (gemeinsamer Code) – Required, ReadOnly, StringLength, RegularExpression, … Zusammenfassung
demo Drag&Drop, COM Interop, Contextmenü, Clipboard
Contextmenü, Clipboard, DropTarget Contextmenü – MouseRightButtonDown Event: e.Handled = true – MouseRightButtonUp Event – Contextmenü muss selbst umgesetzt werden Clipboard – SetText(…), GetText(…) – Erster Aufruf: Freigabedialog für Benutzer – DropTarget (für FileInfo[]) – UIElement.AllowDrop = true – DragEnter, DragOver, Drop Events Zusammenfassung
Ziel erreicht? Viele UI-Controls für effiziente Business-AppsEinfachere Entwicklung: Client und Server als EinheitASP.NET Produktivität für Silverlight RIA-Clients
Links zu Silverlight 4 und RIA Silverlight – SL Home: – SL 4 beta: – Toolkit: WCF RIA Services – Silverlight Control Libraries – –
Fragen?
Die nächsten Vorträge Track 1: Security war gestern, Protection ist heute! Track 2: A Lap around SharePoint 2010 Track 3: Visual Studio 2010 Ultimate & Team Foundation Server – Teil 1 Track 4: CSS Layouts und ASP.NET 4 Track 5: Alles auf einen Blick: die integrierte ERP- und BI-Lösung auf Knopfdruck