OSS FWS Tools for C/C++

Enhancements

       

OSS FWS Tools for C/C++ Version 3.1 - Now Available

The OSS FWS compiler now supports the -namespace option which provides namespace support. All the compiler-generated types are placed in a C++ namespace. This avoids potential clashes of the compiler-generated type names with other type names used in the application.

The OSS FWS Tools have been enhanced to allow the decoding of an XML value with a missing mandatory element that has a nonzero minOccurs facet and a maxOccurs facet greater than 1.

  For example:
   <xsd:complexType name="S">
    <xsd:sequence>
     <xsd:element name="b" type="xsd:integer" minOccurs="1" maxOccurs="10" />     </xsd:sequence>
   </xsd:complexType>

  Has the following encoded value:
   <S></S>

The OSS SAX API for binary data is now included with the base shipment of the OSS FWS Tools. Previously, this component had to be purchased for an additional fee.

The new API function ossxSkipCompressionPrefix() has been added to the FWS runtime libraries. A full encoding produced by the OSS Tools using compression consists of the compression prefix followed by the compressed encoding. Given an OssxBuf structure that describes a full encoding, the function returns lengths of the original (uncompressed) and the compressed encodings and modifies the OssxBuf structure.

The XML encoders will now generate an xml-stylesheet processing instruction when the encoding is created using an XSL file.

OSS FWS Tools for C/C++ Version 3.0

The OSS FWS Tools now supports the new XML Schema (XSD) to ASN.1 mapping defined in the standard ITU-T Rec. X.694 | ISO/IEC 8825-5 "Mapping W3C XML Schema definitions into ASN.1". The mapping was updated to add support for the new time types that provide more efficient binary (PER) encoding of the XSD duration and time values. It also resolved some known issues for the previous mapping. As a result, the compiler-generated type names may slightly differ from the previous release. The previous mapping can be preserved by using backward compatibility options.

The OSS FWS compiler and runtime now supports integer types whose C representations exceed the maximum integer type available on the target platform. Such integers have a special C-representation:

 struct {
   unsigned short length;
   unsigned char *value;
 }

The integer is stored in binary format in the series of octets referenced by the value field above.

The OSS Binary Fast Infoset API has been enhanced to support the OSSX_ENC_UTF8 and OSSX_ENC_UTF16 encoding formats. Previously, only encoding algorithms were supported. Two new API functions, ossxUTF16ToUTF8() and ossxUTF8ToUTF16(), have been added to convert data from the UTF-16 to the UTF-8 format and vice versa.

OSS FWS Tools for C/C++ Version 2.3

New FWS compiler command-line options -finf and -finfSoap are now available to support Fast Infoset. The option -finf can be used when compiling XML Schema specifications. This option is similar to the -xml/-ber/-cer/-der/-per/-uper options in that it allows you to encode and decode data using the binary Fast Infoset serialization format.

The ossxEncode() / ossxDecode() runtime functions have been enhanced to allow you to encode and decode any Global Element defined in the input XML schema using the Fast Infoset (FI) encoding method. To use this new feature, simply XSD-compile your specification with the -finf option specified and then set the OSSX_FINF encoding rules (e.g., via the ossxSetEncodingMethod() function call) before encoding or decoding.

The option -finfSoap can be used when compiling WSDL Web Services specifications. It is similar to the -xmlSoap/-perSoap options in that it allows you to encode and decode SOAP data using the binary Fast Infoset serialization format. The runtime functions ossxEncodeSoapMessage() and ossxDecodeSoapMessage() have been enhanced to support this new serialization format.

For web services deployed as Apache 1.3 or 2.x modules built with the OSS FWS transport runtime libraries, the FWS compiler can now generate the deployment C file, the .conf file with Apache configuration directives and makefile build targets. The OSS FWS Tools version 2.3 and later comes with the Apache server transport available in source form. The generated makefile allows you to immediately build the web service as an Apache module, either self-contained or dependent on the OSS DLL/shared runtime. To generate Apache deployment files for the input syntax, specify the -bodyForServer compiler option and pass apache13 or apache2 as one of its arguments.

A new compiler option, -testClient has been implemented. In the presence of this option, the compiler generates a new C file, $(WSDLNAME)-test.c. It is a complete C program intended for unit-testing the web service by remotely calling each of its operations. The program initializes the FWS runtime and the HTTP client transport, sets the necessary FWS and debugging flags, and executes each operation once. The user should complete the test application by providing values for the operation parameters.

The FWS compiler now generates client-side call API functions differently when the -clientApi option is specified. Now these functions use the ossxClientExecute() API function. As a result, when using the HTTP client transport, generated call functions now implicitly support HTTP authentication that is implemented on the level of ossxClientExecute().

A new runtime library for the SAX/C++ API has been implemented. The SAX/C++ interface parses XML and Fast Infoset. In addition, if the SAX/C API for PER add-on is purchased, the SAX/C++ API can also parse PER encodings.

The FWS Transport has been enhanced to support HTTP GET requests. Support for HTTP GET requests on the server is enabled by setting the OSSX_HTTP_GET_CALLBACK server property. This property denotes a function that is called to process each HTTP GET request to the endpoint.

The FWS Transport Layer runtime has been enhanced to support Basic and Digest HTTP authentication (RFC 2617) on the client side.

A new client-side user API function which wraps the FWS Transport runtime, ossxClientReconnect(), has been implemented. It allows you to reconnect to the server without performing host name resolution while preserving all the local property settings of the previous connection.

OSS FWS Tools for C/C++ Version 2.2

ISAPI server transport support is now available in the OSS FWS Tools. By using the newly supported "isapi" argument for the –bodyForServer compiler option, ISAPI-specific functions and deployment files are generated along with specialized makefiles to build your web service as an ISAPI DLL. ISAPI Support makes it possible for you to build performance optimized web services for deployment on the Microsoft IIS server (version 5.0 or later). The OSS ISAPI transport runtime takes care of maintaining the pool of service contexts in multithreaded environments: reading and writing HTTP packets, maintaining global and session-wide server properties, and error processing.

A new compiler option, -reservedWords, allows you to instruct the FWS compiler to mangle the words you specify for this option; this will avoid name conflicts with reserved words that must be present in the generated output. The XSD namespace’s URI is used to mangle the specified words.

A new compiler option, -helperEnumNames, instructs the FWS compiler to use context-based naming conventions (helper) for #define constants used in bit-masks with the suffix of "_present" or "_chosen". Similarly, a new option, -helperEnumNames, instructs the compiler to use context-based names for generated enumerators.

A new runtime function, ossxIdentifyElementByXMLName(), returns the Global Element Number when supplied with the associated XML element name.

The LED XML encoder has been optimized for the encoding of xsd:decimal values. Encoding of these values (when the C representation exponential form is not used) is up to 20% faster than the previous version.

The FWS Transport Layer now understands Fast Infoset messages on both the client and server ends. Now you can develop web services and clients that exchange Fast Infoset instead of XML SOAP.

Support for pessimistic content negotiation for Fast Infoset and Fast SOAP messages is now available via two new flags, OSSX_HTTP_PESSIMISTIC_FI_CONTENT_NEG  and OSSX_HTTP_PESSIMISTIC_FWS_CONTENT_NEG. These flags allow the client to tell the server that it can send FI or FWS messages if possible (hence the term “pessimistic”), rather than sending textual XML which is less efficient.

OSS FWS Tools for C/C++ Version 2.1

The FWS compiler now supports a new OSS-specific attribute, selfCompleteWildcard, which can be used to mark 'xsd:any' XSD element wildcards as self-complete entities. In the presence of this attribute, the XML decoder will treat the element wildcard as a self-complete entity, meaning that the decoder will not attempt to inherit the namespace declarations from the outer tags when decoding the element wildcard. The content of the marked entity will be a complete XML document that can be passed to another application or function. A corresponding global directive, selfCompleteWildcard, is also available to affect element wildcards that appear in all input schemas or only those that appear within some specified XSD namespaces.

A new compiler option, -fastInfoset, generates a control table for use with the Fast Infoset API. Fast Infoset is available as an add-on for the OSS FWS Tools for C/C++. The Fast Infoset API consists of functions for creating and parsing Fast Infoset encodings as well as for converting XML documents to Fast Infoset and back. Fast Infoset encoding of application-specific payloads within SOAP messages is also supported. Functions are available to convert the payloads from XML to Fast Infoset and vice versa.

The FWS compiler has been changed to generate more user-friendly prefixes for XSD namespaces used by the runtime in support of Fast Web Services.

OSS FWS Tools for C/C++ Version 2.0

A new compiler option, -annotate, instructs the FWS compiler to automatically assign object identifier annotations. The use of object identifiers significantly reduces the size of X.892 (FAST SOAP) messages.

A new command line option, -nulltermStrings, instructs the FWS compiler to generate null-terminated length strings (rather than the unbounded representation with a length-value pair) for all XSD string and time types.

A new command line option, -namespacePrefix, instructs the FWS compiler to add the specified prefix to the generated names derived from the XSD components defined in the namespace.

A new compiler option, -manageHeaders, affects the behavior of the -clientAPI and -serverAP functions when generating the header blocks defined for SOAP messages. Header blocks defined for request/response messages are not added to the parameters of all generated client/server functions. Instead, for each header block a new pair of functions (a create function and an add function) is generated to create the header block and to add it to the envelope.

The FWS compiler has been enhanced to generate client and server code that uses the transport layer API to exchange SOAP messages. In particular:

  • The -clientAPI compiler option has been enhanced to recognize 'send' and 'call' API level identifiers and generate new functions that automate exchange with the server using the client transport layer. The -clientAPI functions significantly simplify the message construction, encoding/decoding, as well as the exchange of messages over the transport protocol.
  • A new compiler option, -bodyForServer, instructs the compiler to generate a server body function for a web service (ie., generate a stub for the function implementing the web service business logic), and (optionally) generate deployment files for selected transport layers.

Two new compiler options, -encodeonly and -decodeonly, instruct the compiler to generate only encoder routines or only decoder routines into the control table. This results in smaller runtime libraries.

A new compiler option, -saxEncode, enables the new ossxSAXEncode() function from the OSS SAX API for C library which is newly available.

A new runtime library, OSS SAX API for C, is implemented as an add-on component for the OSS FWS Tools for C/C++, and supports the following main features:

  • The PER SAX decoder function, ossSAXDecode(), provides an event-based approach enabling your application to process the ASN.1 PER binary encoded data as it is encountered (as it is parsed), rather than having to fully decode the message before accessing its fields.
  • Another function, ossxSAXEncode(), scans a decoded value (the result of the ossxDecode function call) and generates C SAX events for this value, as if the ossxSAXDecode function were called with the PER encoding of the same value. As this function works with already decoded (or unencoded) values, it is independent from the decoder and can be used with any encoding rules (not just PER) or with binary values created manually in memory.

Support for transport protocols has been added to the OSS FWS Tools for C/C++. The user application utilizes transport functionality by calling generic API functions that in turn call the particular transport layer functions to implement core transport operations such as starting the server or connecting to it.

The FWS SOED (Space-optimized encoder/decoder) Runtime has been optimized for speed. As a result, XML SOAP encoding/decoding is up to 50% faster than with the prior version and Fast SOAP decoding is up to 20% faster.

New API functions were added to provide the capability to generate self-identifying encodings for binary encoding rules that are not self-descriptive by nature (eg., PER), and to decode binary messages without advance knowledge of which message is being processed. This is done via the addition of a prefix added by the encoder.

The OSS FWS runtime now supports the standalone compression API functions ossxCompress() and ossxUnCompress(). This API enables encoded data compression using the default built-in zlib compressor. It can also be used for any other encoded data transformations (eg., encryption) via user-provided functions set by a previous ossxSetCompressDecompressFunctions() call.

A new API function, ossxGetOperationInfo(), allows the user to get information about a given SOAP operation such as its signature, a list of SOAP header elements specified within the operation.s input/output messages, and a list of the SOAP fault elements declared for this operation.

 

.:. Top

Copyright © 2010 OSS Nokalva, Inc.   All Rights Reserved.