In Part 1 we showed a linear pipeline pattern implemented in a single
language. In part 2 we contrasted this with an asynchronous pattern
written with a diversity of languages.
In this section I'd like to offer some general observations on XML
pipelines based on our experience of building large-scale enterprise XML
processes on NetKernel and hope that these will help in the broader
discussion of the DSDL validation technologies.
It is our observation that:
Language diversity is essential. There is no one-size fits all language
for authoring XML processes. Declarative languages are desirable since
they are amenable to tools and permit 'dynamically generated' patterns.
However it is equally true that business logic and flow control has a
much better fit with procedural languages. An XML process is an
application - just as with regular applications, diversity of languages
is essential to enable diversity of design-patterns eg OO-pipelines,
workflows, SOA etc.
Exception handling is essential. As soon as two separate XML operations
are combined into a process it is vital that robust exception generation
and handling is provided. Transactional business message processing is
not possible otherwise. Exception handling across XML operations must
encompass XML technologies which themselves do not expressly provide an
intrinsic error handling model (eg XSLT, XQuery etc etc).
Asynchronous processes are very desirable. XML processing goes
hand-in-hand with networked resources - within all of the W3C XML
technologies it is possible to make networked resource requests (through
URI resolvers). An efficient XML process must allow each part of the
process to be partitioned into separate asynchronous sub-processes in
order to allow for indeterminate latencies of accessing networked resources.
Multiple-outputs are undesirable. Generally multiple outputs increase
application complexity and are a sign that a pipeline has not been
normalized to its atomic constituents. Single output combined with an
asynchronous architecture permits arbitrary parallelization. As an
historical observation the Unix pipeline model strongly suggests that
single output is powerful and scalable. Multiple outputs also eliminate
the opportunity for resource re-use and fine-grained caching optimizations.
I hope these observations are helpful and sincerely hope they will
stimulate some interesting debate.
Looking forward to your response,
Peter Rodgers
PS If you are interested to experiment with XML processes on NetKernel
it is freely available at http://download.1060.org/ - it has a
graphical installer and runs as a standalone application server (no need
for J2EE etc) or as an embedded co-processor in any Java application.
-- DSDL members discussion list To unsubscribe, please send a message with the command "unsubscribe" to dsdl-discuss-request@dsdl.org (mailto:dsdl-discuss-request@dsdl.org?Subject=unsubscribe)Received on Tue Mar 22 16:08:35 2005
This archive was generated by hypermail 2.1.8 : Tue Mar 22 2005 - 15:13:01 UTC