object-2-object mapping, как приправа к вашему проекту
DESCRIPTION
"Object-2-Object mapping, как приправа к вашему проекту" by Алик ДухноTRANSCRIPT
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
COMPLEXITY OF SOFTWARE
ABSTRACTIONS AND MODEL
ABSTRACTIONS AND MODEL
Модель представ ляет собой специально отобранный и сознательно упрощенный запас знаний (набор данных) Представленный в структу рированной форме.
DDD AS THE TOOL
DTO AND VIEW MODEL
DTO• Model data only
View Model• Model data and behavioral
aspects
WHY USING O-2-O WITH DDD?
Layers are independent
Code aligning
Flattening logic encapsulation
RESULTS USING DDD WITH O-2-O ?
Neater code
Simpler support
Better understanding
SAMPLES - DATA LAYER
SAMPLES – SERVICE LAYER
SAMPLES – APPLICATION LAYER
MODELS, DATA TRANSFER OBJECTS AND VIEW MODELS
HOME-GROWN OVER “OPERATOR” KEYWORD
Code template:• public static implicit operator DTO_Type ( Entity_Type
entity)
Open sample
HOME-GROWN OVER EXTENSION METHODS
Code template:• public static DTO_Type ToDTO ( this Entity_Type photo
)
Open sample
HOME-GROWN OVER SEPARATE CLASS
Instructions:• Define static or singleton class• Implement conversion methods explicitly
Open sample
EMIT MAPPER KEY SUFFICIENCIES
Fast (close to hand written code)
Supports mono
Pretty extensible
EMIT OBJECT MAPPERS
EMIT MAPPERS FACTORY
EMIT MAPPER CONFIGURATION
EMIT MAPPER
Standard
Custom converter
Post processing
Custom configurator
OTIS
Metadata
Configuration file
Custom mapping providers
OTIS
Metadata
Configuration file
Custom mapping providers
No DateTime and nullable value types support!
AUTOMAPPER
Mapping Through
Convention
Source/Destination Properties Names Convention
Mapping Through
Configuration
Projection
Type Converter
Value Resolver
Ignore
Test Mapping
Validate Configurati
on
USING AUTOMAPPER IN THE ALLOCINE-CMS
USING AUTOMAPPER IN THE ALLOCINE-CMS
THE OTHERS OPTIONS
Entities to DTOs
T4 templates – To be continued
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