WCF服务器客户端与对象的异步回调

时间:2013-03-04 14:26:53

标签: wcf callback

我有服务器和客户端 客户端在服务器上调用一个方法,响应的服务器必须准备一个Dictionary并发送回客户端 此操作可能需要一些时间 它应该是异步的。我阅读说明和例子 主要是BeginXXX和EndXXX IAsyncResult。但是,如果我需要服务器返回对象的字典。我该如何实现?

我认为在发送回调委托时,我可以将其中一个客户端函数的签名作为委托发送,当服务器完成时,它将使用正确的字典数据调用委托。

2 个答案:

答案 0 :(得分:1)

1)在VS(或SLSvcUtil)中添加服务引用可生成包含Silverlight项目事件的便捷代理代码。如果需要,您可以使用它来为您的“服务/服务器代理”实现回调模式。您可以将此代码与常规.net应用程序一起使用以及进行一些修改。

2)VS for .Net项目可以使用异步方法生成代理。 SvcUtil - too

3)对于实际长时间运行的操作,您可以使用callbacks的WCF服务(+一些绑定限制)。

答案 1 :(得分:0)

如果我以正确的方式理解你,你会问这个问题(根据电子图书馆项目): WCF服务器端:

 EBooksLibraryEntities ebe = new EBooksLibraryEntities();    
 public List<Book> tabBooks()
    {
        return ebe.Books.ToList();
    }

客户方:

 ServiceReference1.Service1Client sr = new ServiceReference1.Service1Client();
    List<ServiceReference1.Book> llb = new List<ServiceReference1.Book>();
    private void GetBooksByAuthor()
    {
        sr.tabBooksByAuthorCompleted += new EventHandler<ServiceReference1.tabBooksByAuthorCompletedEventArgs>(sr_tabBooksByAuthorCompleted);
        sr.tabBooksByAuthorAsync();
    }
    void sr_tabBooksByAuthorCompleted(object sender, ServiceReference1.tabBooksByAuthorCompletedEventArgs e)
    {
        foreach (var item in e.Result)
        {
            yourList.Add(item);
        }
    }