Is OpenNETCF.IoC still alive?

Jun 3, 2009 at 11:49 PM

My company is working on a project that would benefit greatly from a lightweight framework like this one, but I haven't seen any activity on this project for a few months or any discussion of it on your blog.  Is this framework still in development?

Coordinator
Jun 5, 2009 at 6:03 PM

It is most certainly still alive.  In fact I have a boatload of local changes that I need to check in - maybe I'll try doing it today.  For example it now supports module loading via config XML. I've also done a bit of rework, refactoring and fixing because we're using the framework in a current project we're working on.

Jun 5, 2009 at 6:33 PM

That's great to hear.  I'll be watching for the next update.  Thanks.

Coordinator
Jun 5, 2009 at 7:24 PM

Just pushed the new update.

Jun 5, 2009 at 8:19 PM

There is also a new DI / IoC framework in what was once the Mobile Client Software Factory (circa July 2006) , recently resurrected as the patterns & practices: Mobile Application Blocks - Community Release.

 

Coordinator
Jun 5, 2009 at 8:22 PM
Edited Jun 5, 2009 at 8:24 PM

Yes, I've seen their release, but I've not used it (already had this one in the can and integrated into projects).  I'd certainly be interested to hear feedback on comparing the two from anyone who has tried both.

Jul 29, 2009 at 2:05 PM

Things that I liked about funq that I did not see in your library (Have not gone through yours very well as of yet).

Subcontainers - I did not see a method for having subcontainers in the opennetcf version.  Can have their lifetime based on the parent container as well as when checking for an item in a subcontainer and if not found then check recursively up.

Not a global container - This is the one that I really perfer with funq.  I like that I can create a container fill it with mock objects and pass it into one of my modules.  This allows for much greater flexibility and cleaner unit tests.

Things I liked about yours that funq does not provide

Runtime binding - If I want to get an object from a dynamic type in funq I have to do something like use reflection to call the resolve method.  I understand they wrote the library to get rid of runtime binding for performances purposes but I need it.

XML configuration - I have not played with your XML configuration yet but I see from up above that you have it.

Anyway I like both libraries very much and love the idea of not having to write my own or at least start from scratch.

Coordinator
Jul 29, 2009 at 5:47 PM

Thanks for the feedback.  Subcontainers have actually been requested, so it's something I continue to toy with in my head.

As far as the separate container, it's actually a really good idea.  I already run into issues with unit tests causing problems with other tests since the RootWorkItem gets populated.  Having a separate, creatable work item for testing would be quite useful.

Jul 29, 2009 at 8:13 PM

The separate container is essentially the same as the child WorkItems feature I suggested a couple of months ago.  The only difference is that a lookup of a service in child WorkItems also checks the parent's services if it isn't found.

Coordinator
Jul 29, 2009 at 8:38 PM

They're certainly related, but I don't see them as the same.  Having a separate container is really not much more than exposing the ctor for the WorkItem so that one can be created stand-alone without using the RootWorkItem. 

Adding child WorkItems involves adding the notion of a Parent to the WorkItem class, and having the object search algorithm recurse up-tree to find objects.

Jul 30, 2009 at 12:46 AM

Yeah, I just made workItem() public but I dont like to change a library cause then I have to change it every time I upgrade to the newest version.  The other possible option was to make the OpenNETCF.Ioc a fiend assembly to my primary assembly and then I wouldn't have to change code in the library but that just me me feel a little dirty.

Coordinator
Jul 30, 2009 at 6:44 AM

In the next release it will be public (it's public on my local drive now), along with some modicum of parent/child behavior.  I'm still putting together unit tests for that.  Look for something late next week (I'm pretty swamped until then).