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