Geeks With Blogs

Charles Young

In a previous blog I mentioned an early preview of XLANG/s shown at the 2001 PDC in Los Angeles.  For those who like archaeology (I'm a 'Time Team' fanatic myself), I dug up the preview software and had a quick look.  The software came with a readme file that contains some documentation on XLANG/s and which provides some illumination. 

XLANG/s always was a script language for a C# source code generator, so I probably did misunderstand the presenter (or perhaps there was an early intention to evolve XLANG/s into a directly compiled language).   Originally, what we now call 'expressions' were simply sections of C# which acted as "embed[ed] procedural code at well-defined points in your service".   Indeed, the preview code hosted the XLANG/s code generator within C# Web Service projects.   The entire emphasis was on orchestration of web services.   The C# code generated using XLANG/s script was compiled directly as the code behind an ASMX page - in effect, orchestrations were web services - and there was direct support for invoking web services via ASP.NET proxies.  The technology used ASP.NET cookieless sessions.  The session IDs embedded in ASP.NET URLs acted as correlation tokens, and ASP.NET's persistent session state model (using SQL Server) was used to dehydrate and re-hydrate long-running transactions.   There was also an additional service-based mechanism that performed special call-backs to allow orchestration code to issue a response to the web service call (effectively terminating the web service code), and then be restarted in order to complete a business process (a most un-ASP.NET like behaviour).

Most of the central constructs were there, though some features (e.g., transforms and delays) were not implemented.  Port types and message types could either be .NET interfaces or web service proxies, and there was no specialised syntax for defining port types and multi-part messages.  Instead of 'send' and 'receive' statements, the language used '>>' and '<<' operators.  As you might expect, atomic transaction handling and compensation weren't implemented.   You could probably use try/catch statements for exception handling, although this is not documented.

The switch statement was supported directly - now it is not, but is used extensively in the generated C# code.   Scope blocks used the keyword 'local' rather than 'scope'.  There was no concept of message property schemas, but static and dynamic port binding models where both available, with ports supporting an Address property (not very different to the current implementation).   There were one or two other differences, but essentially XLANG/s 2001 was recognisably an early version of XLANG/s 2004.

Posted on Tuesday, April 13, 2004 12:22 PM BizTalk Server 2004/2006 | Back to top

Comments on this post: A little XLANG/s archaeology

# re: A little XLANG/s archaeology
Requesting Gravatar...
Can anybody please pass some material about xlang/s?... its really abstract to know about it
Left by Rocky on Jun 10, 2006 8:08 AM

Your comment:
 (will show your gravatar)

Copyright © Charles Young | Powered by: