我们正在考虑将一些 Web 服务应用程序(目前处于原型阶段)从 WCF/C# 重做为 C++ 跨平台 Web 服务框架。因此,我将 Axis2/C 或 WSO2 WSF/C++ 视为可能的框架。我真的很想将 WCF 服务中已经编写的功能移植到其他服务框架。
这是功能:
- Web GET 调用返回 JSON - Axis2/Java 支持(尚不确定 C/C++ 版本)
- 还可以返回任意内容(如生成的图像或页面)。
在 WCF 中,您可以通过像这样装饰服务操作来返回 JSON:
[OperationContract]
[WebGet(UriTemplate = "/calltimings", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
TimingInfo[] CallTimings();
其中 TimingInfo 是一个序列化为 JSON 的简单数据合约。我可以在 Axis2(Java 版本)中找到如何做同样的事情。
我的网络服务支持的另一个调用是:
[OperationContract]
[WebGet(UriTemplate = "/ping.htm")]
Stream PingHTML();
html页面是动态生成的。还有其他类似的调用会返回Stream
包含生成图像内容的 a 。WCF 框架神奇地采用 Stream 并将内容直接放入 HTTP 响应正文中。这对图像非常有用,因为我可以编写这样的 Web 客户端代码:
<img id="viewportX" src="http://www.myservice.com/getimage?rotation=93"/>
所以,我的问题是: 如何编写一个 Axis2/C 服务操作,将图像内容直接返回给调用者?
如何在 Web 客户端中编写此内容?
<img id="viewportX" src="http://www.myservice.com/axis2/some_service/getimage?rotation=93"/>
我可以吗?