38
1 MVVMmmmmmmmmmmm Ward Bell VP Technology, IdeaBlade Twitter: @wardbell Blog: http://neverindoubtnet.blogspot.com/

MVVMmmmmmmmmmmm

  • Upload
    pillan

  • View
    19

  • Download
    1

Embed Size (px)

DESCRIPTION

MVVMmmmmmmmmmmm. Ward Bell VP Technology, IdeaBlade Twitter: @ wardbell Blog: http://neverindoubtnet.blogspot.com/. Thanks for the slide deck, John Papa. Agenda. MVVM: What and Why Respond to User Actions Abstraction. Design with Data Data Services Testing. Bookshelf in Action. - PowerPoint PPT Presentation

Citation preview

Page 1: MVVMmmmmmmmmmmm

1

MVVMmmmmmmmmmmm

Ward BellVP Technology, IdeaBladeTwitter: @wardbellBlog: http://neverindoubtnet.blogspot.com/

Page 2: MVVMmmmmmmmmmmm

3

Thanks for the slide deck, John Papa

Page 3: MVVMmmmmmmmmmmm

4

Agenda

1. MVVM: What and Why2. Respond to User Actions3. Abstraction

4. Design with Data5. Data Services6. Testing

Page 4: MVVMmmmmmmmmmmm

5

Bookshelf in Action

demo

Page 5: MVVMmmmmmmmmmmm

6

Model View ViewModel

Page 6: MVVMmmmmmmmmmmm

7

Everybody’s doing it!

Page 7: MVVMmmmmmmmmmmm

8

MVVM

View Model

Page 8: MVVMmmmmmmmmmmm

9

MVVM

Model• Domain object• Properties• Model Validation

View

Page 9: MVVMmmmmmmmmmmm

10

MVVM

Model

View• The screen or page or control• User friendly presentation of information• Themes and Styles• User interactions

Page 10: MVVMmmmmmmmmmmm

11

Page 11: MVVMmmmmmmmmmmm

12

ViewModel

MVVM

View Model

Page 12: MVVMmmmmmmmmmmm

13

MVVM

View Model

ViewModel• Glues the View to the Model• Databound to the View

• Properties• Commands• Methods

• Contains the Model• Talks to services and load/save the Model

Page 13: MVVMmmmmmmmmmmm

14

MVVM

Model

View• The screen or page or control• User friendly presentation of information• Themes and Styles• User interactions

• Bindings• Events• Behaviors

ViewModel

Page 14: MVVMmmmmmmmmmmm

15

Benefits of MVVM

Separation of concerns

Data binding (XAML)

Automated testing

Designer and developer symbiosis

Consistent, Maintainable, Scalable

Page 15: MVVMmmmmmmmmmmm

16

MVVM

View(e.g. Person Master/Details)

XAMLCode

Model(e.g. PeopleModel/Person)

ViewModel

Design w/ XAML

Presentation logic

Not reusable

BindingTell View when data changes

Page 16: MVVMmmmmmmmmmmm

17

Binding a View to a ViewModel

ViewModelLocatorINotifyPropertyChanged

demo

Page 17: MVVMmmmmmmmmmmm

18

Responding to User Actions

Page 18: MVVMmmmmmmmmmmm

19

Handling User Actions

Commands•ButtonBase support•ICommand•Toggle IsEnabled (CanExecute)

Behaviors•For other actions•EventToCommand and InvokeCommandAction

Page 19: MVVMmmmmmmmmmmm

20

Commands and Behaviors

demo

Page 20: MVVMmmmmmmmmmmm

21

Services and Separation

Page 21: MVVMmmmmmmmmmmm

22

Services• Perform operations • Reusable tasks

MVVM

View Model

+ Services

MV

VM

ViewModel• Presentation logic• Handle user interaction• Reference Models

Reusable Services

Page 22: MVVMmmmmmmmmmmm

23

Separating the Services

Services provide related tasks to the callerBookDataService, SecurityService, BookEditor

ViewModel uses a Service Passed through the constructor (Dependency Injection)ViewModel can focus on bindings and logic

Easily refactored and testableServices implement an interface

Page 23: MVVMmmmmmmmmmmm

24

Adding Value with Services

BookViewModel talks to services

demo

Page 24: MVVMmmmmmmmmmmm

25

RIA Platforms and MVVM

Page 25: MVVMmmmmmmmmmmm

26

RIA Platforms

Data access and Server communicationsData modeling as Entities (not DTOs) Binding directly to Entities

INPC and INDEIYou get EntityManager/DomainContext

Your gateway to the serverChange tracking

Abstraction through Services

Page 26: MVVMmmmmmmmmmmm

27

DevForce and MVVM

Behind the BookDataService

demo

Page 27: MVVMmmmmmmmmmmm

28

MVVM+ Messaging

MV

VM

MV

VMDirect Message?

Page 28: MVVMmmmmmmmmmmm

29

MVVM+ Messaging

MV

VM

Publish

MV

VM

SubscribeMessaging Service

Confirmation Dialog

Subscribe

EventAggregator Pattern

Page 29: MVVMmmmmmmmmmmm

30

Confirmation Dialog Example

Define a message type (ConfirmationDialogMessage)Send method knows MessengerServiceMessage defines its own payload

Publish message (BookSaver:SaveSuccessful)

Subscribe to message (MainPage:DialogMessageReceived)Subscriber acquires MessengerServiceSubscriber registers action for message

Page 30: MVVMmmmmmmmmmmm

31

Messaging

demo

Page 31: MVVMmmmmmmmmmmm

32

Blendability & Design Time Data

Page 32: MVVMmmmmmmmmmmm

33

Design Time Data What am I looking at?

Isn’t this easier/more productive?

Are my bindings right?How’s my layout?Ah!

Notice I’ve tested my Submit Button Logic

Page 33: MVVMmmmmmmmmmmm

34

Swapping Services

Services won’t run in the Blend and Visual Studio designersNeed design time callsService Providers

If DesignTimeCreate Design Time Services

ElseCreate Regular Services

Page 34: MVVMmmmmmmmmmmm

35

Blendability: Data in the Designer

Service Provider and Design Time ServicesUsing cached sample data - “Self-initializing Fake”

demo

Page 35: MVVMmmmmmmmmmmm

36

Automated Testing

demo

Page 36: MVVMmmmmmmmmmmm

37

Review: Benefits of MVVM

Separation of concerns

Data binding (XAML)

Automated testing

Designer and developer symbiosis

Consistent, Maintainable, Scalable

Page 37: MVVMmmmmmmmmmmm

38

Summary

1. MVVM: What and Why2. Respond to User Actions3. Abstraction

4. Design with Data5. Data Services6. Testing

Page 38: MVVMmmmmmmmmmmm

39

ResourcesWeb:

IdeaBlade: www.ideablade.comBookshelf in DevForce: links.ideablade.com/drc-bookshelfSL Firestarter 2010: links.ideablade.com/firestarter10-mvvm MIX 2010 MVVM: links.ideablade.com/mix10-laurent-mvvm MVVM Light: links.ideablade.com/mvvmlightSL Test Framework: links.ideablade.com/sl-utf

Print:Silverlight 4 Unleashed, Laurent Bugnion