Com os controladores ASP.NET MVC, você pode expor seus dados em diferentes formatos. O AspNetWebAPI foi projetado explicitamente para criar APIs, mas eu posso fazer isso facilmente com os controladores MVC, não está claro para mim em quais casos seria melhor que os controladores MVC tradicionais. Estou interessado em cenários em que os benefícios do WebApi são óbvios e vale a pena adicionar outra camada de complexidade aos meus aplicativos.
Pergunta: quais são as vantagens e / ou desvantagens do uso do asp.net WebApi em relação ao MVC?
asp.net-mvc
asp.net-web-api
Hugo Zapata
fonte
fonte
Respostas:
O WebApi permite criar serviços que podem ser expostos por HTTP, e não por um serviço formal, como WCF ou SOAP. Outra diferença está na maneira como o WebApi usa o protocolo Http e o torna verdadeiramente um cidadão Http de primeira classe.
ATUALIZAÇÃO: A API da Web do ASP.NET Core foi integrada ao tipo de projeto MVC. A
ApiController
classe é consolidada naController
classe. Mais em: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6Um link relevante de comparação, discussões e tutoriais:
fonte
O WebAPI cospe OData, então você obtém todas as vantagens de usar o OData. Por exemplo, com o WebAPI, você obtém:
fonte
API da Web do Asp.Net vs. MVC do Asp.Net 1 . O Asp.Net MVC é usado para criar aplicativos da Web que retornam visualizações e dados, mas o Asp.Net Web API é usado para criar serviços HTTP completos com uma maneira fácil e simples que retorna apenas dados que não são exibidos.
2 . A API da Web ajuda a criar serviços REST-ful no .NET Framework e também oferece suporte à negociação de conteúdo (trata-se de decidir os melhores dados de formato de resposta que podem ser aceitáveis pelo cliente. Podem ser JSON, XML, ATOM ou outros dados formatados ), hospedagem automática que não está no MVC.
3 . A API da Web também cuida do retorno de dados em um formato específico, como JSON, XML ou qualquer outro, com base no cabeçalho Accept na solicitação e você não se preocupa com isso. O MVC retorna apenas dados no formato JSON usando JsonResult.
4 . Na API da Web, a solicitação é mapeada para as ações com base em verbos HTTP, mas no MVC, é mapeada para o nome das ações.
5 . A API da Web do Asp.Net é uma nova estrutura e parte da estrutura principal do ASP.NET. A ligação do modelo, filtros, roteamento e outros recursos do MVC existentes na Web API são diferentes do MVC e existem no novo assembly System.Web.Http. No MVC, esses feitos existem no System.Web.Mvc. Portanto, a API da Web também pode ser usada com o Asp.Net e como uma camada de serviço independente.
6 . Você pode misturar a API da Web e o controlador MVC em um único projeto para manipular solicitações AJAX avançadas que podem retornar dados em formato JSON, XML ou qualquer outro formato e criar um serviço HTTP completo. Normalmente, isso será chamado de auto-hospedagem da API da Web.
7 . Quando você mistura o controlador MVC e a API da Web e deseja implementar a autorização, deve criar dois filtros, um para o MVC e outro para a API da Web, pois os dois são diferentes.
8 . Além disso, a API da Web é uma arquitetura leve e, exceto o aplicativo da Web, também pode ser usada com aplicativos para smartphones.
A fonte original está aqui
fonte
Semelhanças
1) ambos herdam do ihhtphandler para o pedido assíncrono, então basicamente um apicontroller ou um controlador mvc são ambos o invólucro da web.http
Diferenças: 1) O controlador mvc é muito pesado. Se você pudesse passar por sua definição, poderá ver quantas interfaces e o código base usado, a API da Web é um controlador mais leve e distingue a solicitação pelos parâmetros passados (sim, também podemos alterá-lo! )
2) O controlador MVC possui muitos recursos, como retornar visualizações, resultado de ação, resultado de javascript etc., mas na API da Web existe JSON ou XML
3) A API é para a implementação de serviços Restful (obter, postar, colocar, excluir, opções) que podem ser hospedados independentemente em qualquer lugar, sem depender das visualizações, o controlador MVC não pode suportar isso, pois está totalmente integrado às visualizações.
fonte
Essa imagem parece mostrar as diferenças e semelhanças na maneira como o assunto é tratado. Espero que ajude seja interessante para mim.
fonte
Em algum momento, convém esquecer o ASP.NET MVC. Se você é um desenvolvedor .NET, mas deseja criar um aplicativo de Página Única (usando Angular, por exemplo), deseja os benefícios de um serviço RESTful (WebAPI) sem todo o inchaço desnecessário que acompanha o ASP.NET MVC.
fonte
ASP.NET MVC e ASP.NET Web api que ambos estão usando para fins diferentes
ASP.NET
O ASP.NET oferece três estruturas para a criação de aplicativos da Web: Web Forms, ASP.NET MVC e ASP.NET Web Pages. Todas as três estruturas são estáveis e maduras, e você pode criar excelentes aplicativos da web com qualquer uma delas. Independentemente da estrutura escolhida, você obterá todos os benefícios e recursos do ASP.NET em qualquer lugar.
Cada estrutura visa um estilo de desenvolvimento diferente. O que você escolher depende de uma combinação de seus ativos de programação (conhecimento, habilidades e experiência em desenvolvimento), o tipo de aplicativo que você está criando e a abordagem de desenvolvimento com a qual você se sente confortável. Todas as três estruturas serão suportadas, atualizadas e aprimoradas em versões futuras do ASP.NET.
MVC
O ASP.NET MVC oferece uma maneira poderosa e baseada em padrões para criar sites dinâmicos que permitem uma separação clara de preocupações e que oferece controle total sobre a marcação para um desenvolvimento ágil e agradável. O ASP.NET MVC inclui muitos recursos que permitem o desenvolvimento rápido e amigável ao TDD para criar aplicativos sofisticados que usam os mais recentes padrões da web.
API da Web
A API da Web do ASP.NET é uma estrutura que facilita a criação de serviços HTTP que atingem uma ampla variedade de clientes, incluindo navegadores e dispositivos móveis. A API da Web do ASP.NET é uma plataforma ideal para criar aplicativos RESTful no .NET Framework.
você pode ler mais formulários aqui http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html
fonte
O ASP.NET MVC está focado em facilitar a saída de HTML. A API da Web do ASP.NET está focada em facilitar a saída de dados brutos.
No mundo WebForms, o ASP.NET MVC seria equivalente a páginas .aspx e a API da Web do ASP.NET seria .asmx
fonte
O Asp.Net MVC é usado para criar aplicativos da Web que retornam visualizações e dados, mas o Asp.Net Web API é usado para criar serviços HTTP completos com uma maneira fácil e simples que retorna apenas dados que não são exibidos.
A API da Web ajuda a criar serviços REST-ful sobre o .NET Framework e também oferece suporte à negociação de conteúdo (trata-se de decidir os melhores dados de formato de resposta que podem ser aceitáveis pelo cliente. Pode ser JSON, XML, auto-hospedagem que não é no MVC.
A API da Web também cuida do retorno de dados em um formato específico, como JSON, XML ou qualquer outro, com base no cabeçalho Accept na solicitação e você não se preocupa com isso. O MVC retorna apenas dados no formato JSON usando JsonResult.
fonte
Geralmente, o WebAPI é usado para serviços de dados em que o MVC pode gerar mais tipos de saídas.
O WebAPI com certeza simplifica a maneira como podemos criar serviços de dados. É limpo e fácil para esse fim. O MVC vem com mais algumas ferramentas.
O MVC pode gerar qualquer saída que o WebAPI pode gerar. A geração de saídas a partir de modelos pode ser facilmente alcançada no MVC. Não consigo encontrar um motivo para fazer isso na WebAPI. Os desenvolvedores de PHP e o antigo programador ASP podem conhecer essa atitude do passado, onde é possível criar arquivos HTML envolvidos com o código C #.
WebAPI- DATA MVC - DADOS, UI / HTML, XHTML, arquivos, modelos etc.
fonte