# WSO2 Web Services Framework for C

WSO2 Web Services Framework for C (WSO2 WSF/C) is a standards compliant, enterprise grade, open source, C library for providing and consuming Web services in C. WSO2 WSF/C is a complete solution for building and deploying Web services, and is the C library with the widest range of WS-* specification implementations, including MTOM, WS-Addressing, WS-Policy, WS-Security, WS-SecurityPolicy, WS-Reliable Messaging and WS-eventing. It provides the best interoperability- all the Web services specification implementations are tested for interoperability with Microsoft .NET, WSO2 WSAS and other J2EE implementations.

WSO2 WSF/C is released with Apache License V2.0, and is based on the family of Apache open source projects, including Apache Axis2/C, Apache Rampart/C, Apache Sandesha2/C and Apache Savan/C. The key advantage of using WSO2 WSF/C is that it seamlessly integrates the multiple Apache Axis2/C projects together, which is tested and ready to be used. It also comes with additional features such as XMPP transport and a command line tool for consuming Web services, named wsclient.

## Why Use WSO2 WSF/C?

WSO2 WSF/C relives you of the burden of looking for and integrating multiple software elements to build a comprehensive Web services stack. It also provides you with the luxury of using a well tested software framework, both for functionality as well as for interoperability, for embedding in your C or C++ software stacks to enable the software Web services. Comprehensive coverage of WS-* specifications allows you to use WSO2 WSF/C for enterprise grade applications.

WSO2 WSF/C is an open source project. Thus you have all the benefits that you can gain with an open source project, such as no worries of vendor locking and support from the user community.

WSO2 WSF/C is ready to be embedded. This has been proven with WSO2 WSF/PHP, an open source PHP Web services extension based on WSO2 WSF/C.

## WSO2 WSF/C Features

Feature | Description
--- | ---
Comprehensive Support for Web Services Standards | WSO2 WSF/C supports the basic Web services standards including SOAP 1.1, SOAP 1.2 and MTOM. WSF/C also supports the following WS-* specifications: WS-Addressing WS-Policy WS-Security WS-SecurityPolicy WS-ReliableMessaging WS-Eventing
Proven Interoperability | WSO2 WSF/C features proven interoperability with Microsoft .NET, WSO2 WSAS (Apache Axis2/Java based Web services application server) and other J2EE implementations. The basic SOAP level interoperability as well as WS-* specification implementations have been tested and proven to interoperate.
Portability and Platform Support | WSO2 WSF/C has been tested on: Windows XP - Microsoft Visual C++ 7.1 Windows XP - Microsoft Visual C++ 8.0 Linux – gcc 4.1.1 Red Hat Enterprise Linux ES release 4 (Nahant) - gcc 3.4.3 Sun Solaris 2.10 x86 - gcc 3. MacOS 10.4.10 - gcc 4.0.1
Web Server Extensions | WSO2 WSF/C can be deployed as a server-side extension within a Web server, such as Apache Web Server or Microsoft IIS. It also includes an HTTP server and can be deployed as a stand-alone server.
Transport Abstraction | With the design characteristics of Axis2/C, server and client transports can be plugged in as desired. It comes with an XMPP transport implementation, and one can extend the number of supported transports using the abstraction APIs.
XML Parser Abstraction | With the design characteristics of Axis2/C, like in the case of transports, any XML parser can be plugged in as desired.
WSDL2C Code Generation | Using the Axis2/Java code generation tool, one can generate code for both WSDL 1.1 and WSDL 2.0. Data binding support is also available with Axis Data Binding (ADB).

## Open Source Components Included in WSO2 WSF/C

- Apache Axis2/C (The Web services engine)

- WS-Addressing implementation in Axis2/C

- WS-Policy implementation in Axis2/C

- Apache Rampart/C (WS-Security)

- WS-SecurityPolicy implementation in Axis2/C

- Apache Sandesha2/C (WS-ReliableMessaging)

- Apache Savan/C (WS-Eventing)

- Libxml2

- OpenSSL

## Known Issues

1. There can be memory leaks when using WS-ReliableMessaging. Please refer to the Apache Sandesha2/C README file located in the sandesha2 folder.

2. WS-ReliableMessaging and WS-Security does not work with the Guththila parser.