Tango FCS - Metro Web Services now ready for production use
(aka WSIT - Web Services Interoperability Technology)
is now FCS (First Customer Shipment)!
Tango provides the .NET 3.0 interoperability features (i.e., security,
reliability, transactions) built into the
Besides including Tango, Metro includes the core
Metro FCS is built into
Metro FCS also has a
module to make building advanced web services easy---just point and
click---no code, no config files.
Metro = Tango + JAX-WS
We've been shipping our JAX-WS production implementation for quite
some time. It's a high-performance implementation of the
It produces and consumes
services and clients.
The Tango part of Metro 1.0 FCS implements numerous WS-*
specifications to enable interoperability with Web Service producers
and consumers Microsoft's .NET 3.0 Windows Communication Foundation.
Specifically, we implement the specifications listed
Note: most of these specifications (but not all - e.g., WS-Security)
are submission specifications, not standards. That
is because these are the specifications implemented in .NET 3.0, and
that is the main point of Tango: to enable interop with .NET 3.0
(although there is nothing stopping you from using the advanced Tango
features in Java-only scenarios).
Also note: a future version of Metro will implement standard
versions of the above specifications---once again, the same set as
implemented by .NET 3.5 when it is released.
Even though we are just FCSing now, we have real users building real
systems using Metro in the finance, telco and health care industries.
A large finance company uses Metro to provide the secure web
services backbone for services that securely interoperate with
- Axis 1.4
- WSE 2.0
- .NET 3.0
We needed to add some special policy assertions like:
to enable the use of the C14NWithComments algorithm for
canonicalization of XML documents to enable security interop with
Apache WSS4J. Metro, by default uses a different algorithm: Exclusive
A well-known telco has already deployed an international
trouble ticketing system based on Metro. They implemented a subset of
to push and pull trouble tickets between various partners.
An interesting thing we added here was the ability for SSL information
to be retained, end-to-end, in headers, even though the SSL transport
was terminated at a load-balancer.
A government agency is building a unified health care system based on
Metro to serve millions of people. The will be using the Metro security
and reliable messaging features. In addition, they will be
integrating at a deep level---building their own
to handle client authorizations. They will also be adding and setting
They have voluminous data they are adding to headers.
BTW: I don't recommend putting application data in headers. Put it
in your own application-specific envelope. Otherwise your data model
is split between your application data and header data making it hard
to manage. Worse, if you use JAX-WS specification handlers
your performance will go down the drain. If you must read or
write headers, send us a note at
and we will show you an easy and efficient way to do with without
using handlers (or a tube).
It's been an exciting and hard-working 2 years from spinning up Tango
to our FCS release. I'd like to savor the moment and keep the focus
on Metro 1.0 FCS, so I don't want to say much about the future in this
blog entry. Suffice it to say that we plan on Metro updates every 8
weeks---with each release containing bug fixes and some new features.
In the Tango area the big thing on the horizon is interop with .NET
3.5 via standard versions of the WS-* specifications. That should
happen the first half of 2008.
For now, start using Metro 1.0 in GlassFish (or other containers) and
let us know how it works for you. We'd really like to see your
use-cases. Send us mail at