Как перенести веб-сервис WCF RESTful на Axis 2 / C (или WSO C ++) - PullRequest
2 голосов
/ 02 февраля 2010

Мы собираемся перевести некоторые приложения веб-служб (в настоящее время в стадии разработки) из WCF / C # в платформу кроссплатформенных веб-служб C ++. Итак, я рассматриваю 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 волшебным образом принимает поток и помещает содержимое непосредственно в тело ответа HTTP. Это отлично подходит для изображений, потому что я могу написать код веб-клиента следующим образом:

<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"/>

Могу ли я?

...