¿Mover toda la lógica de la interfaz de usuario al lado del cliente?


9

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?

Respuestas:


6

La validación en el lado del cliente para descargar el lado del servidor y aumentar la capacidad de respuesta de la aplicación está bien, pero siempre haga la validación del lado del servidor. Uno puede desactivar JavaScript y cuando se utiliza la API REST directamente, no se necesitará JavaScript.


Sí, la validación también sería parte del dominio / API. El lado del cliente extraería lo que necesita ser validado de la API o documentaríamos lo que se requiere, etc. para cada método. Si todavía hay errores de validación en los envíos desde el lado del cliente, arrojaríamos excepciones.
Mag20

4

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.