当对象被反序列化时从WCF流读取?

当对象被反序列化时从WCF流读取?,wcf,datatable,streaming,paging,Wcf,Datatable,Streaming,Paging,我目前有一个WCF服务,它启用了流媒体,这大大减少了客户端应用程序的内存使用,但是我希望能够读取流中的对象,因为它们在客户机上被反序列化并填充DataTable,而不是等待接收所有对象,因为获取所有数据仍然需要很长时间 我有一本通读的书,似乎和我的目标有关,但它似乎已经过时了。我想知道是否有一种更现代的方法可以使用WCF 4.0实现这一点 更新: 因此,我使用上面链接的文章中描述的方法在我的服务中实现了该操作,但在运行时遇到了以下异常: 无法加载操作“GetMyDtos”,因为它的参数或返回类型

我目前有一个WCF服务,它启用了流媒体,这大大减少了客户端应用程序的内存使用,但是我希望能够读取流中的对象,因为它们在客户机上被反序列化并填充DataTable,而不是等待接收所有对象,因为获取所有数据仍然需要很长时间

我有一本通读的书,似乎和我的目标有关,但它似乎已经过时了。我想知道是否有一种更现代的方法可以使用WCF 4.0实现这一点

更新:

因此,我使用上面链接的文章中描述的方法在我的服务中实现了该操作,但在运行时遇到了以下异常:

无法加载操作“GetMyDtos”,因为它的参数或返回类型为System.ServiceModel.Channels.Message,或者类型为MessageContractAttribute和其他不同类型的参数。使用System.ServiceModel.Channels.Message或带有MessageContractAttribute的类型时,该方法不得使用任何其他类型的参数

我的行动有以下特征:

Message GetMyDtos( bool param1, int? param2, bool param3 );
所以我把它改成:

Message GetMyDtos( GetMyDtosParameters getMyDtosParameters );
GetMyDtosParameters如下所示:

[MessageContract]
public class GetMyDtosParameters
{
    [MessageHeader]
    public bool Param1 { get; set; }
    [MessageHeader]
    public int? Param2 { get; set; }
    [MessageHeader]
    public bool Param3 { get; set; }
}
现在在服务端一切正常,但在向客户端添加或更新服务引用时我遇到了一个问题。GetMyDtos方法是在客户端生成的,没有任何方法参数,也没有重载,因此我无法将任何参数传递给服务操作

更新2:


即使不传入任何参数,我也能够从服务返回结果。我猜使用默认值是因为它们是原语和/或可空值。但是,我仍然希望能够使用不同的参数值调用服务,但我无法这样做。

这篇文章背后的想法仍然有效。你为什么说它过时了?流式传输WCF消息主要涉及处理WCF消息本身,其中描述的技术应该可以工作。您对此有什么问题吗?

我还没有尝试过那篇文章中的方法,因为我想避免更改服务,所以我想真正的问题是我可以在客户端上做些什么吗?我说它过时的原因是因为它是从2008年开始的,而且WCF4.0中有大量的新功能,所以我认为可能有一些东西可以让它更容易实现。