作为oData公开WCF服务的数据
是否可以将oData与WCF服务应用程序一起使用但不使用WCF数据服务?作为oData公开WCF服务的数据
这将是巨大的,如果有人能阐明的OData更多的光线。我在这个主题上做了一些Google搜索,但每当我搜索“wcf odata”时,我都会获得有关WCF数据服务的信息。
任何帮助/链接将不胜感激。
WCF数据服务是微软实现一般的OData协议。因此,只有WCF数据服务/支持/实施的OData - 一个“正常”的WCF服务不不(并可以不)。
您可能需要详细说明为什么您觉得需要或希望使用OData但不使用WCF数据服务。这个设置有什么问题/问题? 为什么你想只使用“正常”的WCF服务?
更新:好的,所以你想有服务,以不同的方式和不同的方式暴露数据。你可以做的是创建一个定期的WCF服务,它公开了SOAP端点以及一个webHttpBinding
REST端点。这会起作用 - 但是这是一个“常规”的WCF服务,带有参数并返回一些数据结构的方法。这是而不是 WCF数据服务(OData)。
OData更像是一个“这里是我的数据集合,你可以浏览它”这种方法 - 更多的是使用REST将整个数据模型暴露给外部世界。这不会与SOAP混合和匹配 - 这更多地是面向过程的,例如, LoadCustomer
,SaveInvoice
等等。
因此,虽然绝对有可能让面向过程的WCF服务同时公开SOAP和REST端点,但我真的不知道如何混合和匹配“揭露这种资源”方法对于带有SOAP绑定的WCF数据服务/ OData - 我相信这只是行不通的。因此,如果您必须公开WCF数据服务(OData)的数据模型,则需要为SOAP客户端创建第二个完全不同的常规WCF服务,这可能基于最终的相同数据(例如,访问同一个数据库),但它的“脸”看起来很不一样。
微软有一个新的项目叫做WCF WebApi(NuGet Package),它简化了RESTful WCF。它确实需要考虑REST的“表示”部分,以便您可以根据内容协商(或任选您想要的任何约定)以多种表示方式公开您的数据(JSON,XML,oData,PNG等)服务合同运营。目前烘焙到框架中的是支持oData GET queries的能力,通过简单地返回集合.AsQueryable()
。
虽然这不是一个纯粹的WCF/OData的解决方案,为您的问题说话,我以为我会提及情况下,满足您的特定需求的项目。目前的Go-Live许可证可能会被禁止,这可能是该代码的“预览”状态;但如果不是,这可能是您的一个解决方案。
*更新*该项目已被纳入ASP.NET(通常与ASP.NET MVC一起使用),不再属于WCF团队。新产品被称为ASP.NET WebAPI。
实际上,我们正在寻求开发以不同格式显示数据的服务,所以我只是在想,如果我们能将它们集于一身。它不是我想要使用普通的wcf服务,无论什么要求。 – genericuser
数据应该通过oData公开,并且应该是安静的。客户也可能想要SOAP。如果有任何信息可以通过wcf清除我有关oData的概念,那么它有什么可能,这将非常有用。 – genericuser
@ Priya10:更新了我的回应 –