1

在开发 WCF 服务时,我遇到了将大数据作为方法参数传输的问题(> 4 Mb 的原始大小,不考虑传输/消息开销)。

这个问题的解决方案是使用分块或流式传输,但我看到的所有示例都假设客户端知道使用的方法并使用可用的块大小来发送/接收部分数据,问题(对我来说)是它不可能只调用一种方法,比如

SaveData(DataInformation info)

但是编写包装器方法,它会像迭代一样

SaveDataChunk(byte[] buffer)

它可以以某种方式对客户端透明,只需调用“SaveData”吗?

编辑:小的附加问题,虽然它可以去单独的问题如果我们使用 wcf 流,那么 ServiceContract 中的所有 ServiceOperations 必须满足附加限制,例如“流式传输中发生的操作最多可以与一个输入或输出参数签订合同” ?

如果服务只需要对部分方法进行流式处理,您需要将其移至另一个服务合同吗?有没有另一种方法来处理它?

谢谢

4

1 回答 1

0

Chunking or streamed is transparent to the code it is set in the configuration file.

If you use Data Transfer Objects for input and output, like your DataInformation object you will only have one parameter.

Your byte[] could be a property on the DTO.

于 2010-04-23T11:23:04.347 回答