【问题标题】:How to programatically add WCF data service(ODATA) reference in silverlight如何以编程方式在 Silverlight 中添加 WCF 数据服务(ODATA)引用
【发布时间】:2012-01-17 04:49:27
【问题描述】:

我有一个 Oata,即 WCF 数据服务正在运行。silverlight 客户端是否可以仅使用服务的 URL 以编程方式添加该服务的引用?

目前我通过右键单击项目添加服务引用,添加服务引用,发现然后添加服务引用。如何以编程方式完成?

【问题讨论】:

    标签: silverlight wcf-data-services odata


    【解决方案1】:

    这不可能有几个原因,这里有几个:

    • 在 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 响应。

    【讨论】:

      【解决方案2】:

      您应该执行以下操作:

      BasicHttpBinding binding = new BasicHttpBinding();
      var endpoint = new EndpointAddress("<Yours Endpoint Address>");
      var factory = new ChannelFactory<IYourServiceContract>(basicHttpBinding, endpointAddress);
      

      希望这会有所帮助。

      【讨论】:

      • 但是如果我没记错的话,这是针对普通 WCF 服务的。WCF 数据服务也是这样吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多