如何以编程方式在Silverlight中添加WCF数据服务(ODATA)引用
问题描述:
我有一个Oata,即WCF数据服务正在运行。是否有可能让Silverlight客户端以编程方式仅将该服务的引用添加到服务的URL中?如何以编程方式在Silverlight中添加WCF数据服务(ODATA)引用
当前我通过右键单击项目,添加服务引用,发现然后添加服务引用来添加服务引用。如何以编程方式执行该操作?
答
这是不可能的几个原因,他们夫妇在这里:
添加在Visual Studio服务引用生成代码(实体客户端类和其他类型由服务暴露)。 Silverlight没有必要的库来处理这个任务相当容易(很多代码将不得不被重写/移植到Silverlight中)。
为了让您的代码实际使用它,您需要编译生成的代码。在SL中没有办法做到这一点,因为它不包含任何编译器。
实际使用并不是很实际,因为使用它的代码必须能够处理它不知道的类型(上面代码生成的类型)。所以你必须使用很多反射或其他类似的技巧。
如果你想写可以访问任意的OData服务,我建议你看看Microsoft.Data.OData.dll客户端应用程序。它是最近CTP的一部分:http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/announcing-wcf-data-services-oct-2011-ctp-for-net-4-and-silverlight-4.aspx 它实现了OData格式的读写器(类似于XmlReader/XmlWriter,但是用于OData)。特别是它不需要预先知道服务的知识,它可以读取任何OData响应。
答
你应该做到以下几点:
BasicHttpBinding binding = new BasicHttpBinding();
var endpoint = new EndpointAddress("<Yours Endpoint Address>");
var factory = new ChannelFactory<IYourServiceContract>(basicHttpBinding, endpointAddress);
希望这会有所帮助。
但是,这是对于正常的WCF服务,如果我没有wrong.Is它也是WCF数据服务的同样的方式? – 2012-01-17 08:56:11