【问题标题】:WCF Silverlight Service ReferenceWCF Silverlight 服务参考
【发布时间】:2011-10-19 14:08:21
【问题描述】:

我已将 ServiceReference 添加到我的 Silverlight 应用程序。我称它为 WcfServiceReference。我可以编写以下代码

    using ( var client = new WcfServiceReference.WcfDataServiceClient( ) )
    {
        client.GetSpendDataTotalAsync( Guid.NewGuid( ) );
    }

我在想我应该能够引用 client.GetSpendDataTotal(不是 Async),但它不可用。但是,它在应用程序中 - 我可以在我的服务中找到它......可能很明显?

【问题讨论】:

    标签: silverlight wcf


    【解决方案1】:

    Silverlight 仅允许您使用异步方法使用 WCF 服务。一般的想法是,对外部服务的同步调用会占用 UI 线程并使您的应用程序在它们返回之前无响应。请查看this questionthis blog post,了解有关 Silverlight 的更多讨论以及为什么会引导您使用异步服务调用。引用博客文章中的一句话,“插件架构只允许异步请求的全部目的是让插件无法锁定浏览器”。

    Eric Lippert 对即将到来的 async-await 模式的后台工作占用 UI 线程 in this MSDN Magazine article 的问题进行了出色的解释/讨论。绝对值得一读。

    这里要记住的主要事情是,无论后台可能发生多少有用的工作,如果 UI 没有响应,就用户而言,应用程序什么也做不了。在 Silverlight 中使用异步 WCF 服务调用允许您在等待结果的同时对 UI 执行其他操作,而不是让用户想知道为什么他们不能执行任何操作。

    【讨论】:

      【解决方案2】:

      Silverlight 不允许对服务进行非异步调用。在编写 Silverlight 访问 WCF 服务的代码时,请考虑异步。

      【讨论】:

        猜你喜欢
        • 2010-11-18
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多