2007 - basta!: nach soa kommt soc
TRANSCRIPT
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
• 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.