Как Вы синхронизируете серверную сторону и клиентский код?

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

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

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

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

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

8
задан benzado 15 December 2009 в 21:29
поделиться

3 ответа

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

3
ответ дан 5 December 2019 в 21:19
поделиться

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

4
ответ дан 5 December 2019 в 21:19
поделиться

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

0
ответ дан 5 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: