0

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

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

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

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

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

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

4

1 回答 1

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>

祝你的项目好运。

于 2013-09-04T07:46:03.750 回答