Tuesday, March 20, 2007

Version 1.0 Released!


Head over to http://www.codeplex.com/nbusiness to check it out.

After touching up little issues here and there for the last couple of weeks (and getting side tracked by XNA) I have finally managed to roll out a v1.0 release of NBusiness! This version is useable but almost certainly not perfect. I can already see a few areas in need of improvement such as the cacheable collection and even optimizing the compiler itself. No doubt the templates will be endlessly configurable, not to mention creating entirely new templates.

Despite how happy I am to have this project at this stage ,so I can finally start some of the more interesting features I've been putting off, I am mostly glad because I actually want to USE NBusiness for my own projects (I have a kegbot project in process). In fact this is why I started this project to begin with, I had been kicking around the idea in my head for a while because of some of the things I had been doing at work (working on a business object code generator), reading a compiler book at some point and then realizing that I wasn't going to be able to use CSLA (www.lhotka.net) on my go daddy website because of medium trust issues. I then decided to just do it, I wrote almost all of the business objects for that site by hand and just got tired of it and started making the compiler. Now I could crank them all out (sql included) in less than a day. And look it only took me about 6 months longer than if I had just done them all by hand! But seriously, I feel pretty good about NBusiness, and I hope others do too.

I've made a branch for v2 already (in anticipation of bug fixes for v1) and have begun work on a Visual Studio plugin. If anyone has had any experience working with language services and custom project types for visual studio please let me know! This is unbelieveably complicated stuff and I am wading through it all by myself at this point. It would be really nice to see Microsoft produce a purely .NET visual studio SDK. The plethora of COM interfaces is absolutely mind boggling... The Iron Python example is enormously helpful but it is also enormously complex. I would like to see a step by step example of how to get a simple Iron Python like project created.

Also, I would like to give a special thanks to Kyle Leneau, who did all of the artwork and helped make the example site look a lot better. Also his interst helped fuel my interest, which is very helpful when you're working on something as long as I have been. Also, thanks to Rocky Lhotka for helping bend my mind which drove me into creating this project to begin with and thanks to Ben Reichelt for taking moments here and there to discuss some of the more arcane aspects of business objects and databases. But no thanks to Beau Crawford for holding onto the managed data access layer he promised me! :-P Also, thanks to everyone else who tried it out at various stages and gave me feedback.


  • What issues will one have trying to use CSLA in a medium trust environment? I know for example, the ObjectCloner uses serialization, which is not allowed in medium trust sites (stupid stupid Microsoft -- every webhost will be using medium trust soon). I was thinking for this, I might be ablet to get around it by writing a custom serialization routine that doesn't use the .NET serialization classes--we'll see if that works or not.

    Do you know of other specific problems with CSLA working under Medium Trust?


    By Anonymous Anonymous, at 2:39 PM  

  • Besides reflection (a big one!) the other main medium trust issue is the Activator... which is HUGE. As far as I know there is no way to dynamically create instances of types in a medium trust environment. That being said there is one main weakpoint in NBusiness and that is it's dependence on the Activator to create instances of custom database providers. For now you must use NBusiness in a full trust environment to use a custom data access provider. The other alternative is to have the provider integrated into NBusiness and just use a switch statement on the name passed in and create a "new" instance.

    Also another area that breaks medium trust is in the creation of AppDomains (I'm pretty sure at least). Really all the fun stuff is illegal...

    One thing to note is that using this stuff during design time (EntityDataSource uses reflection) or during compile time (the compiler uses Activator and Reflection heavily) does not break medium trust! Only during runtime on the medium trust environment is it bad.

    By Blogger Justin Chase, at 7:39 PM  

Post a Comment

Links to this post:

Create a Link

<< Home