Quelle approche / technologie / outil .NET REST dois-je utiliser?

16

J'implémente un service Web RESTful et plusieurs applications clientes qui sont principalement dans Silverlight. Je trouve une litanie d'options pour développer à la fois côté serveur et côté client de l'API, mais je ne sais pas quelle est la meilleure approche. Je suis préoccupé par la stabilité ainsi que par une plateforme qui continuera d'exister dans quelques mois.

Nous avons commencé à utiliser le kit de démarrage REST avec .NET 3.5 mais nous sommes passés à la nouvelle API Web WCF lors de la mise à jour vers .NET 4.0. Toute leur documentation indique que WCF Web API est le remplacement de RSK. Cependant, l'API Web est uniquement dans l'aperçu 4 et n'inclut pas (pour l'instant) la prise en charge des clients Silverlight ou Windows Phone 7.

L'API Web WCF ressemble à un wrapper au-dessus des éléments WCF WebHttp Services fournis dans la System.ServiceModel.Webbibliothèque, ce qui me fait penser qu'il serait peut-être plus simple de simplement utiliser les éléments intégrés, mais l'API Web offre de belles fonctionnalités.

Je suis particulièrement attaché à essayer de déterminer le meilleur cours pour le côté client. Ma principale exigence est que je doive prendre en charge la désérialisation dans mes objets côté client rapidement et facilement. L'API Web offre une belle bibliothèque client mais n'a pas de version Silverlight.

J'aimerais utiliser la dernière approche et le jeu d'outils activement développé et pris en charge.

  1. Le kit de démarrage REST est-il vraiment obsolète?

  2. Quelqu'un a-t-il réussi à implémenter la boîte à outils WCF Web API?

  3. Y a-t-il un intérêt à utiliser l'une ou l'autre de ces fonctionnalités par rapport aux fonctionnalités WCF WebHttp intégrées dans System.ServiceModel.Web?

  4. Existe-t-il une solution unique qui fonctionne pour n'importe quel client (Web, Silverlight, etc.)?

Quelles suggestions avez-vous?

SonOfPirate
la source
Je recommande fortement d'utiliser servicestack
Mithir

Réponses:

6

Juste pour suivre et clore le message, avec Preview 5, l'API Web WCF a fait un énorme bond en avant, ce qui rend incroyablement simple la création d'API REST. Et bien que la base de code actuelle sur Codeplex n'inclue pas de client Silverlight, il existe une boîte à outils et j'ai pu facilement retirer les parties Async-CTP du code open source et créer une version SL.

Je recommande fortement à toute personne intéressée à se lancer dans REST avec WCF de consulter le framework: http://wcf.codeplex.com .

FYI - Ce sera une partie intégrée de .NET 4.5 et est actuellement en cours de réécriture pour fonctionner sur le même framework de base que ASP.NET MVC (bien que l'on me dise qu'il supportera certainement l'auto-hébergement).

SonOfPirate
la source
1

Je n'ai pas utilisé le kit de démarrage REST, mais comme je suis en train d'écrire une API REST WCF .net 4.0, je suis presque sûr qu'il existe toujours :)

Je vous recommande de jeter un oeil à odata. Son incroyablement rapide et simple à coder et joue bien avec Silverlight.

Tom Squires
la source
L'une des fonctionnalités offertes par la boîte à outils WCF Web API est la prise en charge OData qui fonctionne bien. Mais, ne pas avoir de version Silverlight ne m'aide pas. Comment gérez-vous la désérialisation côté client?
SonOfPirate
Je ne l'ai fait qu'avec WP7 silverlight. Que je viens d'ajouter une réfrence de service et que j'ai appelé ça. Vous pouvez simplement utiliser un client Web et désérialiser la réponse vous-même si cela fonctionne mieux pour vous. Ce n'est pas difficile
Tom Squires
Je ne pensais pas que l'utilisation de webHttpBinding pour activer REST avec WCF supportait un point de terminaison mex. Comment ajoutez-vous une référence de service? Ce serait ma préférence plutôt que de partager une bibliothèque commune contenant mes contrats de données.
SonOfPirate
Ouais, je viens d'ajouter une réfraction de service. Vous devrez peut-être définir le noeud final dans le fichier de configuration.
Tom Squires
Je viens d'apprendre (à la dure) que Silverlight ne prend pas en charge WebHttpBinding. Ainsi, même si j'ai pu exposer un point de terminaison mex et ajouter une référence de service, le service n'a pas effectué l'appel car il n'a pas pu résoudre le point de terminaison.
SonOfPirate
1

L'API Web WCF ne fournit aucune information de métadonnées que vous utiliseriez pour générer un proxy de service et ainsi, pouvoir ajouter une référence de service. Il est destiné à la production facile de services REST sous l'égide de WCF, tout comme vous le faites avec le framework API Web ASP.NET MVC 4.

Par conséquent, WP7 ou Silverlight n'est pas pris en charge, mais il est presque parfait pour le reste du Web.

Cependant, WCF Data Services ressemble à un bon candidat, il vous permet de créer des services RESTful et de les consommer facilement avec Silverlight.

Ned Smajic
la source
Nous utilisons l'API Web avec notre client Silverlight depuis près d'un an sans aucun problème.
SonOfPirate