@glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User...

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

Transcript of @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User...

Page 1: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Glass V4, More Info For Your Solution

Mike Edwards

Glass

@mikeedwards83

@glasslu

Sitecore User Group Conference 2015 1

Page 2: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Glass V4, More Info For Your Solution

ModelingMike Edwards

Glass

@mikeedwards83

@glasslu

Sitecore User Group Conference 2015 2

Page 3: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Hello!

Sitecore User Group Conference 2015 3

Mike EdwardsSitecore MVP@mikeedwards83@glasslu

Page 4: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Modelling

Sitecore User Group Conference 2015 4

NOT THIS KIND

Page 5: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Modelling

Sitecore User Group Conference 2015 5

THIS KIND

Page 6: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Modelling

• Different Patterns

• Common Mistakes

• Techniques

Sitecore User Group Conference 2015 6

Page 7: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Common Patterns

• Active Record

• Data Mapping

• Wrapping

Sitecore User Group Conference 2015 7

Page 8: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern

Sitecore User Group Conference 2015 9

The Example

Page 10: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern - Pro’s

Simple to use:

Sitecore User Group Conference 2015 10

Page 11: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern - Pro’s

Simple to pass around:

Sitecore User Group Conference 2015 11

Page 12: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Hidden side effects:

Active Record Pattern - Con’s

Sitecore User Group Conference 2015 12

Surprise!!Pointless

Page 13: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern - Cons

Coupled to data source:

Sitecore User Group Conference 2015 13

Page 14: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern - Con’s

Complex:

Sitecore User Group Conference 2015 14

Page 15: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Active Record Pattern - Con’s

Hard to test:

Sitecore User Group Conference 2015 15

How do we mock this??

Ask the FakeDBGuys

Page 16: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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 Fowler

Sitecore User Group Conference 2015 16

Page 17: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern

Sitecore User Group Conference 2015 17

The Example

Page 18: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern

Sitecore User Group Conference 2015 18

The Example

Page 19: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern

Sitecore User Group Conference 2015 19

The Example

Page 20: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern

Simple Models

Sitecore User Group Conference 2015 20

Page 21: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Pro’s

Easy Testing

Sitecore User Group Conference 2015 21

Page 22: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Pro’s

Clear Separation

Sitecore User Group Conference 2015 22

My World Their World

Page 23: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Pro’s

Store Anywhere

Sitecore User Group Conference 2015 23

Page 24: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Pro’s

Clear Control

Sitecore User Group Conference 2015 24

Hello!!

Page 25: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Con’s

Map Unused Data

Sitecore User Group Conference 2015 25

Page 26: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Con’s

Expensive Upfront

Sitecore User Group Conference 2015 26

Page 27: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Data Mapper Pattern - Con’s

Disconnection from source

Sitecore User Group Conference 2015 27

Where the hell did youcome from?

Page 28: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models

Sitecore User Group Conference 2015 29

Page 30: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models - Pro’s

Cheap Up Front

Sitecore User Group Conference 2015 30

No work done here!

Only accessed propertiesrequire conversion.

Page 31: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models - Pro’s

Hidden State Changes

Sitecore User Group Conference 2015 31

What happens if this changes

Page 32: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models - Pro’s

Hidden State Changes

Sitecore User Group Conference 2015 32

Are these the same?

Page 33: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models - Meet my partner

Coupling

Sitecore User Group Conference 2015 34

I ask for this

Page 35: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Wrappers Models - Meet my partner

Coupling

Sitecore User Group Conference 2015 35

I get this

Page 36: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Common Problems

• Anemic domain model

• Bloated domain model

• Skinny domain model

• Indiscreet domain model

Sitecore User Group Conference 2015 36

Page 37: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Anemic Domain Model - Example

Sitecore User Group Conference 2015 38

Feed Me!!

Page 39: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Anemic Domain Model

Sitecore User Group Conference 2015 39

Page 40: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Bloated Domain Model

Sitecore User Group Conference 2015 41

Page 42: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Bloated Domain Model

Fixed

Sitecore User Group Conference 2015 42

Page 43: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Skinny Domain Model

Skinny Domain model

Sitecore User Group Conference 2015 44

Page 45: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Skinny Domain Model

Fixed

Sitecore User Group Conference 2015 45

USE THE RAW API!

Page 46: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Indiscreet Domain Model

Sitecore User Group Conference 2015 47

Page 48: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Indiscreet Domain Model

Fixed

Sitecore User Group Conference 2015 48

Page 49: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Techniques

Sitecore User Group Conference 2015 49

• Interface Models

• Template Models

• Rendering Models

• MVC

• MVP

Page 50: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Interface Models

Sitecore User Group Conference 2015 51

Page 52: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Interface Models

• Multiple Inheritance

• Very little code

• Often Anemic

• Indiscreet

Sitecore User Group Conference 2015 52

Page 53: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Interface Models

Sitecore User Group Conference 2015 53

Spoofing Logic

Page 54: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Template Models

Sitecore User Group Conference 2015 54

Page 55: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Template Models

• Code generation friendly

• Easy to sync

• Bloated

• Indiscreet

• Anemic

Sitecore User Group Conference 2015 55

Page 56: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Rendering Models

Sitecore User Group Conference 2015 56

Page 57: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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.

- - Wiki

Sitecore User Group Conference 2015 58

Page 59: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVC Models

What do we pass to the view?

Sitecore User Group Conference 2015 59

Page 60: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVC Models

Sitecore User Group Conference 2015 61

Easy to find

Page 62: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVC Models

Sitecore User Group Conference 2015 62

Easy to identify!

Page 63: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

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: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVP

Sitecore User Group Conference 2015 64

Page 65: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVP is similar to MVC

Sitecore User Group Conference 2015 65

Page 66: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

MVP or MVC?

Sitecore User Group Conference 2015 66

Page 67: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

Finished!!

Questions?

Sitecore User Group Conference 2015 67

Page 68: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

68

Find Me:

Sitecore User Group Conference 2015 68

Mike EdwardsSitecore MVP

@mikeedwards83@glasslu

[email protected]

Page 69: @glasslu @mikeedwards83 Glass V4, More Info For Your Glass ... 2015 - Glass V… · Sitecore User Group Conference 2015 1. Glass V4, More Info For Your Solution Modeling Mike Edwards

[Reserved for sponsor logo’s]

Sitecore User Group Conference 2015 69

Sitecore User Group Conference 2015 69

Thank you