WCF Silverlight服务参考

Kel*_*ine 1 silverlight wcf

我在Silverlight应用程序中添加了ServiceReference.我把它叫做WcfServiceReference.我可以编写以下代码

    using ( var client = new WcfServiceReference.WcfDataServiceClient( ) )
    {
        client.GetSpendDataTotalAsync( Guid.NewGuid( ) );
    }
Run Code Online (Sandbox Code Playgroud)

我以为我应该能够引用client.GetSpendDataTotal(不是Async),但它不可用.但是,它在应用程序中 - 我可以在我的服务中找到它...可能是显而易见的事情?

Zan*_*son 5

Silverlight仅允许您使用异步方法来使用WCF服务.一般的想法是,对外部服务的同步调用会占用UI线程,并使您的应用程序无响应,直到它们返回为止.请查看此问题此博客文章,了解有关Silverlight的更多讨论以及为何您被引导使用异步服务调用.引用博客文章,"插件架构的唯一目的是允许异步请求,以致插件无法锁定浏览器".

Eric Lippert 关于即将发布的async-await模式的MSDN杂志文章中对后续工作问题进行了很好的解释/讨论.绝对值得一读.

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