【问题标题】:WCF from Silverlight without using Add Service ReferenceSilverlight 中的 WCF,不使用添加服务参考
【发布时间】:2010-12-09 16:20:17
【问题描述】:

David Betz 在他的文章中描述了如何在不使用“添加服务引用”选项的情况下创建对 WCF 的引用: http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2

创建 WCF 服务后,silverlight 中的语句如下:

  BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
  EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Person.svc");
  IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel();

...

当我不使用“添加服务引用”来构建代理时,如何从 Silverlight 引用 WCF 中创建的类型(例如 IPersonService 接口)?

【问题讨论】:

    标签: silverlight wcf


    【解决方案1】:

    想法是在silverlight应用程序中引用包含WCF数据协定的程序集,并且要做到这一点,你需要欺骗VS让它认为程序集是一个SL程序集,他在这里详细描述了这一点

    http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight

    这并不容易,这是需要做的事情

    只需使用相同的 ILDasm/Edit/ILAsm 程序已经提到告诉 装配使用适当的 Silverlight 程序集而不是 .NET 程序集。这是一个极 什么都没有的简单程序 不仅仅是一个替换,一个过程 可以很容易地自动化 最小的努力。它不应该带你 花了很多时间来写一个简单的 .NET 应用程序为您执行此操作。 这只是一个简单的.NET Silverlight 转换器和验证器 (测试不支持的程序集 在 Silverlight 中)。把那个应用程序 在您的后期构建事件中(其中之一 Visual 的 5 大最大功能 工作室!),你就完成了。没有特别的 二进制十六进制值搜索是必要的。 你所做的只是改变两个 记录的设置(公钥 令牌和版本)。

    第二个解决方案是文件级解决方案,您在包含所需数据合同实现的文件上使用添加链接选项到 SL,并确保它们仅包含允许构建 SL 并且不引用大量外部程序集的类型,通常是那些WCF 服务和数据合同应满足条件。

    我可以写更多,但它只是从那个链接复制粘贴

    【讨论】:

      【解决方案2】:

      您还必须根据异步模式(BeginXXX/EndXXX)拆分 IPersonService 中的所有方法声明,因为 Silverlight 仅支持异步 WCF(即使在后台线程中)。

      作为帮助,您可以添加服务引用,然后从 Reference.cs 复制生成的 IPersonService(所有方法都将解耦)。然后你可以删除引用。

      但是,如果您的服务合同经常更改,您必须再次重复 Add-Service 程序,从这里开始,我想说,使用 Add-Service-Reference 功能更容易,而不是与您的共享合同应用服务器。

      【讨论】:

        【解决方案3】:

        我只想检测一件事。通常,您需要在 WCF 服务中具有更复杂的 NET 支持的命名空间。因此,您必须有真正的理由在您的 WCF 服务(或服务库)中引用 Silverlight 子集。有很多方法可以 通过添加服务参考使用所谓的传统方式。它们在好文章enter link description here中介绍。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 2015-04-09
          • 1970-01-01
          • 2013-12-21
          • 2011-04-13
          • 2013-12-05
          相关资源
          最近更新 更多