Mover toda a lógica da interface do usuário para o lado do cliente?

9

Inicialmente, nossa equipe consistia principalmente de desenvolvedores do lado do servidor com conhecimento mínimo em Javascript. No ASP.NET, costumávamos escrever muita lógica da interface do usuário em code-behind ou mais recentemente por meio de controladores no MVC.

Há pouco tempo, dois desenvolvedores de alto nível do lado do cliente se juntaram à nossa equipe. Eles podem fazer em HTMl / CSS / Javascript praticamente tudo o que poderíamos fazer anteriormente com código do lado do servidor e controles da Web do lado do servidor:

  • Mostrar / ocultar controles
  • Faça validação
  • Controlar a atualização do AJAX

Então comecei a pensar que talvez fosse mais eficiente criar apenas uma API de alto nível em torno da nossa lógica de negócios, como a API do Amazon Fulfillment: http://docs.amazonwebservices.com/fws/latest/APIReference/ , para que o cliente os desenvolvedores laterais assumiriam totalmente a interface do usuário, enquanto os desenvolvedores do servidor se concentrariam apenas na lógica comercial.

Portanto, para o sistema de pedidos, você teria uma API de alto nível, como:

OrderService.asmx

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

Haveria acesso JSON / REST à API, portanto, seria fácil consumir na interface do usuário do lado do cliente. Poderíamos usar essa API para o desenvolvimento interno da interface do usuário e também para terceiros criarem seus próprios aplicativos.

Com os avanços no Javascript e a disponibilidade de bons desenvolvedores do lado do cliente, é um bom momento para se livrar dos controladores de código por trás / e se concentrar apenas no desenvolvimento de APIs de alto nível (ala Amazon) que os desenvolvedores do lado do cliente podem consumir?

Mag20
fonte

Respostas:

6

A validação no lado do cliente para descarregar o lado do servidor e aumentar a capacidade de resposta do aplicativo é boa, mas sempre faça a validação no lado do servidor. É possível desativar o JavaScript e, ao usar a API REST diretamente, o JavaScript nunca será necessário.

Htbaa
fonte
Sim, a validação também faria parte do domínio / API. O lado do cliente extrairia o que precisa ser validado da API ou documentaríamos o que é necessário, etc ... para cada método. Se ainda houver erros de validação nos envios do lado do cliente - lançaríamos exceções.
Mag20
4

Uma coisa a ter em atenção é que as UIs complexas podem exigir uma camada adicional de "UI UI" para suportar coisas como hierarquias, relacionamentos de mestre / detalhes e outros conceitos de UI que realmente não existem na camada de negócios. Muitas vezes, não é possível implementar alguns desses recursos sem fazer várias viagens de ida e volta à camada de negócios, o que prejudica o desempenho. Pelo menos, prefiro ter a camada "Assistente de interface do usuário" a dar acesso direto à interface do usuário ao banco de dados.

TMN
fonte