Arquitetura REST, Qual usar? WebAPI ou RESTFulie?

183 views
Skip to first unread message

Alexsandro

unread,
Oct 18, 2012, 11:57:49 AM10/18/12
to dotnetar...@googlegroups.com
Ola todos, eu conheço pouco sobre RESTFul e estou precisando criar um serviço REST em C# porem ao testar WebAPI.

Eu andei dando uma estuda e testei bastante o WebAPI do ASP.net MVC e achei interessante mas me desanimei quando ao XML/JSON gerado.

Ele simplesmente joga o objeto serializado no browser, com isto eu não tenho a navegabilidade entres os resources de todo serviço.

Vi pouca coisa do RESTFulie e vi que ele gera esta ligação( href, rel ) dos links que eu estava procurando mas nao cheguei a testar.


Gostaria de saber de voces o que voces tem usado?


Obrigado.

Capetonis

unread,
Oct 18, 2012, 5:26:13 PM10/18/12
to dotnetar...@googlegroups.com
Quanto a visualizar o json gerado, pode utilizar isto.

Alexsandro

unread,
Oct 18, 2012, 6:59:50 PM10/18/12
to dotnetar...@googlegroups.com
Esta é uma ferramenta para ajudar a visualizar né....

Mas estou mesmo preocupado com o formato gerado, com se dizem a representação/output.

Quando estamos trabalhando com o webservices o padrão gerado é o SOAP. Um protocolo todo descrito em XML e possui um WSDL com seus XSDs onde descreve todo output.

Mas e quanto ao REST, onde e quem vai defirir o padrão do output?

Vlw!

Frederico Zveiter

unread,
Oct 19, 2012, 6:39:47 AM10/19/12
to dotnetar...@googlegroups.com
Alexandro, essa é uma pergunta que dá pano pra manga.

Muito se discute sobre a necessidade da criação de uma linguagem de descrição para serviços REST. É uma discussão complicada. Na minha opinião, quando Roy Fielding concebeu o termo REST, sua arquitetura e princípios, ele tinha na cabeça de um lado um browser, do outro um servidor web. O problema começou quando foi criado o conceito de API ou WebServices, tendo-se na cabeça de um lado uma aplicação qualquer que saiba conversar HTTP e do outro um servidor web. É uma diferença sutil mas impactante. Quando começaram a criar envelopes descritivos de dados como o SOAP para dar suporte às atividades das APIs ou WebServices, alguns começaram a afirmaram que esses pacotes eram completamente desnecessários visto que tudo aquilo poderia ser feito utilizando os princípios e a arquitetura REST e nada de novo precisaria ser criado. E de fato eles tinham razão, porém em REST não há discovery e description simplesmente por que não é necessário. Então, na minha opinião, existe uma intercessão entre as atividades de um serviço web como pensado inicialmente por Roy Fielding e as atividades de comunicação via HTTP entre aplicações e seus back-ends mas não é um casamento perfeito.

Bom, tendo dito isso, existem hoje diversas formas de implementação de discovery e description de serviços ditos REST.
Dê uma olhada nos seguintes links:


Abraços,
Frederico Zveiter

2012/10/18 Alexsandro <bagu...@gmail.com>
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br

Daniel Moreira Yokoyama

unread,
Oct 19, 2012, 12:21:13 PM10/19/12
to dotnetar...@googlegroups.com
REST não é algo que se deva testar usando o browser. Você pode usar o Fiddler, mas eu prefiro usar o cUrl. Para testes unitários eu usava o restsharp.

A forma como o JSon é renderizado no browser é culpa do browser, não do framework REST.

Eu vejo muita gente fazendo todo tipo de merda baseado no comportamento do browser quando se diz respeito a serviços REST. Por exemplo, tirar o serializador xml do stack para ver a renderização Json, por que o google chrome coloca XML no header accepts  com prioridade maior que Json.

Tudo isso é culpa do browser, que é feito pra navegar em páginas, e não para testar serviços.

Atenciosamente,

Daniel Moreira Yokoyama.
@dmyoko
 
Blogs:
Getting Sharper (C#, Arquitetura de Software e outras coisas mais)
http://gettingsharper.wordpress.com/
 
Eis o Cristo... e jaz o Cristão (Cristianismo sem Religiosidade)
 


Stay Sharp!




--

Daniel Moreira Yokoyama

unread,
Oct 19, 2012, 12:28:06 PM10/19/12
to dotnetar...@googlegroups.com
A gente vive falando de discovering, que é algo a se desejar em serviços REST (embora você possa usar o verbo Options para distribuir discoverability dos seus serviços, mas ninguém faz isso, assim como ninguém usa o HTTP como se deveria usar). É fato que webservices soap tem essa vantagem... mas na real, a única vantagem que isso tem é geração automática de proxies - normalmente muito toscas.

No fim do dia, todos os serviços (com discoverability ou não) precisam ser bem negociados. ApiExplorers são bons para fazer testes ou para documentar... a exemplo das api's da netflix, do twitter, etc.

Atenciosamente,

Daniel Moreira Yokoyama.
@dmyoko
 
Blogs:
Getting Sharper (C#, Arquitetura de Software e outras coisas mais)
http://gettingsharper.wordpress.com/
 
Eis o Cristo... e jaz o Cristão (Cristianismo sem Religiosidade)
 


Stay Sharp!



--

Alexsandro

unread,
Oct 22, 2012, 11:07:50 AM10/22/12
to dotnetar...@googlegroups.com
Desculpa ai quando eu disse renderizar o JSON no browser. Me expressei mau demais.

Eu estava querendo dizer que não tinha gostado é do "schema" gerando tanto em JSON quanto em XML.

Quanto disse renderizar, não queria dizer vizualmente e sim "conteudamente"( se é que esta palavra existe, rs..)

Estou pensando em escrever na mão eu mesmo o output do webapi e colocar as URLs para cada objeto.

Vai dar muitooooo trabalho a menos que alguem me diga se existe alguma lib faça isto para mim em C#.


Valew!

Alexsandro

unread,
Oct 22, 2012, 11:17:55 AM10/22/12
to dotnetar...@googlegroups.com
Quanto ao ApiExplorer eu acho ele incompleto, talvez pela minha falta de visão, pois simplesmente escrever todas URLs na ducumentação ou pelo metodo OPTIONS nao é suficiente ao meu ver.
Ele tinha que mostrar um exemplo do output por um XSD por exemplo, sei la....( eu nao sei como deveria ser oficialmente na documentação REST, pelas minhas pesquisas não achei nada concreto. )

Este final de semana estive com no DevDay 2012 e conversei um pouco com Victor Cavalcante, ele disse que faz estas coisas ainda de forma manual usando o WebAPI.

Ouvi tambem alguem falando do Sinatra por ser muito bom para fazer API em REST, fiquei curioso em ver como ele funciona onde esta semana vou dar uma estuda melhor com ele.

Se alguem ja tiver usando, por favor conte suas experiencias.

Valew!!!

Daniel Moreira Yokoyama

unread,
Oct 22, 2012, 1:34:31 PM10/22/12
to dotnetar...@googlegroups.com
Sei lá... eu não sinto falta de schemas... aliás... a falta deles é o que mais me atrai no rest.
Quanto ao output, eu sempre trabalhei com modelo de resource separado, lá eu posso colocar annotations para moldar o output, e o automapper ajuda  a não ter o trabalho de hidratar os objetos pra retornar.

Atenciosamente,

Daniel Moreira Yokoyama.
@dmyoko
 
Blogs:
Getting Sharper (C#, Arquitetura de Software e outras coisas mais)
http://gettingsharper.wordpress.com/
 
Eis o Cristo... e jaz o Cristão (Cristianismo sem Religiosidade)
 


Stay Sharp!



Reply all
Reply to author
Forward
0 new messages