Перемещение всей логики пользовательского интерфейса на клиентскую сторону?

9

Наша команда изначально состояла в основном из разработчиков на стороне сервера с минимальным опытом работы с Javascript. В ASP.NET мы использовали для написания большого количества логики пользовательского интерфейса в программном коде или в последнее время через контроллеры в MVC.

Некоторое время назад к нашей команде присоединились 2 высококлассных разработчика на стороне клиента. Они могут делать в HTMl / CSS / Javascript практически все, что мы могли ранее делать с серверным кодом и серверными веб-элементами управления:

  • Показать / скрыть элементы управления
  • Сделать проверку
  • Контроль AJAX освежает

Поэтому я начал думать, что, возможно, было бы эффективнее просто создать API высокого уровня на основе нашей бизнес-логики, наподобие Amazon Fulfillment API: http://docs.amazonwebservices.com/fws/latest/APIReference/ , чтобы клиент сторонние разработчики полностью переняли бы пользовательский интерфейс, в то время как разработчики на стороне сервера сосредоточились бы только на бизнес-логике.

Таким образом, для заказа системы вы должны иметь API высокого уровня, например:

OrderService.asmx

CreateOrderResponse CreateOrder(CreateOrderRequest)
AddOrderItem
AddPayment
-
SubmitPayment
-
GetOrderByID
FindOrdersByCriteria
...

Будет доступ к API через JSON / REST, поэтому его будет легко использовать из клиентского интерфейса. Мы могли бы использовать этот API как для разработки внутреннего пользовательского интерфейса, так и для сторонних разработчиков при создании собственных приложений.

С достижениями в Javascript и доступностью хороших разработчиков на стороне клиента, это хорошее время, чтобы избавиться от кода и контроллеров и просто сосредоточиться на разработке высокоуровневых API (аля Amazon), которые могут использовать разработчики на стороне клиента?

Mag20
источник

Ответы:

6

Проверка на стороне клиента для разгрузки на стороне сервера и повышения отзывчивости приложения - это хорошо, но всегда выполняется проверка на стороне сервера. Можно отключить JavaScript, и при использовании REST API напрямую JavaScript никогда не понадобится.

Htbaa
источник
Да, проверка также будет частью домена / API. Клиентская сторона извлекает то, что необходимо проверить из API, или мы документируем, что требуется и т. Д. Для каждого метода. Если все еще есть ошибки проверки при отправке со стороны клиента - мы бы выбросили исключения.
Mag20
4

Следует помнить, что для сложных пользовательских интерфейсов может потребоваться дополнительный уровень «поддержки пользовательского интерфейса» для поддержки таких вещей, как иерархии, отношения мастер / подробности и другие концепции пользовательского интерфейса, которые на самом деле не существуют на бизнес-уровне. Часто невозможно реализовать некоторые из этих возможностей без нескольких обращений к бизнес-уровню, что снижает производительность. По крайней мере, я предпочитаю, чтобы слой «UI help» предоставлял UI прямой доступ к базе данных.

TMN
источник