SUGCON 2015 Modelling

69
Glass V4, More Info For Your Solution Mike Edwards Glass @mikeedwards83 @glasslu Sitecore User Group Conference 2015 1

Transcript of SUGCON 2015 Modelling

Page 1: SUGCON 2015 Modelling

Glass V4, More Info For Your Solution

Mike Edwards Glass

@mikeedwards83@glasslu

Sitecore User Group Conference 2015 1

Page 2: SUGCON 2015 Modelling

Glass V4, More Info For Your Solution

ModelingMike Edwards Glass

@mikeedwards83@glasslu

Sitecore User Group Conference 2015 2

Page 3: SUGCON 2015 Modelling

Hello!

Sitecore User Group Conference 2015 3

Mike EdwardsSitecore MVP@mikeedwards83@glasslu

Page 4: SUGCON 2015 Modelling

Modelling

Sitecore User Group Conference 2015 4

NOT THIS KIND

Page 5: SUGCON 2015 Modelling

Modelling

Sitecore User Group Conference 2015 5

THIS KIND

Page 6: SUGCON 2015 Modelling

Modelling

• Different Patterns• Common Mistakes• Techniques

Sitecore User Group Conference 2015 6

Page 7: SUGCON 2015 Modelling

Common Patterns

• Active Record• Data Mapping• Wrapping

Sitecore User Group Conference 2015 7

Page 8: SUGCON 2015 Modelling

Active Record Pattern

In software engineering, the active record pattern is an architectural pattern found in software that stores in-memory object data in relational databases. The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete.

- Wiki, Martin Fowler

Sitecore User Group Conference 2015 8

Page 9: SUGCON 2015 Modelling

Active Record Pattern

Sitecore User Group Conference 2015 9

The Example

Page 10: SUGCON 2015 Modelling

Active Record Pattern - Pro’s

Simple to use:

Sitecore User Group Conference 2015 10

Page 11: SUGCON 2015 Modelling

Active Record Pattern - Pro’s

Simple to pass around:

Sitecore User Group Conference 2015 11

Page 12: SUGCON 2015 Modelling

Hidden side effects:

Active Record Pattern - Con’s

Sitecore User Group Conference 2015 12

Surprise!!Pointless

Page 13: SUGCON 2015 Modelling

Active Record Pattern - Cons

Coupled to data source:

Sitecore User Group Conference 2015 13

Page 14: SUGCON 2015 Modelling

Active Record Pattern - Con’s

Complex:

Sitecore User Group Conference 2015 14

Page 15: SUGCON 2015 Modelling

Active Record Pattern - Con’s

Hard to test:

Sitecore User Group Conference 2015 15

How do we mock this??

Ask the FakeDBGuys

Page 16: SUGCON 2015 Modelling

Data Mapper Pattern

Data Mapper is a Data Access Layer that performs bidirectional transfer of data between a persistent data store (often a relational database) and an in memory data representation (the domain layer). The goal of the pattern is to keep the in memory representation and the persistent data store independent of each other and the data mapper itself.

- Wiki, Martin FowlerSitecore User Group Conference 2015 16

Page 17: SUGCON 2015 Modelling

Data Mapper Pattern

Sitecore User Group Conference 2015 17

The Example

Page 18: SUGCON 2015 Modelling

Data Mapper Pattern

Sitecore User Group Conference 2015 18

The Example

Page 19: SUGCON 2015 Modelling

Data Mapper Pattern

Sitecore User Group Conference 2015 19

The Example

Page 20: SUGCON 2015 Modelling

Data Mapper Pattern

Simple Models

Sitecore User Group Conference 2015 20

Page 21: SUGCON 2015 Modelling

Data Mapper Pattern - Pro’s

Easy Testing

Sitecore User Group Conference 2015 21

Page 22: SUGCON 2015 Modelling

Data Mapper Pattern - Pro’s

Clear Separation

Sitecore User Group Conference 2015 22

My World Their World

Page 23: SUGCON 2015 Modelling

Data Mapper Pattern - Pro’s

Store Anywhere

Sitecore User Group Conference 2015 23

Page 24: SUGCON 2015 Modelling

Data Mapper Pattern - Pro’s

Clear Control

Sitecore User Group Conference 2015 24

Hello!!

Page 25: SUGCON 2015 Modelling

Data Mapper Pattern - Con’s

Map Unused Data

Sitecore User Group Conference 2015 25

Page 26: SUGCON 2015 Modelling

Data Mapper Pattern - Con’s

Expensive Upfront

Sitecore User Group Conference 2015 26

Page 27: SUGCON 2015 Modelling

Data Mapper Pattern - Con’s

Disconnection from source

Sitecore User Group Conference 2015 27

Where the hell did youcome from?

Page 28: SUGCON 2015 Modelling

Wrappers Models

Wraps the underlying data source and converts the data on demand. The internal model contains a reference to the original data source which it uses to perform data conversion.

Sitecore User Group Conference 2015 28

Page 29: SUGCON 2015 Modelling

Wrappers Models

Sitecore User Group Conference 2015 29

Page 30: SUGCON 2015 Modelling

Wrappers Models - Pro’s

Cheap Up Front

Sitecore User Group Conference 2015 30

No work done here!

Only accessed propertiesrequire conversion.

Page 31: SUGCON 2015 Modelling

Wrappers Models - Pro’s

Hidden State Changes

Sitecore User Group Conference 2015 31

What happens if this changes

Page 32: SUGCON 2015 Modelling

Wrappers Models - Pro’s

Hidden State Changes

Sitecore User Group Conference 2015 32

Are these the same?

Page 33: SUGCON 2015 Modelling

Wrappers Models - Con’s

Testing Difficulty

Sitecore User Group Conference 2015 33

Can’t test becauseof this.

Have to write data conversion code

Need to understandthis

Page 34: SUGCON 2015 Modelling

Wrappers Models - Meet my partner

Coupling

Sitecore User Group Conference 2015 34

I ask for this

Page 35: SUGCON 2015 Modelling

Wrappers Models - Meet my partner

Coupling

Sitecore User Group Conference 2015 35

I get this

Page 36: SUGCON 2015 Modelling

Common Problems

• Anemic domain model • Bloated domain model• Skinny domain model• Indiscreet domain model

Sitecore User Group Conference 2015 36

Page 37: SUGCON 2015 Modelling

Anemic Domain Model

Anemic domain model is the use of a software domain model where the domain objects contain little or no business logic (validations, calculations, business rules etc).

- Wiki, Martin Fowler

Sitecore User Group Conference 2015 37

Page 38: SUGCON 2015 Modelling

Anemic Domain Model - Example

Sitecore User Group Conference 2015 38

Feed Me!!

Page 39: SUGCON 2015 Modelling

Anemic Domain Model

Sitecore User Group Conference 2015 39

Page 40: SUGCON 2015 Modelling

Bloated Domain Model

A Bloated Domain Model is the use of a software domain model that contains a large number of properties that are never access or required by the application.

- Mike E

Sitecore User Group Conference 2015 40

Page 41: SUGCON 2015 Modelling

Bloated Domain Model

Sitecore User Group Conference 2015 41

Page 42: SUGCON 2015 Modelling

Bloated Domain Model

Fixed

Sitecore User Group Conference 2015 42

Page 43: SUGCON 2015 Modelling

Skinny Domain Model

A Skinny Domain Model is the use of a software domain model that contains one or very few properties.

- Mike

Sitecore User Group Conference 2015 43

Page 44: SUGCON 2015 Modelling

Skinny Domain Model

Skinny Domain model

Sitecore User Group Conference 2015 44

Page 45: SUGCON 2015 Modelling

Skinny Domain Model

Fixed

Sitecore User Group Conference 2015 45

USE THE RAW API!

Page 46: SUGCON 2015 Modelling

Indiscreet Domain Model

A Indiscreet Domain Model is the use of a software domain model that exposes all it’s properties publically even if they should or should not be accessed by external code.

- Mike E

Sitecore User Group Conference 2015 46

Page 47: SUGCON 2015 Modelling

Indiscreet Domain Model

Sitecore User Group Conference 2015 47

Page 48: SUGCON 2015 Modelling

Indiscreet Domain Model

Fixed

Sitecore User Group Conference 2015 48

Page 49: SUGCON 2015 Modelling

Techniques

Sitecore User Group Conference 2015 49

• Interface Models• Template Models• Rendering Models• MVC• MVP

Page 50: SUGCON 2015 Modelling

Interface Models

Sitecore User Group Conference 2015 50

Domain models defined using interfaces only. Interface are dynamically implemented at run time using a proxy framework.

Page 51: SUGCON 2015 Modelling

Interface Models

Sitecore User Group Conference 2015 51

Page 52: SUGCON 2015 Modelling

Interface Models

• Multiple Inheritance• Very little code

• Often Anemic• Indiscreet

Sitecore User Group Conference 2015 52

Page 53: SUGCON 2015 Modelling

Interface Models

Sitecore User Group Conference 2015 53

Spoofing Logic

Page 54: SUGCON 2015 Modelling

Template Models

Sitecore User Group Conference 2015 54

Page 55: SUGCON 2015 Modelling

Template Models

• Code generation friendly• Easy to sync• Bloated• Indiscreet• Anemic

Sitecore User Group Conference 2015 55

Page 56: SUGCON 2015 Modelling

Rendering Models

Sitecore User Group Conference 2015 56

Page 57: SUGCON 2015 Modelling

Rendering Models

• Use case specific• Minimum number of properties• Custom methods• Model explosion• Magic Properties Problem• Skinny

Sitecore User Group Conference 2015 57

Page 58: SUGCON 2015 Modelling

MVC Models

Model–view–controller (MVC) is a software architectural pattern for implementing user interfaces. It divides a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.

- - WikiSitecore User Group Conference 2015 58

Page 59: SUGCON 2015 Modelling

MVC Models

What do we pass to the view?

Sitecore User Group Conference 2015 59

Page 60: SUGCON 2015 Modelling

MVC Models

The View Model• Explicitly defines the contract• Easy to expand• Use convention• Separates Domain from View

Sitecore User Group Conference 2015 60

Page 61: SUGCON 2015 Modelling

MVC Models

Sitecore User Group Conference 2015 61

Easy to find

Page 62: SUGCON 2015 Modelling

MVC Models

Sitecore User Group Conference 2015 62

Easy to identify!

Page 63: SUGCON 2015 Modelling

And don’t forget MVP!

MVP is a user interface architectural pattern engineered to facilitate automated unit testing and improve the separation of concerns in presentation logic.

- Wiki

Sitecore User Group Conference 2015 63

Page 64: SUGCON 2015 Modelling

MVP

Sitecore User Group Conference 2015 64

Page 65: SUGCON 2015 Modelling

MVP is similar to MVC

Sitecore User Group Conference 2015 65

Page 66: SUGCON 2015 Modelling

MVP or MVC?

Sitecore User Group Conference 2015 66

Page 67: SUGCON 2015 Modelling

Finished!!Questions?

Sitecore User Group Conference 2015 67

Page 68: SUGCON 2015 Modelling

68

Find Me:

Sitecore User Group Conference 2015 68

Mike EdwardsSitecore MVP

@mikeedwards83@glasslu

[email protected]

Page 69: SUGCON 2015 Modelling

[Reserved for sponsor logo’s]

Sitecore User Group Conference 2015 69

Sitecore User Group Conference 2015 69

Thank you