L'API Web profite plus nativement du protocole http. Odata est un standard ouvert adopté par de nombreux grands joueurs. Je ne peux parler que de mon expérience en jouant avec Odata et en découvrant récemment l'API Web et en faisant des recherches.
OData est cool parce que c'est une norme réelle. Vous pouvez facilement créer une base de données et l'exposer via HTTP. Cela signifie que vous pouvez parcourir la structure de votre table sans aucune configuration (je le dis de manière lâche). Vous pouvez également exécuter des requêtes via l'URL, qui peut inclure un léger LINQ:
/products/orders/[put some linq-ish query here]
C'est sans doute bon ou mauvais. L'authentification est standard et l'a construite.
L'API Web, est plus intéressante de mon point de vue. Il a utilisé la fonctionnalité HTTP (messages d'erreur, et al.) Et est un peu plus "natif" pour les vraies requêtes RESTful. Je n'y ai vraiment pas trop joué. Mais j'ai lu et j'ai en quelque sorte "entendu" que MVC et l'API Web pourraient se "marier" un jour, encore une fois, peut-être bien, peut-être mal ...
Lorsque je jouais avec OData, j'ai créé un processus stocké, mappé à la surface de l'entité, configuré un type de retour fort, puis connecté à une demande d'URL et à BANG, il y a ma demande RESTful mappée à mon proc stocké de résultat tapé. C'était assez simple et j'ai pu obtenir exactement ce dont j'avais besoin.
En conclusion,
je n'ai pas eu la chance de jouer avec WCF API avec trop de détails, mais je dirais que c'est la voie à suivre pour le développement client car il s'agit plutôt d'une approche puriste de REST. Si vous allez faire des appels de va-et-vient plus ou moins «droits» et récupérer des «Afficher les modèles», cela fournira une interaction plus native.
D'autre part. Si vous effectuez des requêtes complexes (ish) sur les données en fonction de l'interaction avec le client et que vous souhaitez "créer" la logique de requête et la transmettre en tant que paramètre, alors Odata pourrait fonctionner.
La façon dont je les regarde est si j'ai besoin d'exposer mes données dans un format structurel (c'est-à-dire une structure de table / relation) et de les interroger directement depuis un client, alors Odata fonctionnera mieux. C'est aussi bon pour permettre à "Autres" d'accéder aux données (avec une authentification appropriée, etc.), c'est pourquoi il adhère au protocole OData
Si vous voulez des requêtes RESTful où vous dictez l'URL (/ products / Orders / 22, et créez des "jeux de résultats" complexes à partir de votre code managé et de votre structure de données "cachés" ET vous pourriez également bénéficier des messages de réponse HTTP, L'API Web serait probablement la meilleure solution.
encore une fois, tout cela provient de la recherche et du jeu. Je n'ai pas implémenté non plus dans un scénario d'application de production / complet. Je pense qu'ils auront tous les deux leurs forces et leurs faiblesses, et il y a certainement un certain chevauchement