У меня есть серьезные сомнения по поводу дизайна для моего веб-приложения.
Я хотел отделить бизнес-логику от интерфейса, поэтому я создал Web API, который обрабатывает все запросы к базе данных.
Это ASP.NET Web API с платформой Entity, единицей работы и общим шаблоном хранилища. Пока все хорошо.
ПРОБЛЕМА
Там, где мне нужна помощь, я не могу найти эффективный способ обмена объектами между API и приложением.
Я не хочу напрямую сериализовать объект-сущность, я подумал, что это будет плохой практикой, потому что, если модель сущности изменится, я могу закончить сериализацию больших объектов без всякой причины.
Как это реализовано сейчас
Поскольку мой интерфейс - это веб-приложение ASP.NET в C #, а мой API - в C #, я создал общую библиотеку с определением всех моих классов, которыми я хочу поделиться между ними.
Я знаю, что решение не будет работать, когда я буду разрабатывать приложение для Android, мне придется снова создавать свои классы на Java, но это не самая большая проблема.
Проблема в том, что я чувствую, что я всегда конвертирую свои объекты.
ПРИМЕР
Вот пример моего рабочего процесса:
Я начну с модели со всеми объектами и аннотациями данных для моей формы, затем пользователь отправит эту модель в контроллер.
В контроллере я должен преобразовать эту модель в класс в моей общей библиотеке, а затем отправить этот объект в мой API.
Затем контроллер в моем API перехватывает вызов и преобразует этот объект в объект сущности для обновления базы данных.
Итак, у меня есть 3 класса
- Модель для представления со всей аннотацией данных для проверки (Клиент)
- Общие библиотеки классов для совместного использования объектов (DLL)
- Классы сущностей (API)
У меня такое чувство, что я делаю что-то действительно неправильно. Есть ли что-то более элегантное? Я хотел бы убедиться, что у меня есть хорошее решение этой проблемы, прежде чем проект станет слишком большим.