Qual abordagem / tecnologia / ferramenta .NET REST devo usar?

16

Estou implementando um serviço web RESTful e vários aplicativos clientes que estão principalmente no Silverlight. Estou encontrando uma série de opções para desenvolver o lado do servidor e o cliente da API, mas não tenho certeza de qual é a melhor abordagem. Estou preocupado com a estabilidade e com uma plataforma que continuará existindo daqui a alguns meses.

Começamos a usar o REST Starter Kit com .NET 3.5, mas passamos para a nova API da Web WCF ao atualizar para o .NET 4.0. Toda a documentação indica que a API da Web do WCF é a substituição do RSK. No entanto, a API da Web está apenas na Visualização 4 e não inclui suporte para clientes Silverlight ou Windows Phone 7 (ainda).

A API da Web do WCF se parece com um invólucro sobre o material dos Serviços WebHttp do WCF fornecido na System.ServiceModel.Webbiblioteca, o que me faz pensar que talvez seja mais simples usar apenas o material interno, mas a API da Web oferece alguns recursos interessantes.

Estou especificamente empenhado em tentar determinar o melhor caminho para o lado do cliente. Meu principal requisito é que eu precise dar suporte à desserialização dos objetos do lado do cliente de maneira rápida e fácil. A API da Web oferece uma boa biblioteca de clientes, mas não possui uma versão do Silverlight.

Eu gostaria de usar a abordagem mais recente e o conjunto de ferramentas que está sendo desenvolvido e suportado ativamente.

  1. O REST Starter Kit é realmente obsoleto?

  2. Alguém já teve sucesso ao implementar o kit de ferramentas da API da Web do WCF?

  3. Existe mérito em usar um desses recursos nos recursos internos dos Serviços WebHttp do WCF encontrados System.ServiceModel.Web?

  4. Existe uma solução única que funcione para qualquer cliente (web, Silverlight etc.)?

Quais sugestões você tem?

SonOfPirate
fonte
Eu recomendo o uso do servicestack
Mithir 30/03

Respostas:

6

Apenas para acompanhar e encerrar a postagem, com a Visualização 5, a API da Web do WCF deu um grande salto, tornando incrivelmente simples a criação de APIs REST. E embora a base de código atual no Codeplex não inclua um cliente Silverlight, existe um kit de ferramentas por aí e eu pude facilmente remover as partes do Async-CTP do código-fonte aberto e criar uma versão SL.

Eu recomendo fortemente que qualquer pessoa interessada em entrar no REST com WCF examine a estrutura: http://wcf.codeplex.com .

FYI - Será uma parte integrada do .NET 4.5 e atualmente está sendo reescrita para ser executada na mesma estrutura principal do ASP.NET MVC (embora me digam que ele definitivamente suportará ainda a auto-hospedagem).

SonOfPirate
fonte
1

Eu não usei o REST Starter Kit, mas como estou escrevendo uma API REST .net 4.0 WCF, tenho certeza de que ela ainda existe :)

Eu recomendo que você dê uma olhada no odata. É incrivelmente rápido e simples de codificar e funciona muito bem com o silverlight.

Tom Squires
fonte
Um dos recursos oferecidos pelo kit de ferramentas da API da Web do WCF é o suporte ao OData, que funciona bem. Mas, não ter uma versão do Silverlight não me ajuda. Como você está lidando com a desserialização no lado do cliente?
SonOfPirate
Eu só fiz isso com o WP7 silverlight. Que acabei de adicionar uma referência de serviço e chamei isso. Você pode simplesmente usar um cliente da Web e desserializar a resposta, se isso funcionar melhor para você. Não é difícil
Tom Squires
Não achei que o uso do webHttpBinding para ativar o REST com WCF suportasse um ponto de extremidade mex. Como você está adicionando uma referência de serviço? Essa seria minha preferência em compartilhar uma biblioteca comum contendo meus contratos de dados.
SonOfPirate
Acabei de adicionar uma referência de serviço. Pode ser necessário definir o terminal no arquivo de configuração.
Tom Squires
Acabei de aprender (da maneira mais difícil) que o Silverlight não suporta o WebHttpBinding. Portanto, mesmo que eu pudesse expor um ponto final mexido e Adicionar referência de serviço, o serviço não faria a chamada porque não conseguiu resolver o ponto final.
SonOfPirate
1

A API da Web do WCF não fornece nenhuma informação de metadados que você usaria para gerar um proxy de serviço e, portanto, poder adicionar uma referência de serviço. Ele se destina à fácil produção de serviços REST sob o guarda-chuva do WCF, assim como você faz com a estrutura da API da Web do ASP.NET MVC 4.

Portanto, não há suporte para WP7 ou Silverlight, mas é quase perfeito para o resto da web.

No entanto, o WCF Data Services parece um candidato certo; permite criar serviços RESTful e consumi-los facilmente com o Silverlight.

Ned Smajic
fonte
Estamos usando a API da Web com nosso cliente Silverlight há quase um ano sem problemas.
SonOfPirate