1

我有一个通过 WCF 将数据发送到服务器的 Windows 移动应用程序。

它发送的数据有时会超出 Windows 移动设备的限制。我想知道流式传输是否有助于不需要将我必须一次发送到内存中的所有数据都保存在内存中。

这是一个简单的例子:

[DataContract]
public class MainContract
{
    [DataMember]
    public Guid  ID { get; set; }

    [DataMember]
    public List<SubContract> SubContract { get; set; }
}

[DataContract]
public class SubContract
{
    [DataMember]
    public Guid ID { get; set; }

    [DataMember]
    public string ImageCaption { get; set; }

    [DataMember]
    public Byte[] ImageAsBytes { get; set; }
}

假设我只有 1 个MainContract对象。但是里面有很多SubContract东西。(我的真实情况更复杂)。

将所有内容MainContract保存在内存中对于客户端来说太多了。

流式传输是否允许我通过网络分段发送数据?还是我仍然必须在客户端缓冲所有内容,而流式传输只是有助于接收大数据?

4

1 回答 1

1

据我所知,如果您的方法接受 aMainContract您将需要在客户端将其完全保存在内存中,以便将序列化结果流式传输到 WCF 主机。

如果加载完整MainContract会在客户端占用太多内存,我会调整服务以允许这样的事情:

public Guid CreateMainContract(MainContract obj); // return unique id
public Guid CreateSubContract(Guid mainContractToAddTo, SubContract obj);

然后修改调用代码,通过循环调用上述操作,将数据伪流到WCF主机。(显然,您需要将其更改为更新/删除情况等)。

于 2010-10-22T20:49:48.500 回答