Kijana Woodard

Software Minimalism


Introducing Vessel

Sorry to frighten you on this Hallow's eve, but this post is not about yet another mediator. :-]

After finishing Liaison, I found myself coding in anger. What else could I cull from my stack? The obvious answer:

Kill the IoC Container.

Inspired by Ayende's IoC container in 15 lines of code, I wrote Vessel as a stripped down IoC on which to hang the mediator and any other singletons. I bloated it up with some extra features, like registering a constructor function, but it's still small enough to read without scrolling. Vessel doesn't even have it's own GitHub repo yet.

For so few lines, I was able to remove both Autofac packages from my project. Right away, I'll stipulate that my container usage on this blog is beyond trivial. If I find myself in trouble, I can install-package my way back home again.

I think I am seeking bedrock. I want to know the pain that causes me to use a framework or library. I am way up the abstraction hierarchy here, but digging.

One interesting discovery I made through this exercise: a controller is a class that has exactly one dependency and that dependency is IMediator. I think this fact can be exploited in the future, but for the moment, I'm happy with this small victory.