¿Qué enfoque / tecnología / herramienta .NET REST debo usar?

16

Estoy implementando un servicio web RESTful y varias aplicaciones cliente que se encuentran principalmente en Silverlight. Estoy encontrando una letanía de opciones para desarrollar tanto el lado del servidor como el lado del cliente de la API, pero no estoy seguro de cuál es el mejor enfoque. Me preocupa la estabilidad y una plataforma que seguirá existiendo dentro de unos meses.

Comenzamos a usar el REST Starter Kit con .NET 3.5 pero pasamos a la nueva API web de WCF al actualizar a .NET 4.0. Toda su documentación indica que la API web de WCF es el reemplazo del RSK. Sin embargo, la API web solo está en Vista previa 4 y no incluye soporte para clientes Silverlight o Windows Phone 7 (todavía).

WCF Web API parece un envoltorio sobre las cosas de WCF WebHttp Services provistas en la System.ServiceModel.Webbiblioteca, lo que me hace pensar que tal vez sería más simple ir con las cosas incorporadas, pero Web API ofrece algunas características agradables.

Estoy específicamente atado tratando de determinar el mejor curso para el lado del cliente. Mi requisito principal es que necesito admitir la deserialización en mis objetos del lado del cliente de forma rápida y fácil. La API web ofrece una buena biblioteca de cliente, pero no tiene una versión de Silverlight.

Me gustaría utilizar el último enfoque y el conjunto de herramientas que se está desarrollando y respaldando activamente.

  1. ¿El kit de inicio REST es realmente obsoleto?

  2. ¿Alguien ha tenido éxito implementando el kit de herramientas API web WCF?

  3. ¿Tiene sentido usar cualquiera de estos sobre las características incorporadas de WCF WebHttp Services que se encuentran en System.ServiceModel.Web?

  4. ¿Existe una solución única que funcione para cualquier cliente (web, Silverlight, etc.)?

¿Qué sugerencias tiene usted?

Hijo de pirata
fuente
Recomiendo encarecidamente utilizar servicestack
Mithir

Respuestas:

6

Solo para hacer un seguimiento y cerrar la publicación, con la Vista previa 5, la API web de WCF dio un gran paso adelante, lo que hizo increíblemente simple crear API REST. Y aunque la base de código actual en Codeplex no incluye un cliente Silverlight, hay un kit de herramientas y pude eliminar fácilmente las partes Async-CTP del código fuente abierto y crear una versión SL.

Recomiendo encarecidamente a cualquier persona interesada en ingresar a REST con WCF que busque en el marco: http://wcf.codeplex.com .

FYI: será una parte integrada de .NET 4.5 y actualmente se está reescribiendo para ejecutarse en el mismo marco central que ASP.NET MVC (aunque me han dicho que definitivamente todavía admitirá el autohospedaje).

Hijo de pirata
fuente
1

No he usado el kit de inicio REST, pero como estoy escribiendo una API REST WCF 4.0 .net estoy bastante seguro de que todavía existe :)

Le recomendaría que eche un vistazo a odata. Es increíblemente rápido y simple de codificar y juega muy bien con Silverlight.

Tom Squires
fuente
Una de las características que ofrece el kit de herramientas API web de WCF es la compatibilidad con OData, que funciona bien. Pero no tener una versión de Silverlight no me ayuda. ¿Cómo manejas la deserialización en el lado del cliente?
SonOfPirate
Solo lo hice con WP7 silverlight. Que acabo de agregar un servicio de referencia y lo llamé. Sin embargo, podría usar un cliente web y deserializar la respuesta usted mismo si eso funciona mejor para usted. No es difícil
Tom Squires
No pensé que usar webHttpBinding para habilitar REST con WCF admitiera un punto final mex. ¿Cómo agrega una referencia de servicio? Esa sería mi preferencia sobre compartir una biblioteca común que contenga mis contratos de datos.
SonOfPirate
Sí, acabo de agregar una referencia de servicio. Es posible que deba definir el punto final en el archivo de configuración.
Tom Squires
Me acabo de enterar (por las malas) de que Silverlight no es compatible con WebHttpBinding. Entonces, aunque pude exponer un punto final mex y Agregar referencia de servicio, el servicio no realizó la llamada porque no pudo resolver el punto final.
SonOfPirate
1

La API web de WCF no proporciona ninguna información de metadatos que usaría para generar un proxy de servicio y, por lo tanto, puede agregar una referencia de servicio. Está destinado a la producción fácil de servicios REST bajo el paraguas WCF, tal como lo hace con el marco de API web ASP.NET MVC 4.

Por lo tanto, no hay soporte para WP7 o Silverlight, pero es casi perfecto para el resto de la web.

Sin embargo, WCF Data Services parece un candidato adecuado, le permite crear servicios RESTful y consumirlos fácilmente con Silverlight.

Ned Smajic
fuente
Hemos estado usando la API web con nuestro cliente Silverlight durante casi un año sin problemas.
SonOfPirate