我可以使用WCF服务进行上传和下载吗?

时间:2011-05-21 03:18:09

标签: c# wcf

我正在为学校开展媒体服务器项目,我为此选择了WCF方法。但是我开始怀疑这是不是一个好主意。

获取WCF服务上传和下载文件是一件简单易事的事吗?通过直截了当,我的意思是不涉及很多黑客或第三方库。 WCF服务还将向其消费者/客户端传输音频和视频。

我还应该提一下,有问题的WCF服务是作为IIS之外的Windows托管服务托管的。

这就是我现在想到的:

    [OperationContract]
    bool AddFile(byte[] filedata);
    [OperationContract]
    bool DeleteFile(int fileid);
    [OperationContract]
    byte[] GetFile(int fileid);

1 个答案:

答案 0 :(得分:2)

定义获取和返回Stream数据类型的方法,并确保将绑定配置为使用TransferMode.Streamed。还要确保在绑定时使用的编码很有意思。如果您使用Text,则所有二进制数据都将是base64编码的,这将使您的所有请求/响应的大小膨胀。如果您使用MTOM,那么像流这样的大型二进制数据将作为HTTP主体的单独实体作为纯的未编码二进制数据传输到SOAP主体外部。二进制编码显然会通过线路提供最佳传输,但它不是标准格式,因此不可能与其他非WCF堆栈互操作。如果你是纯WCF,你就无法击败二进制消息编码的性能,所以如果你需要互操作,我强烈推荐它或者回退到MTOM。

另外,到目前为止,我有点假设您正在尝试在SOAP领域内执行此操作。如果您正在使用REST,则可以减轻XML与MTOM与二进制编码的关系,因为您可以发送/接收具有适当内容类型的纯二进制HTTP主体。一切都取决于你想要做什么