在开发WCF服务时,我遇到了将大数据作为方法参数传输的问题(原始大小> 4 Mb,不考虑传输/消息开销)。
这个问题的解决方案是使用分块或流,但我见过的所有样本都假设客户端知道使用的方法并使用可用的块大小来发送/接收数据部分,问题(对我来说)就是说不可能只调用一个方法,比如
SaveData(DataInformation info)
但是编写包装器方法,而不是像
那样迭代smthSaveDataChunk(byte[] buffer)
是否可以以某种方式使客户端变得透明,只是调用'SaveData'?
编辑: 另外一个小问题,虽然它可以分开问题 如果我们使用wcf流,那么ServiceContract中的所有ServiceOperations都必须满足附加限制,例如“在流传输中发生的操作可以与最多一个输入或输出参数签订合同”?
如果服务只需要部分方法的流式传输,您需要将其移至另一个服务合同吗?有没有其他方法来处理它?</ p>
由于
答案 0 :(得分:0)
分块或流式传输对于在配置文件中设置的代码是透明的。
如果您使用数据传输对象作为输入和输出,就像您的DataInformation对象一样,您将只有一个参数。
您的byte []可能是DTO上的属性。