Thoughts, rants and information for the like-minded.
Another use for XLANG/s
Published on March 28, 2004 By Charles Young In Software Development
Someone asked me a couple of days ago why web references in BizTalk projects use .odx files. If you show all files in Solution Explorer, and expand a web reference, you will see an .odx (Orchestration Designer) file has been created automatically.

The answer is fairly straightforward. In a C# or VB.NET project, a web reference results in the generation of 'proxy' source C# or VB.NET code designed to compile down to a class used to invoke a web service. This proxy code is generated over the WSDL provided by the web service. If the web service was itself written in C# or VB.NET, then the WSDL reflects the web service class and its 'web methods'. Hence the proxy class ends up providing a client-side class that is very reminiscent of the server-side .NET code.

Something similar is happening in a BizTalk project. BizTalk projects use the XLANG/s compiler, rather than the C# compiler, so generated code must be in XLANG/s, and XLANG/s is saved into .odx files. Hence, each web reference results in an additional 'orchestration', although it is not generally thought of as such. The compiler compiles this to a proxy class which internally uses the same .NET approach as C# or VB.NET web service proxies. I assume that these proxies are then used directly by the BizTalk SOAP adapter to invoke the web service.

It is worth noting here the close association between WSDL and XLANG/s. XLANG/s uses constructs which reflect directly the WSDL view of service descriptions. Just like WSDL, XLANG/s defines a service as a collection of ports bound to port types representing individual operations which may involve either one-way or two-way message exchanges. Each message is defined in terms of one or more message parts. WSDL is typically extended with SOAP-specific elements, but remains a generic service description language. XLANG/s is structured in the same way as generic WSDL, but includes executable code to provide an entire service implementation. A BizTalk 2004 orchestration is not itself a web service, but rather a service (derived from the BTXService class) invoked by the subscription service within BizTalk. It is, however, a natural extension of XLANG/s to implement proxy classes which invoke WSDL-described web services internally.

Comments
No one has commented on this article. Be the first!