Daniel Fisher | devcoach®
Nach SOA kommt SOC
Service-Orientierung auf dem Client
SOFTWARE://DEVELOPMENT + ARCHITECTURE + CONSULTING
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]
2
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]
3
NACH SOA KOMMT SOC
Service-Orientierung auf dem Client
Speaker | Topic [edit in Master view]
4
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!
ANFORDERUNGEN
Front-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
Change
Event
MVP
Presenter
Model
View
(Interface)
View
(Implementation)
Load Data
Update View
Bubble
Change
Event
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
Navigation
Service
Model
Service
State
Service
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
Model
Service
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
Navigation
Service
Page Flow
Instance Store
Provides navigation
methods to navigate
between views on
page flow instances.
Loads and
provides
access to
page flows
View Provider
View Store
Loads and
provides
access to
views
Navigation Service
• Liest Liste der Views
– Web Form URLs
– Formular Typen
• Verbindet PageFlow eines Providers mit Views
• Navigation API
– Web/Win
– Provider?
State Service
State
Service
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
ZUSAMMENSPIEL
Autonome Komponenten
Speaker | Topic [edit in Master view]
35
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 109
52070 aachen
germany
www.devcoach.de
info@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.

2007 - Basta!: Nach soa kommt soc

  • 1.
    Daniel Fisher |devcoach® Nach SOA kommt SOC Service-Orientierung auf dem Client SOFTWARE://DEVELOPMENT + ARCHITECTURE + CONSULTING
  • 2.
    devcoach® • Michael Willersund 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] 2
  • 3.
    devcoach® Cont. • ArchitekturBeratung – 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] 3
  • 4.
    NACH SOA KOMMTSOC Service-Orientierung auf dem Client Speaker | Topic [edit in Master view] 4
  • 5.
    SOA? Aber nichtauf 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 – …
  • 6.
    SOA • Autonom • FormaleKommunikation • Disconnected • Asynchron … auch auf dem Client!
  • 7.
  • 8.
    Input Handling • Datenmü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
  • 9.
    Multiple Front EndTypes • ASP.NET • Windows Forms • WPF • Silverlight • DWX • LDPE • Nur ein Scherz  – Aber wer weiß schon, was uns morgen beglückt…
  • 10.
    Testability • Test sindwichtig! • Um so wichtiger mit jedem zusätzlichen Front-End! • Für Sie nicht interessant? – Und wie garantieren Sie Ihre „Code Qualität“?
  • 11.
    Maintainability • Business Logicim UI == Spaghetti Code – Enge Koppelung (Tightly Coupled) • Un-testable • Un-maintainable • Un-extensible • Un-sexy
  • 12.
  • 13.
    UX Patterns? • DefinierterWeg Oberflächen zu schreiben • Lose Koppelung zwischen UI und Logik • Ersetzbarkeit der Präsentationsschicht • Testbarkeit der Logik und UI-Interaktion • Weniger Code?
  • 14.
    Was der Martinsagt… 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.
  • 15.
    MVC/P • Model istdie 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.
  • 16.
    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.
  • 17.
  • 18.
  • 19.
    Page flow • Pageflow control – Multi-page-forms – Neested flows – Paused flows • IKEA bitte nur für Möbel…
  • 20.
    State • Ja… Wasist eigentlich State? • Nein, nicht der Session-State von ASP.NET
  • 21.
  • 22.
  • 23.
    Model • Business-Objekte • Imschlimmsten Fall auch ein DataSet – Überflüssiger Verbrauch von CPU/Speicher • 66% langsamer als Business-Objekt und DataReader
  • 24.
    View • Enthalten UI(Controls) • Enthalten UI-Logik
  • 25.
    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?
  • 26.
    Controller • Initialisierung… – Durchdie 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
  • 27.
    Controller Cont. • Enthältdie 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
  • 28.
  • 29.
    Model Service • Zugriffs/PersistenzAPI für Model – Database • SQL Server • … – Web Service • WCF • … • NHibernate… • …
  • 30.
    Navigation Service Page Flow Provider Navigation Service PageFlow Instance Store Provides navigation methods to navigate between views on page flow instances. Loads and provides access to page flows View Provider View Store Loads and provides access to views
  • 31.
    Navigation Service • LiestListe der Views – Web Form URLs – Formular Typen • Verbindet PageFlow eines Providers mit Views • Navigation API – Web/Win – Provider?
  • 32.
    State Service State Service State Provider StateStore Loads and provides access to state objects Provides access to the state data.
  • 33.
    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 – …
  • 34.
    Page Flow • Plattform-unabhängigeDefinition – 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
  • 35.
    ZUSAMMENSPIEL Autonome Komponenten Speaker |Topic [edit in Master view] 35
  • 36.
    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…
  • 37.
    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…
  • 38.
    Wohin mit derLogik? • Model: – Domänenspezifisches Verhalten • Controller: – Business-Logik – Persistenz • View – Oberflächen-Logik • Beispiel: Steuerelement-Hoover, Expand, Collaps, Sort, Popup…
  • 39.
    Copyright • Copyright ©2007, all rights reserved – devcoach® passstraße 109 52070 aachen germany www.devcoach.de info@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.