Well every once in a while someone still asks about AxKit 2. I know
this project has mostly floundered and people have gone on to other
things, but I still find some value in the XML paradigm for web
development - specifically in saving me from worrying about XSS
errors, but also it looks really useful for AJAX stuff.
Anyway... Where is AxKit 2.0?
Well it's coming. In the last few days I've thrown together a few
bits of code that are the framework for AxKit 2.0.
First things first: AxKit 2.0 is nothing like AxKit 1. It doesn't
even remotely resemble it. That's both a bad thing and a good thing.
I'll explain why.
But first, what does it look like? Well I spent a long time thinking
about what it meant to be AxKit, and I also spent a long time
thinking about how could I make it easier to use and install in these
days of quick setup frameworks like Ruby on Rails. Sadly mod_perl is
not quick to setup. Neither is Apache. These are large complicated
frameworks with lots of features I don't need on my application
server. Instead, AxKit2 has its own httpd. You can read a bit about
it here: http://use.perl.org/~Matts/journal/30438
Having our own httpd means that development and deployment is much
easier. Plus it frees us of the ties of Apache upgrade cycles and
mod_perl changes. I did not want to be stuck for an "AxKit3" when
Apache 3.x comes out!
So I wrote a simple pluggable scalable httpd. It's all pure perl, so
no nasty compilation required (except obviously you still have to
compile XML::LibXML etc). Plugins can trivially add configuration
directives, making development of new subsystems fast and easy.
And yes it's buggy as all hell right now. But it'll get better I
promise.
Now, on to what the "AxKit" part looks like. Well I decided that I'd
had enough of special cases and extra wrapper code inside the AxKit
internals - we spend so much effort in there making sure dependencies
are logged and checked, and caching is done at every step of the way
and so on. All this actually slows the whole thing down, and makes
the code really ugly. So it's gone. If you want to cache from now on
it will be DIY.
And all that config directives stuff to setup pipelines - that got
really ugly if you wanted alternate pipelines. So that's all gone
too. Instead AxKit becomes an API for setting up the transformation
pipelines, and a bunch of utility modules for helping that out.
Everyone can write perl, and if you can't the examples will be simple
enough, or someone will write a plugin to set all this up via config
directives.
So let's do a quick example. Say you want to do XSP -> XSLT -> XSLT -
> HTML. Here's what the code you'll write will look like:
sub hook_response {
my $self = shift;
my $file = $self->{headers_in}->filename;
# setup the processor
my $proc = AxKit2::Processor->new($file);
my $s1 = "/path/to/xslt1.xsl";
my $s2 = "/path/to/xslt2.xsl";
# run the transform ($out is an AxKit2::Processor also)
my $out = $proc->transform(
XSP => XSLT($s1) => XSLT($s2)
);
$out->output($self->client);
return OK;
}
(Note: I haven't got XSP working yet - but it shouldn't be too hard,
touch wood!)
So now where is this groovy code? Well it's in axkit.org svn for now,
but at some point I'll get the apache guys to setup a new repository
for us on there. Meanwhile follow the progress and have a play around
at svn://axkit.org/axkit2
Matt.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]