在节点机器上部署的“checkResult”服务被定义为将节点上的结果返回给发送请求的集群控制器。节点上的结果(以文件形式)可能在长度上有很大差异,就像每日日志文件一样。
起初,我认为只使用一个字符串来打包文件的整个内容就可以了,所以我定义了
checkResult(inType *in,OutType *out)
其中OutType *是char *。然后我意识到字符串可能是KB长度甚至更多。所以我想知道在这里使用字符串是否合适。
我google了很多,找不到wsdl中允许的最大长度(也可能与本地maxbuffer长度冲突),也没有找到有关传输文件类型参数的任何信息。
可能会建议使用struct类型,但它可能是如此嵌套的文件,并且当内部的某些元素可能为零且不存在时难以解析。
当您需要在网络服务中返回文件类型结果或大量数据时,您会怎么做?
p.s服务器和客户端都在C。
答案 0 :(得分:1)
在(SOAP)Web服务请求或响应中传输大量数据时,通常最好使用附件机制,而不是将数据作为正文的一部分。可能是考虑附加机制的顺序(最广泛到最窄的采用):
理想情况下,您可以使用框架直接从WSDL指示基于MTOM的Web服务生成代码存根。
此类WSDL文档的关键部分包括:
如果您正在以契约优先工作并拥有WSDL,本网站第1.2节(http://www.w3.org/Submission/WS-MTOMPolicy/)中的示例显示了要进行的简单添加声明并应用MTOM政策。同一站点的附录I显示了一个架构元素的示例,该元素允许Web服务客户端或服务器识别对MTOM附件的引用。
我没有在C中实现过Web服务或客户端,但对最近更新的软件包的简要扫描显示gSoap(http://www.cs.fsu.edu/~engelen/soap.html)可能是帮助你的努力。
查看这些文档,看看它们是否有助于推进项目。