如何将 WCF RESTful Web 服务移植到 Axis 2/C(或 WSO C++)

发布于 2024-08-19 20:43:36 字数 1167 浏览 6 评论 0原文

我们正在考虑将一些 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。 WCF 框架神奇地获取 Stream 并将内容直接放入 HTTP 响应正文中。这对于图像来说非常有用,因为我可以编写如下所示的 Web 客户端代码:

<img id="viewportX" src="http://www.myservice.com/getimage?rotation=93"/>

编写将图像内容直接返回给调用者的 Axis2/C 服务操作?

所以,我的问题是:如何 我可以在网络客户端中写这个吗?

<img id="viewportX" src="http://www.myservice.com/axis2/some_service/getimage?rotation=93"/>

我可以吗?

We are looking at redoing some web service applications (currently in prototype phase) from WCF/C# to a C++ cross platform web service framework. So, I'm looking at Axis2/C or WSO2 WSF/C++ as possible frameworks. I'd really like to port the functionality already written in the WCF service to the other service frameworks.

Here's the functionality:

  • Web GET calls return JSON - supported by Axis2/Java (not sure about C/C++ versions yet)
  • Can also return arbitrary content (like generated images or pages).

In WCF, you can return JSON by decorating the service operation like this:

[OperationContract]
[WebGet(UriTemplate = "/calltimings", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
TimingInfo[] CallTimings();

where TimingInfo is a simple data contract that serializes to JSON. I can find how to do the same in Axis2 (Java version anyways).

The other call my webservice supports is:

[OperationContract]
[WebGet(UriTemplate = "/ping.htm")]
Stream PingHTML();

where the html page is generated dynamically. There are other similar calls that return a Stream that contains the contents of generated images. The WCF framework magically takes the Stream and puts the contents directly into the HTTP response body. That is great for images, because I can write web client code like this:

<img id="viewportX" src="http://www.myservice.com/getimage?rotation=93"/>

So, my question is: How can I write an Axis2/C service operation that will return image content directly to the caller?

How can I write this in the web client?

<img id="viewportX" src="http://www.myservice.com/axis2/some_service/getimage?rotation=93"/>

Can I?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文