.NET WebAPI-сервис — как организовать модели данных?
Как лучше всего организовать хранение моделей данных в клиент-серверном приложении, где сервер выполнен по технологии WebAPI? На сервере и клиенте хранить локальные версии моделей данных? Или использовать общую сборку с моделями данных для клиента и сервера? В WCF с этим нет особых проблем, модели "приходят" вместе с ссылкой на сервис, с WebAPI не ясно, как обеспечить целостность моделей клиента и сервера.
Если разработкой клиента занимаетесь вы же, то теоретически модели можете в отдельную сборку положить и включать ее в серверный проект и в проект клиентский. Если же клиенты у вас будут чужие дяди и тети, то возможно вам не захочется свою сборку им показывать. А возможно они не захотят клиентскую часть делать на .NET C#.
Matisumi, а разве в жизни бывает по другому? Плохая практика, это когда код сильносвязанный, или когда зависимости циклические.
Просто в данном случае, когда модели в отдельной сборке доступны чужим людям, у них появляется возможность увидеть чуть больше, нежели вы им хотели бы показать. Потому что если вы реализуете модели рекомендованным Microsoft способом, то возможно будете использовать атрибуты валидации или ограничения значений на их свойствах.
Ну и как свидетельствует мой опыт, модели, значения которых отображаются в перманентное хранилище (базу данных) через ORM (EntityFramework например), могут достаточно сильно отличаться от моделей, которые экспозируются конечному потребителю сервиса. В таком случае возникают DTO (data transfer object) модели, которые собственно и видит конечный потребитель, а что там на самом деле в Persisted модели, которая у вас в базе лежит он не в полной мере представляет.