Как вы синхронизируете код на стороне сервера и на стороне клиента? - PullRequest
8 голосов
/ 15 декабря 2009

Что я изучал (и преподаю) в разработке программного обеспечения, так это то, что дублирование кода является корнем всего зла. С другой стороны, мне довольно сложно объяснить, как эту концепцию следует применять при разработке веб-приложений.

Позвольте мне уточнить ... Проверка ввода и данных может быть важной частью веб-приложения. Иногда эта проверка может быть довольно сложной. Например, я работал над редактором головоломки, и проверка состояла в проверке правильности операции или перемещения. Затем нужно было проверить нетривиальные правила.

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

В большинстве случаев код на стороне клиента и на стороне сервера написан на разных языках (например, javascript / Python), поэтому код проверки должен быть написан дважды. Однако в моем единственном опыте работы с GWT / Java (Java с обеих сторон) я обнаружил, что значительная часть кода проверки может быть повторно использована. Казалось, что все стало проще: обслуживание, рефакторинг, отладка ...

Итак, мой вопрос к вам: как вы решаете проблемы, связанные с дублированием кода в проектах, где языки клиента и сервера различаются?

Ответы [ 3 ]

4 голосов
/ 15 декабря 2009

Обычно я обращаюсь с этим, чтобы написать проверочный код на стороне сервера и предоставить его через веб-метод (в .NET аналогичная функциональность существует в большинстве других языков), чтобы его можно было вызывать из javascript. В результате у вас есть один метод, который можно вызывать как синхронно, так и асинхронно со стороны клиента, а также со стороны сервера. Это применимо не во всех случаях, но до сих пор работало очень хорошо для меня.

3 голосов
/ 16 декабря 2009

Как правило, действительно трудно избежать дублирования сгенерированного кода, но общий подход состоит в том, чтобы использовать генератор кода для создания кода на стороне сервера или на стороне клиента, чтобы вы кодировали только половину кода. Самый популярный подход - это написать общий текст на стороне сервера, а затем с помощью генератора кода создать код JavaScript для вас. Например, в нашей компании мы используем язык Coldfusion, и Form-o-matic решает эту проблему для нас. Люди также подошли к проблеме с противоположной стороны, написав JavaScript, который может быть выполнен на стороне сервера. Я бы искал рамки, которые сделают это для вас.

0 голосов
/ 15 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...