OData avec ServiceStack?
J'ai juste vu ServiceStack et j'envisage la construction d'un service avec elle.
Est-il possible de servir des flux OData avec le service de la pile, de sorte que je serais en mesure d'exposer IQueryable et de requête à partir de la client?
- Je n'ai aucune expérience avec ServiceStack, mais je sais que les Services de Données WCF a plein OData soutien, et ASP.NET Web API prend en charge les paramètres si vous retournez IQueryable. voir msdn.microsoft.com/en-us/library/cc668788.aspx
- WebAPI est parfait, le seul problème est que je n'aurai pas un client-code généré pour moi si je l'utilise.. je vais regarder de plus près les Services de Données WCF s'ils pouvaient m'aider. Merci pour les commentaires!
Vous devez vous connecter pour publier un commentaire.
Modifier
ServiceStack a maintenant ajouté Auto Requête qui est de notre approche à l'activation de la data-driven services qui évite les pièges et les anti-modèles promus par OData.
Pas.
Pas directement en tout cas. Si quelqu'un voit aucune valeur en OData, ils sont libres d'ajouter de la fonctionnalité en option Plugin - mais il ne sera jamais construit dans le ServiceStack de base.
Mauvaises pratiques de développement
OData est un mauvais ajustement pour ServiceStack qui s'oppose avec véhémence lourd abstractions et "la magie de comportement", qui nous considérons comme une un exemple classique de la:
Nous ne pensons pas que de compter sur la magie comportement de "boîte noire", les blobs ne dure jamais à l'épreuve du temps. Historiquement, chaque fois que nous avons utilisé (par exemple, à ADO.NET ensembles de données, ASP.NET Dynamique de Données) nous avons rapidement courir dans la inhérents à-flexible limites de ces cadres qui sont en mesure d'évoluer pour soutenir les nouveaux développeur pratiques, les paradigmes et les technologies qu'ils n'ont pas été conçus à l'appui, entraînant rapidement dépréciée en faveur de nouveaux cadres de qui peut. C'est une ré-écriture du cycle nous n'avons pas veut promouvoir.
Favorise mauvais service web pratiques
OData favorise également l'anti-modèle où vous êtes d'exposer la mise en œuvre interne de détails de votre service étroitement associant implicitement votre contrat de service aux sous-jacent SGBDR tables vous donnant un contrôle limité sur la possibilité de mise en cache, re-factoring ou à la version de la capacité de vos services dans l'avenir.
Ceci est similaire à la remise de votre db chaîne de connexion où dès que vous avez des clients dans la production de liaison, la structure des tables de gel, en inhibant la capacité de faire évoluer votre base de données existante tables, car il pourrait briser les clients existants. ServiceStack de la recommandation est d'avoir vos clients lié à une couche de service que vous êtes libre de re-facteur de la mise en œuvre de l'.
Pour résumer OData est en effet riche en fonctionnalités, mais personnellement, je ne recommande pas son utilisation en dehors de l'intranet où vous ne contrôlez pas et peut déployer à la fois Client et Serveur.
WebApi est la meilleure option avec le soutien implicite de oData par le retour de la
IQueryable<T>
interface.Seulement utilisé dans Microsoft seulement les technologies
L'un des principaux avantages du web/remote services (SOA) est qu'il fournit une technologie de diagnostic et interopérables façade de plus de toutes les fonctionnalités que vous souhaitez exposer. Bien que OData est un standard ouvert, la technologie elle-même est essentiellement seulement été adoptée par Microsoft et .NET initiatives liées à la.
OData est lent
OData lui-même s'est trouvé être lent (ce qui est contre nos objectifs de base) et le manque de contrôle sur la mise en œuvre rend difficile à proprement mettre en œuvre l'amélioration de la performance des techniques comme la mise en cache sur elle.
Exemple concret
Je vous ai donné un exemple concret, dans les commentaires pourquoi oData est une mauvaise idée, à la fin de la IQueryable est le Couplage post qui, je le répète ici pour la préservation:
Mise à jour
Netflix vient de à la retraite de son OData catalogue, efficace sur avril 8, 2013.
Ajouté une nouvelle réponse sur pourquoi nous recommandons l'utilisation propre, bien défini intacte DTO pour définir tous les services à distance avec, qui est à distance de services de meilleures pratiques à l'aide de OData ne pas faire la promotion.
Bon article sur pourquoi générique en fonction Api comme OData sont beaucoup plus fragile, complexe et plus difficile à utiliser que l'équivalent d'intention basé sur les Api.