Мы собираемся перевести некоторые приложения веб-служб (в настоящее время в стадии разработки) из 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"/>
Могу ли я?