我正在为学校开展媒体服务器项目,我为此选择了WCF方法。但是我开始怀疑这是不是一个好主意。
获取WCF服务上传和下载文件是一件简单易事的事吗?通过直截了当,我的意思是不涉及很多黑客或第三方库。 WCF服务还将向其消费者/客户端传输音频和视频。
我还应该提一下,有问题的WCF服务是作为IIS之外的Windows托管服务托管的。
这就是我现在想到的:
[OperationContract]
bool AddFile(byte[] filedata);
[OperationContract]
bool DeleteFile(int fileid);
[OperationContract]
byte[] GetFile(int fileid);
答案 0 :(得分:2)
定义获取和返回Stream
数据类型的方法,并确保将绑定配置为使用TransferMode.Streamed
。还要确保在绑定时使用的编码很有意思。如果您使用Text
,则所有二进制数据都将是base64编码的,这将使您的所有请求/响应的大小膨胀。如果您使用MTOM,那么像流这样的大型二进制数据将作为HTTP主体的单独实体作为纯的未编码二进制数据传输到SOAP主体外部。二进制编码显然会通过线路提供最佳传输,但它不是标准格式,因此不可能与其他非WCF堆栈互操作。如果你是纯WCF,你就无法击败二进制消息编码的性能,所以如果你需要互操作,我强烈推荐它或者回退到MTOM。
另外,到目前为止,我有点假设您正在尝试在SOAP领域内执行此操作。如果您正在使用REST,则可以减轻XML与MTOM与二进制编码的关系,因为您可以发送/接收具有适当内容类型的纯二进制HTTP主体。一切都取决于你想要做什么