Nuestro equipo originalmente consistía principalmente en desarrolladores del lado del servidor con experiencia mínima en Javascript. En ASP.NET, solíamos escribir mucha lógica de interfaz de usuario en código subyacente o más recientemente a través de controladores en MVC.
Hace poco tiempo, 2 desarrolladores del lado del cliente de alto nivel se unieron a nuestro equipo. Pueden hacer en HTMl / CSS / Javascript prácticamente cualquier cosa que pudiéramos hacer previamente con el código del lado del servidor y los controles web del lado del servidor:
- Mostrar / ocultar controles
- Hacer validación
- Control refrescante AJAX
Entonces comencé a pensar que tal vez sería más eficiente crear una API de alto nivel alrededor de nuestra lógica de negocios, algo así como la API de Amazon Fulfillment: http://docs.amazonwebservices.com/fws/latest/APIReference/ , para que ese cliente los desarrolladores secundarios se harían cargo de la interfaz de usuario, mientras que los desarrolladores del lado del servidor solo se concentrarían en la lógica empresarial.
Entonces, para el sistema de pedidos, tendría una API de alto nivel como:
OrderService.asmx
CreateOrderResponse CreateOrder(CreateOrderRequest)
AddOrderItem
AddPayment
-
SubmitPayment
-
GetOrderByID
FindOrdersByCriteria
...
Habría acceso JSON / REST a la API, por lo que sería fácil de consumir desde la interfaz de usuario del lado del cliente. Podríamos usar esta API para el desarrollo interno de la interfaz de usuario y también para terceros para crear sus propias aplicaciones.
Con los avances en Javascript y la disponibilidad de buenos desarrolladores del lado del cliente, ¿es un buen momento para deshacerse del código subyacente / controladores y simplemente concentrarse en desarrollar API de alto nivel (ala Amazon) que los desarrolladores del lado del cliente puedan consumir?
Una cosa a tener en cuenta es que las interfaces de usuario complejas pueden requerir una capa adicional de "asistencia de interfaz de usuario" para admitir cosas como jerarquías, relaciones maestro / detalle y otros conceptos de interfaz de usuario que realmente no existen en la capa empresarial. A menudo no es posible implementar algunas de estas capacidades sin realizar múltiples viajes de ida y vuelta a la capa empresarial, lo que degrada el rendimiento. Al menos, prefiero tener la capa "Ayuda de IU" para dar acceso directo a la base de datos de la IU.
fuente