O que exatamente é "API Web" no ASP.Net MVC4?

15

Eu sei o que é uma API da Web.
Escrevi APIs em vários idiomas (inclusive no MVC3).
Também sou bem praticado no ASP.Net.
Acabei de descobrir que o MVC4 possui "Web API" e, sem passar pelos exemplos de vídeo, não consigo encontrar uma boa explicação sobre o que exatamente é.
De minha experiência anterior, as tecnologias da Microsoft (especialmente o ASP.Net) tendem a adotar um conceito simples e envolvê-lo em um monte de sobrecarga inútil que visa tornar tudo "mais fácil".
Alguém pode me explicar o que é exatamente a API da Web no MVC4? Por que eu preciso disso? Por que não consigo escrever minha própria API?

James P. Wright
fonte
3
Você está falando sobre a nova estrutura de API da Web ? Isso é separado do MVC. Se é isso que você quer dizer, dê uma olhada neste post de Rick Strahl.
Oded
1
@ Oded: Você deve colocar isso como resposta.
James P. Wright
A coisa mais legal sobre a API da Web (que eu não vejo listada em nenhum lugar na resposta aceita ou no link acima) é que, se você retornar um IQueryable <>, os métodos da Web suportam automaticamente a sintaxe da consulta OData! - No geral ASP.NET 4.5 Stack, "Web API" e "SignalR" estão "substituindo" o WCF (não tenho certeza se eles foram criados sobre o WCF ou não, mas o WCF foi removido de todos os diagramas de blocos e substituído com "Web API" e "SignalR").
BrainSlugs83
Why can't I just write my own API?Com apenas asp.net MVC regular? Você pode. A API da Web do ASP.NET MVC fornece brindes extras para facilitar. Por favor veja abaixo.
Jim G.

Respostas:

16

A API da Web do ASP.NET é uma estrutura "não opinativa" para criar o Serviço HTTP, independentemente do REST ou RPC. É a melhor implementação da Microsoft da RFC 2616 (HTTP Spec).

Certamente você pode criar sua própria API, mas a API da Web do ASP.NET:

  • Construído com base no modelo Russian Doll , que permite a adição de módulos do tipo lego ao pipeline HTTP
  • Torna o HTTP o cidadão de primeira classe para que todos os cabeçalhos comuns sejam fortemente digitados (não apenas o valor do nome) e os ajude a analisá-los
  • Permite a hospedagem ou auto-hospedagem do ASP.NET (IIS)
  • suporta negociação de conteúdo, tipos de mídia, ...
  • O Async é de cima para baixo
  • Usa uma abordagem semelhante para clientes com HttpClient
Aliostad
fonte
6

A nova API da Web da Microsoft é, como o nome sugere, sobre a criação de APIs acessíveis pela Web, com tendência para o REST.

Rick Strahl publicou um blog recentemente e tem uma boa análise sobre quando usar MVC vs Web API.

Coisas como negociação de conteúdo incorporada, vários formatos incorporados e muito mais.

Oded
fonte
6

Em resumo: a API da Web do ASP.NET está tornando o REST um cidadão de primeira classe no .NET , que o WCF realmente não conseguiu adotar. Como você deve saber, o ASP.NET Web API é uma estrutura for building web APIssobre o .NET Framework.

Uma das maiores frustrações que tivemos como desenvolvedores da web foi enfrentar as infinitas configurações do WCF. Quero dizer, o WCF é ótimo, mas não foi adotado pelo REST desde a estrutura da API da Web do WCF . Havia algo chamado REST Starter Kit, mas acabou morto.

No entanto, a API da Web do ASP.NET é uma estrutura de próxima geração que facilita a criação de serviços HTTP que atingem uma ampla gama de clientes, como navegadores e dispositivos móveis. É uma plataforma ideal para criar aplicativos RESTful no .NET Framework. Para obter mais informações e ótimas postagens no blog, visite a página de blogueiros da API da Web do ASP.NET

Yusubov
fonte
1
Se você pesquisar o histórico da API da Web, ela começou no WCF.
SASS_Shooter
Bem, é uma substituição leve com recursos importantes para facilitar a configuração e otimizar o desenvolvimento de aplicativos.
Yusubov 4/13/13
@Yusobov: Isso não é bem verdade - também existem os WCF Data Services que são muito bons na criação de APIs REST compatíveis com Odata. Eu tenho usado em um ambiente de produção e realmente funciona bem quando é configurado. O único problema é que é muito mais difícil configurar do que uma API da Web do ASP.NET.
Adrian Grigore
1

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.

http://www.asp.net/web-api


EDITAR:

Especificamente, a API da Web do ASP.NET inclui:

  1. Um pipeline simplificado do ASP.NET com sobrecarga reduzida se você optar por hospedar seu serviço no IIS.
  2. HttpClient, que facilita a conexão de um cliente à API da Web.
Jim G.
fonte
Eu posso ler essas coisas eu mesmo. Minha pergunta é qual é o sentido? O que há de tão diferente no uso da API da Web e no MVC regular, mas com JsonResults em vez de ViewResults?
James P. Wright
1. Antes do MVC 4, você poderia retornar um JSONResult sem nenhum problema. O MVC 4 simplesmente retém esse recurso, inclui algumas outras classes auxiliares para facilitar o processo e otimiza o pipeline do ASP.NET para reduzir a sobrecarga quando você sabe que não precisará retornar o ViewResults.
Jim G.
1
Além disso, como é uma atualização efetiva da API da Web do WCF, você não está casado com o IIS. Você pode auto-hospedar um serviço de API da Web do ASP.NET, se preferir. wcf.codeplex.com/…
Jim G.
-2

Hoje, um aplicativo baseado na Web não é suficiente para alcançar seus clientes. As pessoas são muito inteligentes, usam dispositivos iphone, celular, tablets etc. em sua vida diária. Esses dispositivos também têm muitos aplicativos para facilitar a vida. Na verdade, estamos passando da Web para o mundo dos aplicativos. Portanto, se você deseja expor seus dados de serviço aos navegadores e a todos esses aplicativos de dispositivos modernos de maneira rápida e simples, deve ter uma API compatível com os navegadores e todos esses dispositivos.

atul
fonte
este não parece acrescentar nada substancial sobre pontos feitos e explicado em anteriores 4 respostas
mosquito