将图像和基于文本的数据发布到wcf服务

时间:2010-05-05 11:59:37

标签: wcf web-services rest

我需要编写一个Web服务,允许我将图像发布到服务器以及有关该图像的一些其他信息。

我对开发Web服务(通常是客户端开发人员)非常陌生,所以我有点难以理解我需要研究和尝试的内容。

如何将二进制数据和纯文本发布到服务器中? 我应该使用RequestFormat什么? 看起来我的选项是xml或json。我可以使用其中任何一种吗?

有点狡猾的问题,但我只是需要一些方向而不是解决方案,因为我似乎无法在网上找到太多。

3 个答案:

答案 0 :(得分:1)

在阅读了这篇guide to building restuful services之后,我认为我的问题是错误的。图像和文本实际上是两个独立的资源,所以应该单独处理。我现在有一个服务,上传图像并返回一个uri到该图像和一个单独的服务,以发布与该图像相关的文本数据以及该图像的uri。

答案 1 :(得分:1)

虽然我没有WCF的经验,但我可以告诉你一个无痛的方法来处理REST API中的二进制数据的POSTING / PUTting(特别是混合了text + binary的二进制数据)是将二进制数据编码为 base64 并将其视为API中的任何其他文本数据。

是的,base64在大小和额外的编码/解码过程方面有轻微的开销,但是,base64通常仅 1.37x 大于二进制。

我发现在许多情况下,开销非常值得避免API中二进制数据可能带来的痛苦,特别是当您需要POST / PUT二进制和文本数据的组合时。如果你想发布一个图像和其他元/文本数据,你可以使用json字符串轻松完成(“image”将是你的base64编码图像)......

{
    "image":"aGVsbG8...gd29ybGQ=", 
    "user" : 1234, 
    "sub_title": "A picture from my trip to Pittsburgh"
}

这绝不是所有案例的最佳解决方案,正如我所说,我不是WCF专家,但在一般情况下,一定要考虑让你的生活更轻松。

答案 2 :(得分:0)

如果您在WCF 3.5中使用WebServiceHost,则需要阅读this。如果你必须使用WCF来做基于HTTP的东西,那么试着进入.Net 4.我相信他们已经做了很多事情。

如果你坚持使用3.5,欢迎来到痛苦的世界。找到Aaron Skonnard关于这个主题的所有内容。正如我在其他问题的评论中所建议的那样,学习如何使用SvcTrace。