Без примитивной одержимости

оложим, у вас есть приложение, которое использует шаблон модели домена, DDD и множество других шаблонов проектирования. Предположим, что у нас есть ряд решений, перечисленных ниже:

Solution.ModelSolution.RepositorySolution.ServicesSolution.PresentationSolution.UI.Web

Слой взаимодействия с пользователем будет Solution.UI.Web, и мы предполагаем, что это будет приложение ASP.NET WebForms. Как вы проводите проверку на стороне клиента?

Есть несколько вещей, которые следует учитывать:

Прежде всего, нам не нужно нажимать на сервер (ы) приложений / баз данных, чтобы вернуть клиенту какие-либо ошибки валидации, однако мы могли бы также реализовать валидацию на стороне сервера, но нам также понадобится валидация на стороне клиента. ,

Во-вторых, мы не хотим реализовывать правила проверки на уровне взаимодействия с пользователем. это потому, что если ваше приложение является WebApp, а затем вы решили создать клиент WinApp, вам придется снова и снова внедрять правила валидации -> кошмар обслуживания.

Одним из простых подходов было бы реализовать логику проверки с использованием объектов ViewModel (плоских представлений объектов вашего домена, которые будут отправлены клиенту), а затем проверить эти объекты перед тем, как попасть на сервер (ы) приложений / баз данных.

Другой подход, который я часто использовал в разных приложениях, заключается в том, чтобы просто создать коллекцию сообщений об ошибках валидации и отправить эту коллекцию клиенту. это нормально, но есть проблема. простое сводное сообщение об ошибках валидации не подойдет, особенно если у вас есть большая форма ввода данных.

Теперь ASP.NET MVC Framework делает жизнь намного проще. Вы можете использовать EF + DataAnnotations, а инфраструктура MVC Scaffolding может сделать большую часть работы за вас. но это тот случай, если вы хотите создать приложение MVC и реализовать логику проверки с помощью jQuery и JavaScript.

Но что, если вам нужен более общий подход для реализации инфраструктуры валидации, которая может использоваться и использоваться в различных приложениях, например, WinForms и WebForms?

Просто чтобы уточнить, что я ищу, это набор шаблонов / принципов и / или методик / структур проектирования для реализации структуры валидации, которая может быть реализована в вашей доменной модели и затем применена в ваших клиентских приложениях. И я не хочу просто возвращать коллекцию сообщений об ошибках строк о нарушенных правилах или о чем-либо еще, я хочу иметь возможность обновлять свои связанные с данными элементы управления (TextBox, ComboBox, DateTimePicker и т. Д.) При сбое проверки, чтобы слой пользовательского опыта будет более интуитивно понятным (если хотите).

Я видел некоторые реализации и фреймворки здесь и там, и некоторое время я уже использовал клиентскую проверку ASP.NET MVC, поэтому мой ответ не имеет ничего общего с проверкой MVC или JavaScript.

Ответы на вопрос(3)

Ваш ответ на вопрос