Егор Тафланиди (Redmadrobot)
Доклад будет включать в себя рассмотрения стека бизнес-логики, построенного с помощью автоматически сгенерированного кода, и сопряжение этого стека с сервером по всем REST'овым правилам. Вилка к розетке
12. - ORM вычитывает объект из базы
- DAO транслирует ORM-объект в POJO
Сервер
09
СТРУКТУРА: ПУТЕШЕСТВИЕ ENTITY
User
• id
• name
• surname
ORM
Database
DAO
ORM Object
Business
Logic
Object
13. Сервер
10
User
• id
• name
• surname
Business
Logic
Serialiser
Object
Transport
DT Object
- ORM вычитывает объект из базы
- DAO транслирует ORM-объект в POJO
- Бизнес-логика транслирует POJO в DTO
СТРУКТУРА: ПУТЕШЕСТВИЕ ENTITY
14. Сервер
11
User
• id
• name
• surname
Transport HTTP
JSON
Mobile
App
JSON
…
- ORM вычитывает объект из базы
- DAO транслирует ORM-объект в POJO
- Бизнес-логика транслирует POJO в DTO
- Транспорт транслирует DTO в JSON
- JSON передаётся на фронт
СТРУКТУРА: ПУТЕШЕСТВИЕ ENTITY
18. Протокол
15
RESOURCE
Resource R is a temporally varying membership
function MR(t), which for time t
maps to a set of entities
/ Representational State Transfer, dissertation /
http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
20. Протокол
16
ENTITY & WEB SERVICE
: REntity
POST /entities
GET /entities
GET /entities/{id}
PATCH /entities/{id}
DELETE /entities/{id}
/entities
(resource)
Entity
• id { get set }
25. Мобильное приложение
- Тип данных = ключевая сущность
- Разница в логике = набор полей
21
SERVICE-ORIENTED ARCHITECTURE
Entity
ORM
Database
DAO
Business
Logic
Serialiser
Transport
…
62. 05
Parser
- Наличие объекта = наличие всех его обязательных
полей
- Для пользователя ошибки «парсер не смог
распознать данные» и «данные не пришли» будут
иметь одинаковые последствия
- Не стоит городить непробиваемую «оборону»
- Приложению нужны объекты, а не топология
BLIND
90. 17
DAO
- Взаимодействие с DAO посредством
модельных объектов (Entity : NSObject) => изоляция
- Инжектируемость
- Потокобезопасность
- «Соединение» с базой данных
- Транзакционность
ИДЕОЛОГИЯ
100. 26
Service
- Инстанциирование утилит (?)
- Набор виртуальных конструкторов
- Координация данных между утилитами
- Многопоточность, инстанциирование операций
- Асинхронный интерфейс для верхнего слоя UI
ОТВЕТСТВЕННОСТЬ