【问题标题】:Solutions for dynamic WCF client proxy in Silverlight?Silverlight 中动态 WCF 客户端代理的解决方案?
【发布时间】:2010-01-27 10:29:21
【问题描述】:

我目前需要从 Silverlight (3.0) 应用程序中访问 WCF 服务,但我需要它是动态的。
我可以访问的内容:服务接口 (ServiceContracts) 和数据定义 (DataContracts)。
我需要什么:运行时生成/创建的 WCF 客户端代理。

有解决办法吗?

【问题讨论】:

  • 为什么需要动态代理?您只是想动态设置代理的端点吗?
  • 好吧,我需要整个代理都是动态的,这样我就可以摆脱设计时生成的代理了。
  • 回答“为什么”的问题:我有一个动态的 WCF 主机在运行时公开服务,我有一个运行插件的客户端平台通过客户端平台调用服务,我只想分享服务描述,我计划在 .Net 客户端和 Silverlight 客户端上共享这些相同的服务描述。我希望这是有道理的:)
  • @AnthonyWJones :感谢标签修订。

标签: c# wcf silverlight silverlight-3.0 wcf-client


【解决方案1】:

【讨论】:

  • 谢谢。我已经看过这个了,但这并不容易移植到 Silverlight。我正在寻找适用于 Silverlight 的解决方案...如果目前有的话 :)
  • +1 感谢您的链接!这帮助我解决了类似的问题! :D
【解决方案2】:

我发现了这个“旧”帖子(2008 年 9 月 16 日)。
但我无法让它在 Silverlight 3.0 下正常运行(没有尝试使用以前版本的 Silverlight)。

WorkSight Blog » Blog Archive » A Dynamic WCF Client Proxy in Silverlight

如果你们中的任何人设法使它工作,请告诉我们! :)

【讨论】:

    【解决方案3】:

    我的理解是如果你按照Understanding WCF Services In Silverlight 2中描述的客户端访问流程,你应该可以在运行时选择访问哪个服务,因为你不需要在客户端创建代理。

    本文中的一个 sn-p:

    现在我们可以将注意力转向 客户端应用程序。首先,让我 首先提醒大家 你不应该使用“添加服务 参考”在 Visual Studio 中 神奇的服务客户端创建。这 代码非常冗长,很难 易于管理,编辑容易 被覆盖,而且几乎总是 用作不实际的借口 学习 WCF。

    正如我已经多次提到的, WCF 依赖于 ABC 的概念。 对彼此而言 .NET 和 Silverlight,您可以合并一个 地址和与合同的约束力 在通道工厂中创建一个 渠道。这不只是花哨 概念建筑师讲,这是 正是您的代码的样子 (真的很好的标志 架构!)下面是.NET 我的意思的版本:

    BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
    EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Person.svc");
    IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel();
    
    Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6");
    

    【讨论】:

    • 正如他所说,这是“.NET 版本”。 Silverlight 只支持异步服务调用,大多数服务不提供异步调用接口(IMO 他们不应该)。从那时开始,事情变得更加棘手。
    • 我期望的更像是 K.Kozmic 在 .Net 中所做的事情:请参阅 kozmic.pl/archive/2009/08/09/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多