zoukankan      html  css  js  c++  java
  • 用Remoting传输大文件

    近来因为项目需要,我们要做一个像分布式的文件存储一样的方案.所以上网来找了一下资料,常见的解决方案有如下两种:

    1.将文件内容转换成一个Base64编码的字符串.然后调用WebServices或者.Net Remoting 的传输方法.

    2.将文件读到字节数组中,然后传输.

    应该说,这两种方案可以解决大多数的需求 ,可是我总觉得不够理想.将一个5M以上的文件转成Base64编码的String,我觉得不可思议,同样,将一个5M的文件读到内存,10个Request就是50M,100个就是500M,这一个,也不太能接收.

    我希望能有一种更好的解决方案.可是,Stream继承自MarshalByRefObject,是不能直接传输的.我想了很久,终于有了一点灵感,Stream是继承是MarshalByRefObject的,也就是说,我们可以在客户端调Stream的代理.比如上传文件,我们可以先在服务器端执行FileStream fs=new FileStream(config.SavePath+fileName,FileMode.Create),然后将fs的代理传给客户端,这时客户端调用fs.Write(byte),这时内容应该被写到了服务器上了.读取的,同理.

    当然,做为一个为多个应用程序服务的基础服务,返回一个Stream是不合理的.我们应该封装一个Helper方法,来为其它程序服务.

    这目前仅仅是一个想法,明天实践一下.

    我相信,应该会有更优秀的解决方案.

  • 相关阅读:
    2020916 spring总结
    20200915--事务
    20200915-mybatis基础
    20200911--使用注解开发
    20200910--Spring配置
    20200909--spring基础-IOC
    20200909-待补充
    20200909记我所看到的问题
    20200909-spring基础一
    面向对象
  • 原文地址:https://www.cnblogs.com/bqrm/p/1255942.html
Copyright © 2011-2022 走看看