Apache Etch: Open source, cross-platform, language & transport-independent framework for building and consuming network services

Apache Etch logo

We consume a lot of SOAP web services at work, and frankly, it sort of sucks. SOAP is heavier (and slower) than I would prefer.

From the Apache Etch web page:

Etch is a cross-platform, language- and transport-independent framework for
building and consuming network services. The Etch toolset includes a network
service description language, a compiler, and binding libraries for a variety of
programming languages. Etch is also transport-independent, allowing for a
variety of different transports to be used based on need and circumstance. The
goal of Etch is to make it simple to define small, focused services that can be
easily accessed, combined, and deployed in a similar manner. With Etch, service
development and consumption becomes no more difficult than library development
and consumption.

Etch was started because we wanted to have a way to write a concise, formal
description of the message exchange between a client and a server, with that
message exchange supporting a hefty set of requirements:

  • support one-way and two-way, real-time communication
  • high performance and scalability
  • support clients and servers written in different languages
  • support clients/servers running in a wide range of contexts (such as thin web
    client, embedded device, PC application, or server)
  • support anyone adding new language bindings and new transports
  • be fast and small, while still being flexible enough to satisfy requirements
  • finally, it must be easy to use for developers both implementing and/or
    consuming the service.

Here is a list of the language bindings Etch currently supports:

  • Java – stable
  • C# – stable
  • C – stable
  • C++ – beta
  • Google Go – alpha
  • Javascript – alpha
  • Python – alpha