SOA with C, C++, PHP and more

Like this? Share it with your network

Share

SOA with C, C++, PHP and more

  • 6,241 views
Uploaded on

This presentation at the SOA Workshop in Colombo, Sri Lanka (September 17, 2009) by Samisa Abeysinghe, Director of Engineering,WSO2 highlights SOA in a heterogeneous world and explains how WSO2 Web......

This presentation at the SOA Workshop in Colombo, Sri Lanka (September 17, 2009) by Samisa Abeysinghe, Director of Engineering,WSO2 highlights SOA in a heterogeneous world and explains how WSO2 Web Services Framework (WSF) for C,C++,PHP solves the enterprise expectations on interoperability.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,241
On Slideshare
5,625
From Embeds
616
Number of Embeds
10

Actions

Shares
Downloads
108
Comments
0
Likes
1

Embeds 616

http://wso2.org 567
http://www.slideshare.net 15
http://wso2.com 13
https://www.wso2.org 7
http://www.php.rk.edu.pl 5
https://wso2.org 4
http://translate.googleusercontent.com 2
file:// 1
https://mooshup.com 1
http://otmanager.wso2.org 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SOA with C, C++, PHP … Samisa Abeysinghe Director, Engineering WSO2, Inc
  • 2. SOA is about Architectural Design And We need implementation techniques & tools to build it
  • 3. Language of your Choice You should have freedom to choose You might also have reasons to choose
  • 4. Why C? Because it is the most portable And bunch of other reasons like Many interesting applications written in C httpd, PHP, Ruby, MySQL
  • 5. Why C++? Widely used (and some legacy) Financial, Banking, Telco, DBMS, Embedded And like C it offers: Performance, Flexibility, Control
  • 6. Why PHP? Installed on over 20 million websites and 1 million web servers http://www.php.net/usage.php
  • 7. Chances Your other application (legacy or green-field) can be C, C++, PHP or the like Can we get them on the SOA?
  • 8. SOA in a Heterogeneous World
  • 9. Expectations Tooling for WSDL Security Interoperability Binary Attachments Reliability
  • 10. Interoperability - PHP
  • 11. PHP Web Services Frameworks Package Written in WSDL Security Attachments Reliability PHP5 SOAP Ext C Partial No No No NuSOAP PHP Yes No No No SCA with PHP(IBM) PHP Yes No No No WSO2 WSF/PHP C Yes Yes Yes Yes
  • 12. Framework that improves PHP user’s ability to provide and consume Web services Capable of dealing with secure and relabel messaging even with binary data, the only PHP software package to offer those features The framework is inter-operable with non-PHP imple- mentations, allowing it to be integrated with enterprise applications seamlessly
  • 13. PHP Example – Secure Service 1. function echoFunction($inMessage) { 2. $returnMessage = new WSMessage($inMessage->str); 3. return $returnMessage; 4. } 5. 6. $pub_key = ws_get_cert_from_file("../keys/alice_cert.cert"); 7. $pvt_key = ws_get_key_from_file("../keys/bob_key.pem"); 8. 9. $operations = array("echoString" => "echoFunction"); 10. 11. $sec_array = array("encrypt" => TRUE, "algorithmSuite" => "Basic256Rsa15", 12. "securityTokenReference" => "IssuerSerial"); 13. 14. $actions = array("http://php.axis2.org/samples/echoString" => "echoString"); 15. 16. $policy = new WSPolicy(array("security"=>$sec_array)); 17. $sec_token = new WSSecurityToken(array("privateKey" => $pvt_key, 18. "receiverCertificate" =>$pub_key)); 19. 20. $service = new WSService(array("actions" => $actions, 21. "operations" => $operations, 22. "policy" => $policy, "securityToken" => $sec_token)); 23. 24. $service->reply();
  • 14. PHP Example – Secure Client 1.$rec_cert = ws_get_cert_from_file("../keys/bob_cert.cert"); 2.$pvt_key = ws_get_key_from_file("../keys/alice_key.pem"); 3. 4.$reqMessage = new WSMessage($reqPayloadString, array("to"=> 5. "http://localhost/samples/security/encryption/encrypt_service.php", 6. "action" => "http://php.axis2.org/samples/echoString")); 7. 8.$sec_array = array("encrypt"=>TRUE, "algorithmSuite" => "Basic256Rsa15", 9. "securityTokenReference" => "IssuerSerial"); 10. 11.$policy = new WSPolicy(array("security"=>$sec_array)); 12.$sec_token = new WSSecurityToken(array("privateKey" => $pvt_key, 13. "receiverCertificate" => $rec_cert)); 14. 15.$client = new WSClient(array("useWSA" => TRUE, "policy" => $policy, 16. "securityToken" => $sec_token)); 17. 18.$resMessage = $client->request($reqMessage); 19. 20.printf("Response = %s n", $resMessage->str);
  • 15. How to adapt a C++ Application as Web Services
  • 16. C/C++ Web Services Frame- works Package WSDL Security Attachments Reliability HydraExpress Partial No Partial No gSOAP Yes Partial Yes No WSO2 WSF/C Partial Yes Yes Yes WSO2 WSF/C++ Partial Yes Yes Yes
  • 17. Designed for embedding within C or C++ soft- ware stacks to enable Web services All-in-one solution for the building and deploy- ing of Web services Widest range of WS-* specifications imple- mentations WS-Addressing, WS-Policy, WS-Security, WS- SecurityPolicy, WS-Reliable Messaging, MTOM and WS-eventing
  • 18. C++ Example - Service 1.#include <ServiceSkeleton.h> 2. 3.using namespace wso2wsf; 4. 5.class Echo: public ServiceSkeleton 6.{ 7. public: 8. WSF_EXTERN WSF_CALL Echo(){}; 9. 10. OMElement* WSF_CALL invoke(OMElement *message, MessageContext *msgCtx); 11. 12. OMElement* WSF_CALL onFault(OMElement *message); 13. 14. void WSF_CALL init(){}; 15.}; 1.OMElement* Echo::invoke(OMElement *element, MessageContext *msgCtx) 2.{ 3. OMElement *echoElement = new OMElement(element->getLocalname(), 4. new OMNamespace(element->getNamespace(false)->getURI(), 5. element->getNamespace(false)->getPrefix())); 6. OMElement *textElement = new OMElement("messsage"); 7. echoElement->addChild(textElement); 8. textElement->setText("Hello World"); 9. return echoElement; 10.}
  • 19. C++ Example - Client 1.ServiceClient serviceClient(client_repo, end_point); 2. 3.OMNamespace * ns = new OMNamespace("http://ws.apache.org/rampart/c/samples", "ns1"); 4.OMElement * payload = new OMElement(NULL, "echoIn", ns); 5.OMElement * child = new OMElement(payload, "message", NULL); 6.child->setText("Hello Service!"); 7. 8.try 9.{ 10. OMElement* response = serviceClient.request(payload, 11. "http://example.com/ws/2004/09/policy/Test/EchoRequest"); 12. if (response) 13. { 14. cout << endl << "Response: " << response << endl; 15. } 16.} 17.catch (AxisFault & e) 18.{ 19. if (serviceClient.getLastSOAPFault()) 20. { 21. cout << endl << "Fault: " << serviceClient.getLastSOAPFault() << endl; 22. } 23. else 24. { 25. cout << endl << "Error: " << e << endl; 26. } 27.} 28.delete payload;
  • 20. Web Services are Fast
  • 21. Web Services are Faster
  • 22. Web Services are Still Faster For secure services 10K messages C implementation x10 – x15 times faster than Java 100k messages C implementation x6 – x8 times faster than Java
  • 23. WSF/C++ Features  SOAP 1.1 and SOAP 1.2  WS-Addressing  1.0  submission  MTOM and SwA  Support for caching large attachments  WS-Security  Base security standards mean that messages can be protected using Encryption, Authentication and Signature  Including WS-SecureConversation and WS-Trust  WSDL2CPP Code Generation tool  Supports generating client stubs, service skeletons, build scripts and deployment scripts
  • 24. WSF/C++ Features  WS-Policy and WS-Security Policy  Enables using industry standard XML to configure security  SSL Enabled Transport Layer  WS-Reliable Messaging 1.0, 1.1 and WS-RMPolicy  Enables reliability between platforms including message resending, duplicate detec- tion and persistence  Full REST support (GET, PUT, DELETE, POST) with custom URI Mapping  Enables mapping a REST API easily and naturally  Useful tools  Tcpmon  wsclient
  • 25. References Various Web Services Frameworks http://wso2.org/projects/wsf SharePoint Web Services http://msdn.microsoft.com/en-us/library/bb862916.a Apache Axis2/C Web Services Performance http://wso2.org/library/3532 Example applications for SOA http://incubator.apache.org/stonehenge/ PHP Web Services Blog http://phpwebservices.blogspot.com/
  • 26. Q&A