2007 - Basta!: Nach soa kommt soc

Preview:

Citation preview

Daniel Fisher | devcoach®

Nach SOA kommt SOCService-Orientierung auf dem Client

SOFTWARE://DEVELOPMENT + ARCHITECTURE + CONSULTING

Speaker | Topic [edit in Master view] 2

devcoach®

• Michael Willers und Daniel Fisher– +10 Jahre Erfahrung in Projekten

• Development• Architecture• Consulting

– Echte Projekte – Nicht bloß coole Demos!– Tiefgehendes technisches Wissen und Praxis-Know-how

• Service-Orientierung• Web• Datenzugriff• Security

Speaker | Topic [edit in Master view] 3

devcoach® Cont.• Architektur Beratung

– Projektbegleitung von der Analyse bis zum Roll-out, vom Back-End zum UI

• Scalability & Performance • Integration & Interoperability• Maintainability & Deployment

• Proof-of-Concepts und Prototyping/Individual bits• Coaching

– Vor Ort, am Telefon, per Mail, in Video-Konferenzen oder über Remote Desktop

– Knowledge transfer– Q&A

Speaker | Topic [edit in Master view] 4

NACH SOA KOMMT SOCService-Orientierung auf dem Client

SOA? Aber nicht auf dem Server?• Ja, da war doch noch was…• Clients die SO-Services nutzen, gehören zur

Architektur dazu und müssen/sollten wie die Services gewissen Implikationen folgen– Genauso, Wie auf dem Service Back-End-Logik

anders verteilt wird– Die Rolle der Datenbank sich ändert– …

SOA• Autonom• Formale Kommunikation• Disconnected• Asynchron

… auch auf dem Client!

ANFORDERUNGENFront-Ends für SO-Systeme

Input Handling• Daten müssen gesammelt werden, bevor sie

verschickt werden– Wie im wahren Leben

• Wenn Sie sowas haben ;-)• Beispiel: Steuererklärung

• Daten müssen zwischengelagert werden, wenn das Back-End nicht erreichbar ist– Offline Fähigkeit

Multiple Front End Types• ASP.NET• Windows Forms• WPF• Silverlight

• DWX• LDPE• Nur ein Scherz

– Aber wer weiß schon, was uns morgen beglückt…

Testability• Test sind wichtig! • Um so wichtiger mit jedem zusätzlichen

Front-End!

• Für Sie nicht interessant?– Und wie garantieren Sie Ihre „Code Qualität“?

Maintainability• Business Logic im UI == Spaghetti Code

– Enge Koppelung (Tightly Coupled)• Un-testable• Un-maintainable• Un-extensible• Un-sexy

USER INTERFACE PATTERNS

Eine Lösung?

UX Patterns?• Definierter Weg Oberflächen zu schreiben• Lose Koppelung zwischen UI und Logik• Ersetzbarkeit der Präsentationsschicht• Testbarkeit der Logik und UI-Interaktion• Weniger Code?

Was der Martin sagt…The Model-View-Controller metaphor is a way to design and

implement interactive application software that takes advantage of modularity, both to help the conceptual development of the applications, and to allow pieces already developed for one application to be reused in a new application.

The metaphor imposes a separation of behavior between the actual model of the application domain, the views used for displaying the state of the model, and the editing or control of the model and views.

MVC/P• Model ist die fachliche Domäne (Business-Objekte). Oft

auch die Komponente des Systems, welche die “Arbeit” verrichtet.

• View ist die Oberfläche. Eng assoziiert mit einem Controller und exakt einem Model, wobei ein Model mehrere Views und Controller haben kann.

• Controller/Presenter definieren die Schnittstelle zwischen View und Model.

Nochmal der Martin …• Many UI frameworks provide the ability to easily map

between the view and model, often using some kind of Data Binding. These approaches are very effective in allowing you to declaratively set up a relationship between elements in the view and model. Usually, however, there are more complex relationships which require you to have more complex view logic. This logic can be hard to manage, and in particular hard to test, while embedded in the view.

MVC

Controler

Model

View(Interface)

View(Implementation)

Load Data

Get Data

Set Data

Ask to save Data

Save Data

Bubble ChangeEvent

MVP

Presenter

Model

View(Interface)

View(Implementation)

Load Data

Update View

Bubble ChangeEvent

Save Data

Page flow• Page flow control

– Multi-page-forms– Neested flows– Paused flows

• IKEA bitte nur für Möbel…

State• Ja… Was ist eigentlich State?• Nein, nicht der Session-State von ASP.NET

USER INTERFACE PATTERNS

Model View Controller/Presenter

Presenter

NavigationService

ModelService

StateService

Model

View

Events (Data and Commands)

Controller

Data

Model• Business-Objekte• Im schlimmsten Fall auch ein DataSet

– Überflüssiger Verbrauch von CPU/Speicher• 66% langsamer als Business-Objekt und DataReader

View• Enthalten UI (Controls)• Enthalten UI-Logik

View Cont.• Ermöglichen über Bind-Methoden Datenbindung

– Business-Objekt-Eigenschaften/Kollektionen• Benachrichtigen Abonnenten per Events über

Aktionen– Windows Anwendungen– Web Anwendungen (Postbacks)

• Und was ist mit AJAX?

Controller• Initialisierung…

– Durch die Anwendung…– …Nicht durch das View!

• Deswegen der Name “Controller”!

– Web Anwendung• Lebenszyklus eines Request

– HTTPHandler – Helper to catch URLs…

– Windows Anwendung• Lebenszyklus des Prozesses

– Hook-up/Navigation Service

Controller Cont.• Enthält die Business-Logik

– Use Case– Lädt Model(s) und bindet diese(s) an View(s)

• Bind-Methode mit Kollektion/Business-Objekt-Eigenschaften

• Abonniert Ereignisse der View-Definition– Persistenz

Model Service

ModelService

Model

Provides access to models

Model Service• Zugriffs/Persistenz API für Model

– Database• SQL Server• …

– Web Service• WCF• …

• NHibernate…• …

Navigation Service

Page Flow Provider

NavigationService

Page FlowInstance Store

Provides navigation methods to navigate between views onpage flow instances.

Loads and provides access to page flows

View Provider

View Store

Loads and provides access toviews

Navigation Service• Liest Liste der Views

– Web Form URLs– Formular Typen

• Verbindet PageFlow eines Providers mit Views• Navigation API

– Web/Win– Provider?

State Service

StateService

State Provider

State Store

Loads and provides access to state objects

Provides access to the state data.

State Service• Speichert *unfertiges* Model auf dem Client

– Bis alle Daten für das Model gesammelt sind• Beispiel: Steuereklärung

• API für Page-Flow-State (Benutzer/Instanz)• API für Cross-Page-Flow Datentransfer• Provider

– In-Memory– SQL-Server– …

Page Flow• Plattform-unabhängige Definition

– Graphen mit Namen der Views• Keine Typen/URLs!

• Einzelne Views in n Page-Flows– Page-Flow “A” und “B” benutzen “EntryForm1”

• Parallele Page-Flows (unfinished tasks)– GUID identifiziert Instanz

• Page Flow Store Provider– XML, Database, Windows Workflow Foundation

Speaker | Topic [edit in Master view] 35

ZUSAMMENSPIELAutonome Komponenten

Loose koppelung• Views

– Keine Referenz zum Controller– Sollte auch ohne Pattern laufen (UI-Logik)

• Controller– Steuert View/Model-Interaktion und Page-Flow-Navigation

• Model– Domain Modell/Business-Objekte– Nur Controller/Presenter bekannt

• Presenter– The Glue In Between…

Model Editing Messages• Business Objects

– INotifyChangedProperty• DataSets*

– GetChanges()

* Wer sich schon Gedanken um eine saubere Architektur macht sollte wissen warum er das DataSet nicht verwenden sollte…

Wohin mit der Logik?• Model:

– Domänenspezifisches Verhalten• Controller:

– Business-Logik– Persistenz

• View– Oberflächen-Logik

• Beispiel: Steuerelement-Hoover, Expand, Collaps, Sort, Popup…

Copyright• Copyright © 2007, all rights reserved

– devcoach®passstraße 10952070 aachengermany

www.devcoach.deinfo@devcoach.de

• The presentation content is provided for your personal information only. Any commercial or non-commercial use of the presentation in full or of any text or graphics requires a license from copyright owner.

• This presentation is protected by the German Copyright Act, EU copyright regulations and international treaties.

Recommended