object-2-object mapping, как приправа к вашему проекту

27
OBJECT-TO-OBJECT MAPPING © OLEKSII DUKHNO @ LOHIKA SYSTEMS

Upload: alex-tumanoff

Post on 28-Dec-2014

3.613 views

Category:

Technology


3 download

DESCRIPTION

"Object-2-Object mapping, как приправа к вашему проекту" by Алик Духно

TRANSCRIPT

Page 1: Object-2-Object mapping, как приправа к вашему проекту

OBJECT-T

O-OBJE

CT

MAPPIN

G

© O L E K S I I D U K H N O @ L O H I K A S Y S T E M S

Page 2: Object-2-Object mapping, как приправа к вашему проекту

COMPLEXITY OF SOFTWARE

Page 3: Object-2-Object mapping, как приправа к вашему проекту

ABSTRACTIONS AND MODEL

Page 4: Object-2-Object mapping, как приправа к вашему проекту

ABSTRACTIONS AND MODEL

Модель представ ляет собой специально отобранный и сознательно упрощенный запас знаний (набор данных) Представленный в структу рированной форме.

Page 5: Object-2-Object mapping, как приправа к вашему проекту

DDD AS THE TOOL

Page 6: Object-2-Object mapping, как приправа к вашему проекту

DTO AND VIEW MODEL

DTO• Model data only

View Model• Model data and behavioral

aspects

Page 7: Object-2-Object mapping, как приправа к вашему проекту

WHY USING O-2-O WITH DDD?

Layers are independent

Code aligning

Flattening logic encapsulation

Page 8: Object-2-Object mapping, как приправа к вашему проекту

RESULTS USING DDD WITH O-2-O ?

Neater code

Simpler support

Better understanding

Page 9: Object-2-Object mapping, как приправа к вашему проекту

SAMPLES - DATA LAYER

Page 10: Object-2-Object mapping, как приправа к вашему проекту

SAMPLES – SERVICE LAYER

Page 11: Object-2-Object mapping, как приправа к вашему проекту

SAMPLES – APPLICATION LAYER

Page 12: Object-2-Object mapping, как приправа к вашему проекту

MODELS, DATA TRANSFER OBJECTS AND VIEW MODELS

Page 13: Object-2-Object mapping, как приправа к вашему проекту

HOME-GROWN OVER “OPERATOR” KEYWORD

Code template:• public static implicit operator DTO_Type ( Entity_Type

entity)

Open sample

Page 14: Object-2-Object mapping, как приправа к вашему проекту

HOME-GROWN OVER EXTENSION METHODS

Code template:• public static DTO_Type ToDTO ( this Entity_Type photo

)

Open sample

Page 15: Object-2-Object mapping, как приправа к вашему проекту

HOME-GROWN OVER SEPARATE CLASS

Instructions:• Define static or singleton class• Implement conversion methods explicitly

Open sample

Page 16: Object-2-Object mapping, как приправа к вашему проекту

EMIT MAPPER KEY SUFFICIENCIES

Fast (close to hand written code)

Supports mono

Pretty extensible

Page 17: Object-2-Object mapping, как приправа к вашему проекту

EMIT OBJECT MAPPERS

Page 18: Object-2-Object mapping, как приправа к вашему проекту

EMIT MAPPERS FACTORY

Page 19: Object-2-Object mapping, как приправа к вашему проекту

EMIT MAPPER CONFIGURATION

Page 20: Object-2-Object mapping, как приправа к вашему проекту

EMIT MAPPER

Standard

Custom converter

Post processing

Custom configurator

Page 21: Object-2-Object mapping, как приправа к вашему проекту

OTIS

Metadata 

Configuration file

Custom mapping providers

Page 22: Object-2-Object mapping, как приправа к вашему проекту

OTIS

Metadata 

Configuration file

Custom mapping providers

No DateTime and nullable value types support!

Page 23: Object-2-Object mapping, как приправа к вашему проекту

AUTOMAPPER

Mapping Through

Convention

Source/Destination Properties Names Convention

Mapping Through

Configuration

Projection

Type Converter

Value Resolver

Ignore

Test Mapping

Validate Configurati

on

Page 24: Object-2-Object mapping, как приправа к вашему проекту

USING AUTOMAPPER IN THE ALLOCINE-CMS

Page 25: Object-2-Object mapping, как приправа к вашему проекту

USING AUTOMAPPER IN THE ALLOCINE-CMS

Page 26: Object-2-Object mapping, как приправа к вашему проекту

THE OTHERS OPTIONS

Entities to DTOs

T4 templates – To be continued

Page 27: Object-2-Object mapping, как приправа к вашему проекту

MAPPERS SUMMARY TABLE

/// Style Facade

Speed

Open Source

Reliability

Silverlight

Manuals

Cost

Emit Mapp

er

Procedural

No The Best

Yes Low Yes Poor Mid

Auto Mapp

er

Object Oriented

Yes Good Yes High Yes Good Low

Home-

grown

Any Depends

Depends

Could be

Depends Yes Depends High