ASP.NET WebApi vs MVC? [fechadas]

140

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?

Hugo Zapata
fonte
11
É engraçado para mim quão aleatórias essas questões "vs" são fechadas imediatamente ou sobem para esse nível de votos positivos.
Cbmeeks 9/09/16
10
Grrr. Eu odeio aqueles banners "fechados como demais". Muitas vezes encontro ótimas perguntas como essa. E mais frequentemente do que eles também não têm ótimas respostas. E daí se for muito amplo. Os especialistas estão aqui e não na wikipedia ou em outro fórum. Então, deixe que eles façam suas coisas e se afastem.
Nrrer 28/04

Respostas:

47

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 ApiControllerclasse é consolidada na Controllerclasse. Mais em: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Um link relevante de comparação, discussões e tutoriais:

insira a descrição da imagem aqui

Yusubov
fonte
20
Não concordo que a outra postagem seja semelhante. A outra postagem é realmente sobre WCF vs WebAPI.
Shane Courtrille
Tecnicamente, ele diz que a WCF Web API, no entanto, menciona na segunda linha que agora é mesclada na API da web do Asp.net e suporta auto-hospedagem. Atualizei o link de qualquer maneira com o mais recente. Espero que ajude.
Yusubov
Atualizadas as referências.
Yusubov
23

O WebAPI cospe OData, então você obtém todas as vantagens de usar o OData. Por exemplo, com o WebAPI, você obtém:

  • Opções de consulta como $ filter, $ top, $ orderby etc.
    • Com os controladores MVC tradicionais, você precisa implementá-los.
  • Padronização do formato
    • Existem clientes OData que entenderão o formato subjacente da sua API RESTful.
Paolo del Mundo
fonte
5
Tipo de. POSSO suportar oData, mas somente se você decorar a ação com o atributo 'queryable', pelo menos a partir do RC.
EBarr
14

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.insira a descrição da imagem aqui

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

curiousBoy
fonte
13

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.

LostCoder
fonte
1
É importante notar que você ainda pode realizar um comportamento semelhante à API com o MVC usando resultados de ação do mvc como JSONResult, etc. No entanto, como você apontou, o controlador MVC é mais pesado. Além disso, a maneira como os controladores de API da Web são implementados é mais propícia para criar uma API do que o MVC.
Grizzly Peak Software
12

Essa imagem parece mostrar as diferenças e semelhanças na maneira como o assunto é tratado. Espero que ajude seja interessante para mim.

insira a descrição da imagem aqui

BehrouzMoslem
fonte
10

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.

What-About-Bob
fonte
5

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

Codificador
fonte
3

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

Murugesan Nataraj
fonte
2

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.

Nikhil Fegade
fonte
1

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.

Eitan Revach
fonte