- 论坛徽章:
- 0
|
回复 19# heguangwu
文本与二进制兼容的传输,只有一种,就是采用二进制方式传输。
RPC机制并不适合大量文件传送,这会占用很多内存,而且效率并没有专用的文件传输协议高效,比如实时流传输技术,但小文件,少量文件,是可以用RPC传输的,
具体做法是,客户端一次RPC调用中,传送一小块文件内容(二进制)到服务端,Slice接口如下,其中Write方法的ByteSeq为传送的文件块。
interface FileStore
{
ByteSeq read(string name, int offset, int num);
void write(string name, int offset, ByteSeq bytes);
};
如果文件比较小,比如1M之内,则可以一次传输完成,接口也可以定义为如下方法:
sequence ByteSeq;
interface FileStore
{
ByteSeq get(string name);
void put(string name, ByteSeq bytes);
};
Ice.MessageSizeMax 默认为最大1M的消息报文,这个可以自己调整为合适的。
|
|