Я испытал следующий сценарий в большинстве приложений веб-сервисов, над которыми я работал:
- Мы создаем модель домена (на C #). Это сердце приложения. Модель предметной области содержит бизнес-правила и правила проверки, которые определяют, при каких условиях объект действителен или нет.
- Мы создаем слой «веб-службы» (в C # / WCF). Этот уровень определяет объекты, подобные DTO, которые предоставляются веб-службами. Объекты, подобные DTO, нарезаются и собираются из частей сущностей домена, как правило, крупнозернистым способом.
- В веб-клиенте (JavaScript и HTML) правила проверки дублируются в другом формате, обычно это некоторая форма проверки JavaScript.
Каким образом правила проверки, прикрепленные к частям объектов домена, могут быть представлены клиенту через веб-службы? Причина этого в том, что правила проверки модели предметной области должны быть определены один раз, а затем быть доступны клиентам-потребителям в некотором формате во всей остальной системе.
Единственное решение, которое я придумал до сих пор, - это сделать правила проверки из домена доступными в какой-либо форме метаданных, определенных в XML, JSON или аналогичных. Большая проблема заключается в том, что схемы между DTO уровня сервиса и объектами домена различаются, и поэтому правила проверки домена не могут быть напрямую отправлены веб-клиенту - клиент работает с другой схемой и моделью домена.
Поэтому мой вопрос: Какой подход требует наименьшего количества ручного и дублированного кода, который сопоставляется между различными схемами и слоями в приложении, но позволяет всему интерпретировать правила проверки?