SlideShare una empresa de Scribd logo
1 de 13
Как правильно готовить SOAP в мире С++
SOAP
 
 
WSDL
 
 
GSOAP
 
 
 
 
 

Más contenido relacionado

Más de Ciklum Ukraine

Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++Ciklum Ukraine
 
Collection view layout
Collection view layoutCollection view layout
Collection view layoutCiklum Ukraine
 
Introduction to auto layout
Introduction to auto layoutIntroduction to auto layout
Introduction to auto layoutCiklum Ukraine
 
Unit Testing: Special Cases
Unit Testing: Special CasesUnit Testing: Special Cases
Unit Testing: Special CasesCiklum Ukraine
 
Model-View-Controller: Tips&Tricks
Model-View-Controller: Tips&TricksModel-View-Controller: Tips&Tricks
Model-View-Controller: Tips&TricksCiklum Ukraine
 
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...Future of Outsourcing report published in The Times featuring Ciklum's CEO To...
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...Ciklum Ukraine
 
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"Ciklum Ukraine
 
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod..."To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...Ciklum Ukraine
 
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy""Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"Ciklum Ukraine
 
Ciklum Mobile Development Capability: Project Clients' References
Ciklum Mobile Development Capability: Project Clients' ReferencesCiklum Mobile Development Capability: Project Clients' References
Ciklum Mobile Development Capability: Project Clients' ReferencesCiklum Ukraine
 
Mecom Group's Digital Innovation and IT Sourcing Strategy
Mecom Group's Digital Innovation and IT Sourcing StrategyMecom Group's Digital Innovation and IT Sourcing Strategy
Mecom Group's Digital Innovation and IT Sourcing StrategyCiklum Ukraine
 
Journey and lessons from launching a new SaaS based marketing platform
Journey and lessons from launching a new SaaS based marketing platform Journey and lessons from launching a new SaaS based marketing platform
Journey and lessons from launching a new SaaS based marketing platform Ciklum Ukraine
 
Marmalade: more platforms, more possibilities
Marmalade: more platforms, more possibilitiesMarmalade: more platforms, more possibilities
Marmalade: more platforms, more possibilitiesCiklum Ukraine
 

Más de Ciklum Ukraine (20)

Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++
 
Collection view layout
Collection view layoutCollection view layout
Collection view layout
 
Introduction to auto layout
Introduction to auto layoutIntroduction to auto layout
Introduction to auto layout
 
Groovy on Android
Groovy on AndroidGroovy on Android
Groovy on Android
 
Unit Testing: Special Cases
Unit Testing: Special CasesUnit Testing: Special Cases
Unit Testing: Special Cases
 
Material design
Material designMaterial design
Material design
 
Kanban development
Kanban developmentKanban development
Kanban development
 
Mobile sketching
Mobile sketching Mobile sketching
Mobile sketching
 
More UX in our life
More UX in our lifeMore UX in our life
More UX in our life
 
Model-View-Controller: Tips&Tricks
Model-View-Controller: Tips&TricksModel-View-Controller: Tips&Tricks
Model-View-Controller: Tips&Tricks
 
Unit Tesing in iOS
Unit Tesing in iOSUnit Tesing in iOS
Unit Tesing in iOS
 
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...Future of Outsourcing report published in The Times featuring Ciklum's CEO To...
Future of Outsourcing report published in The Times featuring Ciklum's CEO To...
 
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"Михаил Попчук "Cкрытые резервы команд или 1+1=3"
Михаил Попчук "Cкрытые резервы команд или 1+1=3"
 
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod..."To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...
"To be, rather than to seem” interview with Ciklum VP of HR Marina Vyshegorod...
 
Why to join Ciklum?
Why to join Ciklum?Why to join Ciklum?
Why to join Ciklum?
 
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy""Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
"Marmalade" presentation at Ciklum event "Defining your Mobile Strategy"
 
Ciklum Mobile Development Capability: Project Clients' References
Ciklum Mobile Development Capability: Project Clients' ReferencesCiklum Mobile Development Capability: Project Clients' References
Ciklum Mobile Development Capability: Project Clients' References
 
Mecom Group's Digital Innovation and IT Sourcing Strategy
Mecom Group's Digital Innovation and IT Sourcing StrategyMecom Group's Digital Innovation and IT Sourcing Strategy
Mecom Group's Digital Innovation and IT Sourcing Strategy
 
Journey and lessons from launching a new SaaS based marketing platform
Journey and lessons from launching a new SaaS based marketing platform Journey and lessons from launching a new SaaS based marketing platform
Journey and lessons from launching a new SaaS based marketing platform
 
Marmalade: more platforms, more possibilities
Marmalade: more platforms, more possibilitiesMarmalade: more platforms, more possibilities
Marmalade: more platforms, more possibilities
 

CiklumCPPSat: Alexandr Babko "Specific usage of SOAP"

Notas del editor

  1. SOAP (Простой протокол доступа к объектам) родился на свет в далеком 1998 году, с подачи людей работавших в то время в Microsoft.  Вообще, на самом деле до этого у Microsoft уже был очень простой протокол, который назывался XML-RPC, но он показался слишком простым и потому на его базе и создали SOAP. 
  2. Изначально, предполагалось использовать SOAP для удаленного вызова процедур(RPC), Но последняя спецификация предполагает возможность обмена произвольными XML сообщениями. Теоретически в качестве транспорта может быть ипользован любой из протоколов прикладного уровня (SMTP, HTTP и т.д.), но на практике чаще всего используют HTTP/HTTPS.
  3. Формат SOAP сообщения - XML, и помимо полезной с точки зрения бизнес логики информации о вызове, сообщение содержит еще кучу служебной информации, что собственно увеличивает размер сообщения и замедляет процесс передачи. 
  4. как только SOAP появился на свет, его сразу же придумали использовать в больших и сложных веб сервисах, которые базируются в числе прочего на WSDL (язык описания веб сервисов. основанный опять же таки на XML). по своей сути WSDL - это связующее звено между веб-сервисом и остальным окружающим миром, такой себе договор о том как именно можно  с этим самым веб сервисом общаться.
  5. Пока вроде все просто :) Смотрим в WSDL необходимого нам WEB сервиса, который конечжно же. написан на человекочитабельном XML, вооружаемся любимым C++, подтягиваем какой нибудь XML парсер и либу для работы с HTTP и вперед кодить.
  6. Но беда в том, что человекочитабельный WSDL, для взрослых вебсервисов, обычно выглядит очень длинно и местами запутанно, и может уйти не один день, на то чтобы понять как именно с этим самым веб сервисом можно договорится. ну и кода пописать прийдется всетаки изрядно.
  7. Собственно, на помощь в таком случае может прийти тулкит gSOAP. (Если конечно нам все еще хочется делать это на с++) GSOAP умеет генерировать с++ враперы читая WSDL, а также  берет на себя транспортные расходы.
  8. Это кросплатформенная штука, которая поддерживает работу на  ( WinCE, Symbian, PalmOS, Windows, Linux, Unix, Mac OS X и т.д. ), причем можно скачать готовые бинари под конкретную платформу и не заморачиваться со сборкой. К его достоинствам, так же можно отнести то, что  есть коммерческая лицензия, под которой ее можно использовать в коммерческих продуктах. Кроме того есть gSOAP Public License, которая разрешает коммерческое использование при условии отсылки авторам gSOAP модификаций gSOAP, сделанных при его использовании. Относительная стабильность, всетаки разработка ведется с 2001 года и за 10 лет успели там успели пофиксить немало багов (правда стоит заметить что при этом добавляли и новые) тулкит позволяет генерировать С или С++ код, и для последнего использовать или же не использовать STL Еще с помощью этой библиотеки можно быстро набросать Web сервис на С++, о чем есть замечательная статья на хабре.
  9. для наших потребностей GSOAP предоставляет две утилиты: wsdl2h -  позволяет сгенерировать си-подобное описание сервиса на основе wsdl. soapcpp2 - отвечает за преобразование того, что вышло из wsdl2h в код клиентского прокси ну или сервера если вам всетаки приходится создавать веб сервисы на с++.
  10. Пример использования: скармливаем wsdl2h - wsdl файл и на один шаг становимся ближе к с++
  11. далее, результат предыдущего шага отдаем soapcpp2 и на выходе получаем прокси-класс, через который собственно можно делать обращения к сервису,  soapH.cpp и soapC.h код парсера сообщений soapStub заголовочная часть описывающая структуры данных используемые клиентом  и сервером 
  12. по итогу остается добавить все что успешно нагенерилось + файлы ядра gsoap в наш проект и можно начинать общаться с Web сервисом