Web Services in C, REST, SOAP and WS-*

Wednesday, July 30, 2008

Axis2/C Performance

Axis2/C benchmark performance test results are published here

Tuesday, July 22, 2008

Axis2/C 1.5 Released.

I am very happy to see that Axis2/C team has done yet another release yesterday. In my view 1.5 is a very important release because it has come a long way in terms of stability and performance through it's frequent previous releases.

You can download it from here

New Features.
  1. Support for one-way messaging (In-Only) and request response messaging (In-Out)
  2. Client APIs: Easy to use service client API and more advanced operation client API
  3. Transports supported: HTTP
    • Inbuilt HTTP server called simple axis server
    • Apache2 httpd module called mod_axis2 for server side
    • IIS module for server side. Supports IIS 5.1, 6 and 7
    • Client transport with ability to enable SSL support
    • Basic HTTP Authentication
    • AMQP Transport based on Apache Qpid (Experimental)

    • libcurl based client transport
  4. Module architecture, mechanism to extend the SOAP processing model
  5. WS-Addressing support, both the submission (2004/08) and final (2005/08) versions, implemented as a module
  6. MTOM/XOP support
  7. AXIOM, an XML object model optimized for SOAP 1.1/1.2 messages; This has complete XML infoset support
  8. XML parser abstraction
    • Libxml2 wrapper
    • Guththila pull parser support
  9. Both directory based and archive based deployment models for deploying services and modules
  10. Description hierarchy providing access to static data of Axis2/C runtime (configuration, service groups, services, operations and messages)
  11. Context hierarchy providing access to dynamic Axis2/C runtime information(corresponding contexts to map to each level of description hierarchy)
  12. Message receiver abstraction
    • Inbuilt raw XML message receiver
  13. Code generation tool for stub and skeleton generation for a given WSDL (based on Java tool)
    • Axis Data Binding (ADB) support
  14. Transport proxy support
  15. REST support (more POX like) using both HTTP POST and GET
  16. Comprehensive documentation
    • Axis2/C Manual
  17. WS-Policy implementation called Neethi/C, with WS-SecurityPolicy extension
  18. TCP Transport, for both client and server side

Changes since last release.
  1. AMQP Transport support with Apache Qpid. (At an experimental stage and not working under Windows)
  2. Modifications to IIS Module to support IIS 6 & 7.
  3. Added a JScript file to automate IIS module registry configuration
  4. Specifying the MEP in the services.xml for non in-out messages made mandatory
  5. Improved the in-only message handling
  6. Improvements to Guthtila for better performance
  7. Improvements to TCPMon tool
  8. Memory leak fixes
  9. Many bug fixes

Saturday, July 12, 2008

Benchmark testing tools for Web Services

Useful tools for benchmarking web services. I have explained here some tools I played with for benchmarking Axis2/C.

Thursday, May 22, 2008

WSO2 Web Services Framework for PHP 1.3.0 Released

On 22 May 2008 Wso2 WSF/C team released version 1.3.0 of WSO2 WSF/PHP Release. Following is the release note.



WSO2 Web Services Framework for PHP (WSO2 WSF/PHP), is an open source,
enterprise grade, PHP extension for providing and consuming Web Services
in PHP. WSO2 WSF/PHP is a complete solution for building and deploying
Web services and is the only PHP extension with the widest range of
WS-* specification implementations.

It's Key features include, secure services and clients with WS-Security
support, binary attachments with MTOM, automatic WSDL generation (code
first model), WSDL mode for both services and clients (contract first
model) and interoperability with .NET and J2EE.

You can download the release from:
http://wso2.org/downloads/wsf/php

Project home page:
http://wso2.org/projects/wsf/php

------------
Key Features
============

1. Client API to consume Web services
* WSMessage class to handle message level options
* WSClient class with both one way and two way service invocation
support
* Option of using functions in place of object oriented API with
ws_request

2. Service API to provide Web services
* WSMessage class to handle message level options
* WSService class with support for both one way and two way
operations
* Option of using functions in place of object oriented API with
ws_reply

3. Attachments with MTOM
* Binary optimized
* Non-optimized (Base64 binary)

4. WS-Addressing
* Version 1.0
* Submission

5. WS-Security
* UsernameToken and Timestamp
* Encryption
* Signing
* WS-SecurityPolicy based configuration

6. WS-Reliable Messaging
* Single channel two way reliable messaging

7. WSDL Generation for Server Side
* WSDL generation based on annotations and function signatures,
and serving on ?wsdl or ?wsdl2 requests

8. WSDL mode support for both client and server side
* Write services and client based on a given WSDL
* WS-Addressing and WS-SecurityPolicy is supported in WSDL mode

9. REST Support
* Expose a single service script both as SOAP and REST service

10. Provide easy to use classes for common services
* Consume some well known services such as Yahoo search and Flickr
and Amazon services using predefined classes

11. wsdl2php.php script. This script can generate PHP classes for
services and clients for a given WSDL to be used with WSDL Mode .

--------------------------------
Major Changes Since Last Release
================================
1. Schema constructs support improvements for WSDL mode including
SimpleType restricitons, ComplexType restrictions/extensions and
attributes.
2. WSDL Import support.
3. Support for WSDLs with multiple bindings, API is provided to pick
the preferred bindings.
4. wsdl2php code generation improvements to support the improvements
done in WSDL mode.
5. HTTP Basic Authentication Support added.
6. SOAP Messages with Attachments support (SWA) added.
7. Custom Security token support added.

-------------------
Reporting Problems
===================
Issues can be reported using the public JIRA available at:
https://wso2.org/jira/browse/WSFPHP

------------
Contact Us
============

Please subscribe to our user or developer mailing lists. For details on
how to subscribe please visit: http://wso2.org/mail#wsfphp

We welcome your early feedback on this implementation.
Thank you for your interest in WSO2 WSF/PHP.

-- WSO2 WSF/PHP Team --

Friday, May 9, 2008

Axis2/C version 1.4.0 Released

It is great to see that Axis2/C 1.4.0 is released. See.

Saturday, May 3, 2008

C Web Services Demo Site

The WSO2 C web services demo site is now open for you to view, try and rate. You can publish your own demos too. If yor are interested writing such a demo please write to wsf-c-dev@wso2.org.

Thursday, March 20, 2008

Apache Axis2/C 1.3.0 Released

Apache Axis2/C 1.3.0 Released on 3th of March 2008. My blog entry on Axis2/C 1.3.0 release.

Introduction to Axis2/C service client API

Introductory level article explaining usage and important options of Apache Axis2/C service client API. Please find here [link] and let me know your comments.

Monday, March 3, 2008

Developer Guide needed about Axis2/C internals

I think it is time to have a sound developer guide for Axis2/C web services stack as there are increasing number of developers all over the world contributing to the project. While I was writing Sandesha2/C module for Axis2/C I found it very difficult to cope with the Axis2/C engine internals when it comes to memory handling and scope management. For example you need to have a through understanding about life time and scopes of axis2_msg_ctx, axis2_op_ctx etc. It is good if someone explains about deployment model about timeouts, about good to know functions, how to reuse service client in your client application, about http_transport_info struct etc. etc. I will start working on a article explaining these as time permits.

Reliable Messaging with Sandesha2/C

The reliable messaging implementation for Axis2/C web services stack is called Sandesha2/C. The architecture is same as the corresponding Sandesha2 implementation for Axis2/Java stack. This fits into the Axis2/C stack as a module plugin. I have been working on this for more than a year now and the existing functionlity is interoperable with the Sandesha2/Java and the Microsoft Indigo.
Currently Sandesha2/C is integrated into the WSF/PHP stack of WSO2.
These days I am writing some articles for WSO2 Oxygen tank about Sandesha2/C and WSF/PHP Sandesha2 integration work.

Monday, February 25, 2008

Amazon web services client using wsclient

See my blog about amazoneclient which I am working on these days,

http://damithakumarage.wordpress.com/2008/02/22/amazon-web-services-client-using-wsclient/

Now the work on linux platform is almost finished except the --help option which is going to be quite exhastive. I will upload this work by the end of this week. After that, plan port this to Windows platform.

Tuesday, February 12, 2008

Soap Action and Addressing Action

Here I have reproduced some excerpts from the specifications to understand the Soap Action and Web Services Addressing Action.

For a good understanding of how Axis2/C addressing work read
WS-Addressing in Action

Friday, January 18, 2008

CURL with SOAP

curl is a software designed to deal with HTTP protocol. When it comes to REST, we could send request quite easily with curl. However , although it is not straight forward you could use curl for sending SOAP messages too. This method could not used for day to day use, but it is very useful when it come to testing. If you need to test a service, it is more or less the same request send to server. First you need to get soap request into a file (say echo.xml) and then send it to the service URI.
curl -d @echo.xml -H "Content-Type: application/soap+xml;charset=UTF-8 " 
http://localhost:9090/axis2/services/echo

An advantage with this method is , you could deal with HTTP related things very easily. Say if you need to send additional HTTP header with soap request, you could do it with "-H" option.
curl -d @echo.xml -H "Content-Type: application/soap+xml;charset=UTF-8" -H "User-Agent:Apache Axis2/C"
http://localhost:9090/axis2/services/echo
and will be able to do modifications to SOAP payload quite easily. (Need to edit echo.xml file only :) )

Axis2/C, custom errors

In this post I discussed about using custom errors in Axis2/C [link]. In order to define custom errors , used error block that is reserved for user needs. The usage demonstrated using modified echo server sample. If you think if you need more clarifications or see any point to improve, feel free to let me know.

Thursday, January 17, 2008

Security What You're Looking for??

Confidentiality and integrity of massages are very important when you do serious business on line. WS-Security comes for your help at this point. The WS_Security specification describes enhancements to SOAP messaging to provide quality of protection through message integrity, message confidentiality, and single message authentication.

How do you use these security mechanisms in your WSF/C web service/client?? Using Rampart/C is your answer. 

Rampart/C is the security module of the Apache Axis2/C engine, which uses OMXMLSecurity as the XML-Security library. This comes as the integrated security module for WSO2 WSF/C. You can simply enable security in your web service with WSO2 Web Services Framework for C( WSF/C).

Here, you can find nice articles on Rampart/C.

Wednesday, January 9, 2008

WSF/C developer and user resources

Here I posted about some resources for Axis2/C and WSF/C, developers and users. Any one can use those resource to get best use from WSF/C. In that post , I mainly focused on Axis2/C , and any one who interested in other components of WSF/C have some important information there too.

Monday, January 7, 2008

WSF/C Interoperability - CHECKED

WSO2 WSF/C was successfully tested with Microsoft WCF /.NET framework web services in Microsoft Web Services Interop plugfest, last November. The session was very successful for WSF/C. Most of the WS-* scenarios were tested. WS-Addressing, WS-Security, attachments with mtom, Secure attachments with mtom and WS-RM are the major areas that were tested.

Sunday, January 6, 2008

Embedding WSF/C

WSO2 Web services framework for C has been integrated to three software systems as of now.

First the PHP extension, with WSO2 WSF/PHP.

Then with WSO2 WSF/Perl, the Perl Web services extension.

And the latest is WSO2 WSF/Ruby, the Ruby Web services extension that also works with Rails framework.

This means that WSO2 WSF/C has been integrated and embedded enough times to prove that it is portable and can be plugged in.

Anyone who uses any of the above frameworks happen to use WSF/C and in turn Apache Axis2/C, the open source Web services engine. It must be also mentioned that WSO2 WSF/C as well as all the other scripting frameworks built on that are also open source with the Apache 2.0 license.

Friday, January 4, 2008

Lazy to ask question on mailing list ??

If you get WSF/C or Axis2/C related questions and you are too lazy to post it on a mailing list. We have our WSF/C forum ready to keep you up. Keep posting !


WSF/C and WSDL

If you are a WSF/C user , you might wonder about the possibility of displaying WSDL for a particular service. Although we are far behind to generate WSDL dynamically , one can have static WSDL and display with "?" sign. All you have to do is have an entry in services.xml file and need to give full path to WSDL file.

<parameter name="wsdl_path" locked="xsd:false">/home/dinesh/echo.wsdl
< /parameter>

Then start the server and request WSDL file as follows.

http://localhost:9090/axis2/services/echo?wsdl

Mother of all Web Services Frameworks

WSO2 Web Services Framework for C is the mother project of all the Web services frameworks like WSF/PHP, WSF/Perl and WSF/Ruby. They all come with Apache license.

WSO2 WSF/C in turn is based on Apache Axis2/C and the related family of projects.

So the power of the Apache open source model is driving them all. Thanks to all those developers who contributed code and fixes and those users who tested and reported bugs, we have a very strong Web services stack. Not only the C language but also many scripting languages has been made SOA ready, thanks to these valuable contributions.

Check out the Latest!

If you have not already done, check out the latest 1.2.0 release of WSO2 Web services framework.

As always, many bugs have been fixed, thanks to the base project Apache Axis2/C