Предположим, у вас есть приложение, которое использует шаблон модели домена, DDD и множество других шаблонов проектирования. предположим, что у нас есть ряд решений, перечисленных ниже:
- Solution.Model
- Solution.Repository
- Solution.Services
- Solution.Presentation
- Solution.UI.Web
Уровень взаимодействия с пользователем будет Solution.UI.Web, и мы будем предполагать, что это будет приложение ASP.NET WebForms. Как вы применяете проверку на стороне клиента?
Есть несколько вещей, которые следует учитывать:
Прежде всего, нам не нужно нажимать на сервер (ы) приложений / баз данных, чтобы вернуть клиенту какие-либо ошибки проверки, однако мы могли бы также реализовать проверку на стороне сервера, но нам понадобится сторона на стороне клиента проверка также.
Во-вторых, мы не хотим реализовывать правила проверки на уровне взаимодействия с пользователем. это потому, что если ваше приложение является WebApp, а затем вы решили создать клиент WinApp, вам придется снова и снова внедрять правила проверки -> кошмар обслуживания.
Одним из простых подходов было бы реализовать логику проверки с использованием объектов ViewModel (плоских представлений объектов вашего домена, которые будут отправлены клиенту), а затем проверять эти объекты перед попаданием на серверы приложений / баз данных.
Другой подход, который я видел много раз в разных приложениях, заключается в том, чтобы просто создать коллекцию сообщений об ошибках валидации и отправить эту коллекцию клиенту. это нормально, но есть проблема. простое сводное сообщение об ошибках валидации не подойдет, особенно если у вас большая форма ввода данных.
Теперь инфраструктура ASP.NET MVC значительно упрощает жизнь. Вы можете использовать EF + DataAnnotations, а инфраструктура MVC Scaffolding может сделать большую часть работы за вас. но это тот случай, если вы хотите создать приложение MVC и реализовать логику валидации с помощью jQuery и JavaScript.
Но что, если вам нужен более общий подход для реализации инфраструктуры проверки, которая может использоваться и использоваться в различных приложениях, например, WinForms и WebForms?
Просто чтобы уточнить, что мне нужно, это набор шаблонов / принципов и / или методик / структур проектирования для реализации структуры валидации, которая может быть реализована с использованием вашей доменной модели и затем применена в ваших клиентских приложениях. И я не хочу просто возвращать коллекцию сообщений об ошибках строк о нарушенных правилах или о чем-либо еще, я хочу иметь возможность обновлять свои связанные с данными элементы управления (TextBox, ComboBox, DateTimePicker и т. Д.) При сбое проверки, чтобы слой пользовательского опыта будет более интуитивным (если хотите).
Я видел некоторые реализации и фреймворки здесь и там, и некоторое время я использовал проверку на стороне клиента ASP.NET MVC, поэтому мой ответ не имеет ничего общего с проверкой MVC или JavaScript.