?

Log in

No account? Create an account

t3knomanser's Fustian Deposits

Reflexive Reflection

How Random Babbling Becomes Corporate Policy

run the fuck away

Mad science gone horribly, horribly wrong(or right).

Reflexive Reflection

Previous Entry Share Next Entry
run the fuck away
I've been prepping a lot lately at work (ie. not teaching). So I've been using that time to work on a .NET based plugin architecture, which I call NPlugin. The idea is that a developer can write a program that acts as a PluginHost. Another developer can write an assembly that contains a class that implements the IPlugin interface. With a few XML config files, the program can load the assembly and the plugin and leverage whatever functionality it contains.

This requires a very flexible design. There's a high demand for extensibility. So I've been using a lot of pattern based design. This has lead to some pretty interesting scenarios.

For example, I want the host to be capable of loading plugins from anywhere- the local filesystem, the web, a database, someplace I haven't yet thought of- which means I need to make the PluginLoader extensible. It would be great, for example, if I had some sort of... plugin architecture.

And that's the design I'm using- the plugin architecture uses itself to manage itself. The PluginLoader is a PluginHost. This is why programmers often refer to parts of software and operating systems as "bootstrappers"- your operating system, and my plugin architecture "lift themselves up by their own bootstraps". I've never worked with a bootstrapped design before, so this has been an incredibly educational experience for me.

I'm nowhere near done- I've got the core of the framework built, but I need to actually implement other PluginHost classes, as well as test the damn thing- oh, and a few GUI widgets would be smart for managing it all too. When I've got a working alpha, I'll throw it up on SourceForge and try and rope a few other .NET devs into it with me.

Oh, and (heresy of heresies), I'm writing it all in VB.NET. VB.NET is more flexible than C# when it comes to OOP and patterns- C# is more flexible for low level interactions which this library doesn't need.
Powered by LiveJournal.com