我开发了一个使用WCF服务,SQL Server数据库和IIS的Microsoft解决方案。
我开发了一个WCF服务来将mp3文件上传到数据库,现在我想用这些文件创建一个流。
在互联网上搜索我发现了这些可能性:
这是一项有人可以上传文件的服务,此文件将在音频流中提供。
客户端将是iOS(Objective-C),Android(Java)和Windows Phone(C#)。
如果我必须上传mp3文件,你推荐我什么?
答案 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><WebServiceParams><DeviceType value=\"Laptop\" /><StreamDirection value=\"Host\" /><ServiceType value=\"FileTransferService\" /><Direction value=\"Host\" /><Method value=\"ping\" /></WebServiceParams></a:TextSection>
</HostConnectResult>
</HostConnectResponse>
</s:Body>
</s:Envelope>
祝你的项目好运。