流动上传的音频文件

时间:2013-09-03 06:51:57

标签: sql-server wcf iis streaming media

我开发了一个使用WCF服务,SQL Server数据库和IIS的Microsoft解决方案。

我开发了一个WCF服务来将mp3文件上传到数据库,现在我想用这些文件创建一个流。

在互联网上搜索我发现了这些可能性:

这是一项有人可以上传文件的服务,此文件将在音频流中提供。

客户端将是iOS(Objective-C),Android(Java)和Windows Phone(C#)。

如果我必须上传mp3文件,你推荐我什么?

1 个答案:

答案 0 :(得分:0)

我刚刚创建了类似于您所描述的WCF主机/客户端设置,包括支持iOS和Android的需求。我们所做的是在主机和客户端之间使用BasicHTTPBinding和SOAP消息传递。我们在主机和客户端之间上下发送大量二进制文件,在某些情况下> 1GB,我们通过以下方式执行此操作:

a)将二进制文件编码为XML消息的主体,作为base64文本(参见下面的代码示例)。 b)此外,当二进制文件大于100MB时,我们使用交互方法上传/下载,将二进制文件分块为100mb切片,这些切片作为包发送并在主机或客户端上重新组装。这有助于避免超时和其他问题。 c)您没有问,但所有这些都适用于SSL加密。

BasicHTTPBinding足够通用,足够灵活,可以支持各种客户端设备;只要它在XML中,它就可以处理你抛出的任何东西。在功能上,我们创建一个带有“文本”部分的XML消息(我们将所有与文本相关的信息打包到用户,下载/上传类型等)和我们打包二进制文件的“正文”部分。 XML看起来像这样:

<?xml version="1.0"?>
   <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
   <s:Body>
     <HostConnectResponse xmlns="http://SomeDomain"> 
     <HostConnectResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://schemas.datacontract.org/2004/07/SomeDomain"> 
       <a:BodySection>binaries goes in here</a:BodySection>
       <a:TextSection>&lt;WebServiceParams&gt;&lt;DeviceType value=\"Laptop\" /&gt;&lt;StreamDirection value=\"Host\" /&gt;&lt;ServiceType value=\"FileTransferService\" /&gt;&lt;Direction value=\"Host\" /&gt;&lt;Method value=\"ping\" /&gt;&lt;/WebServiceParams&gt;</a:TextSection>

     </HostConnectResult> 
     </HostConnectResponse> 
   </s:Body> 
   </s:Envelope>

祝你的项目好运。