具有对象的WCF服务器客户端异步回调
我有服务器和客户端。具有对象的WCF服务器客户端异步回调,wcf,callback,Wcf,Callback,我有服务器和客户端。 客户端在服务器上调用一个方法,响应的服务器必须准备一个字典并发送回客户端。 此操作可能需要时间。 它应该是异步的。我阅读说明和示例。 主要是BeginXXX和EndXXX IAsyncResult。但是如果我需要服务器返回对象字典。我如何实现这一点 我认为,当发送回调委托时,我可以将一个客户端函数的签名作为委托发送,当服务器完成时,它将使用适当的字典数据调用委托。1)在VS中添加服务引用(或)为Silverlight项目生成带有事件的方便的代理代码。如果需要,可以使用它为“
客户端在服务器上调用一个方法,响应的服务器必须准备一个字典并发送回客户端。
此操作可能需要时间。
它应该是异步的。我阅读说明和示例。
主要是BeginXXX和EndXXX IAsyncResult。但是如果我需要服务器返回对象字典。我如何实现这一点 我认为,当发送回调委托时,我可以将一个客户端函数的签名作为委托发送,当服务器完成时,它将使用适当的字典数据调用委托。1)在VS中添加服务引用(或)为Silverlight项目生成带有事件的方便的代理代码。如果需要,可以使用它为“服务/服务器代理”实现回调模式。您可以将此代码用于常规的.net应用程序,也可以进行一些修改 2) VS for.Net项目可以使用异步方法生成代理。SvcUtil-
3) 对于真正的长时间运行的操作,您可以使用带有(+一些绑定限制)的WCF服务。如果我以正确的方式理解您,您会问这个问题(基于eLibrary项目): WCF服务器端:
EBooksLibraryEntities ebe = new EBooksLibraryEntities();
public List<Book> tabBooks()
{
return ebe.Books.ToList();
}
EBooksLibraryEntities ebe=新的EBooksLibraryEntities();
公共列表tabBooks()
{
返回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);
}
}
servicerence1.Service1Client sr=newservicerence1.Service1Client();
List llb=新列表();
私有void GetBooksByAuthor()
{
sr.tabBooksByAuthorCompleted+=新事件处理程序(sr_tabBooksByAuthorCompleted);
sr.tabBooksByAuthorAsync();
}
void sr_tabBooksByAuthorCompleted(对象发送方,服务引用1.tabBooksByAuthorCompletedEventArgs e)
{
foreach(e.Result中的var项)
{
添加(项目);
}
}