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?
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.
fonte