2011-07-29 25 views
5

¿Es posible utilizar oData con una aplicación de servicio WCF pero no utilizar los servicios de datos WCF?Exponer datos de los servicios de WCF como oData

Será genial si alguien pudiera arrojar más luz sobre oData. He hecho algunas búsquedas en Google sobre este tema, pero cada vez que busco "wcf odata", obtengo información sobre WCF Data Services.

Cualquier ayuda/enlaces serán apreciados.

Respuesta

12

WCF Data Services es la implementación de Microsoft del protocolo general OData. Como tal, solo los Servicios de Datos WCF son/soportan/implementan OData - un servicio WCF "normal" no no (y puede no).

Es posible que necesite elaborar exactamente por qué siente la necesidad o la necesidad de utilizar OData pero no utiliza los servicios de datos WCF. ¿Cuál es el problema/problema que tiene con esa configuración? ¿POR QUÉ desea utilizar solo un servicio WCF "normal"?

Actualización: bien, por lo que quieren tener los servicios que exponen los datos de diferentes maneras y con diferentes métodos. Lo que podría hacer es crear un servicio WCF regular que exponga ambos extremos SOAP así como un punto final REST webHttpBinding. Esto funcionará, pero luego es un servicio WCF "regular", con métodos que toman parámetros y devuelven cierta estructura de datos. Esto es no WCF Data Service (OData).

OData es más de un "aquí está mi colección de datos, se puede navegar alrededor de ella" tipo de enfoque - es más sobre la exposición de todo un modelo de datos al mundo exterior usando REST. Esto no se mezcla y combina con SOAP, que está mucho más orientado a los procedimientos, p. LoadCustomer, SaveInvoice y así sucesivamente.

Así que si bien es absolutamente posible tener servicios WCF orientados a procedimientos que expongan los puntos finales SOAP y REST al mismo tiempo, realmente no veo cómo se puede mezclar y combinar el tipo de enfoque "exponer-este-recurso" para WCF Data Services/OData con un enlace SOAP: esto simplemente no funciona, creo.

Así que si debe exponer su modelo de datos de WCF Data Services (OData), tendrá que crear un segundo servicio WCF bastante diferente para los clientes SOAP, que podría basarse en los mismos datos al final (accede a la misma base de datos, por ejemplo), pero su "cara" se verá bastante diferente.

+0

en realidad estamos buscando desarrollar servicios que expongan datos en diferentes formatos, así que solo estaba pensando, si podemos tener todo en uno. No es que quiera usar el servicio de wcf normal, lo que sea que se ajuste al requisito. – genericuser

+0

Los datos deben exponerse sobre oData y deben ser relajantes. Los clientes también podrían querer SOAP. Si hay alguna información que pueda aclarar mis conceptos sobre oData con wcf, lo que podría ser posible con ella, será muy útil. – genericuser

+0

@ Priya10: actualizó mi respuesta –

6

Hay un nuevo proyecto (ish) de Microsoft llamado WCF WebApi (NuGet Package), que simplifica hacer WCT RESTful. Realmente lleva a corazón la parte "Representación" de REST, para que pueda exponer sus datos en muchas representaciones (JSON, XML, oData, PNG, etc.) en función de la negociación de contenido (u opcionalmente cualquiera que sea la convención que desee) todos de la misma operación de contrato de servicio. Actualmente horneado en el marco es la capacidad de admitir oData GET queries, simplemente devolviendo una colección .AsQueryable().

Si bien esta no es una solución pura de WCF/oData, ya que su pregunta está hablando, pensé que mencionaría el proyecto en caso de que se ajustara a sus requisitos específicos. La licencia actual de Go-Live podría ser prohibitiva, al igual que el estado de "vista previa" de este código; pero si no, esta puede ser una solución para ti.

* ACTUALIZACIÓN * Este proyecto se rodó en ASP.NET (generalmente junto con ASP.NET MVC) y ya no está bajo el equipo de WCF. El nuevo producto se llama ASP.NET WebAPI.

Cuestiones relacionadas