StrataFrame

March 28th, 2007 by Justin Leave a reply »

With my new job I’m being exposed to some new technologies. One of them is StrataFrame. It’s billed as a framework that’ll take the mundane tasks out of the picture and allow developers to do more in less time.

Seen that promise before.

This one, however, seems to be delivering on its promises. I’m really impressed.

It’s not exactly an ORM tool like Hibernate is, which is another project I’ve found quite useful, it’s more than that. It’s hard to explain just what this thing is, but I’ll try.

StrataFrame manages to abstract the DB code away pretty nicely. You’re not mucking around with core ADO.Net objects when you use it, but you’re also provided with access to those core objects without having to jump outside the framework.

It also provides some basic controls that bind handily to the Business Objects (BOs) that you create with their code generation tools. However, when you stumble upon a situation that’s not handled by the StrataFrame controls you’re not left in the cold. You can still bind them to the underpinning ADO.Net objects that StrataFrame gives you access to.

I’ll give you an example.

My project lead developed a page recently that allows one to edit, or view, an entity in the database of the project we’re working on. I’ll call it a ‘Thing’ from here on out. The Thing editing page was built without any entry points into it. You selected the page to manage Thing objects and selected the Thing you wanted to edit from a drop down list, which was a StrataFrame based control.

Upon changing that control it populated the form with the properties of the Thing in question.

Today I set forth in putting the finishing touches onto a page with let you search for the Things in question. About the time that I got to putting in the “edit this Thing” and “view this Thing” touches onto it I was left perplexed: How should I pass back the Thing I want to edit/view to my project lead’s Thing editing/viewing page.

Usually I’d pass in the Thing’s ID via the QueryString and modify the Thing’s edit page to yank that value down and pull up the Thing in question. Nothing wrong with that, it’s the way it’s always been done.

Ahh, but with StrataFrame I’ve obtained a new option, and quite likely saved myself an hour of development time, if not more.

Let’s backtrack for a minute. StrataFrame’s design suggests, if not demands, that you drop a class into your App_Code folder of .Net web projects called ApplicationBasePage and within that class you declare instances of the Business Objects that you’ve created with their handy-dandy tool. Every page you implement should inherit this class.

During the Page.Load event those objects are pulled down from the Session and brought back into play for the devoper to muck with. What you end up getting is a very state orieinted experience as a user from this.

I don’t know if this is a side-effect or an actual design goal.

However, I found this very useful today. I hijacked the view/edit buttons of my search page which populated the BO that contains the user’s Thing collection and pared it down to the object in question. I then simly did a Server.Transfer() call to the view/edit page in question and viola! There it is!

I still need to test it further, and I may revise my code, but I was very impressed on how things just naturally flowed.

It’s the little things like that that are making me impressed with the product. It’s not just an ORM tool, it’s an actual framework that you develop your applications around, and it works 100% of the time that you’d expect it to and it can be adapted to whatever whacky oddball situation that your project requires.

In addition to the framework making 100% sense to me the support is awesome. I’ve submitted a series of “newbie” questions on their support forum and they have all been answered within hours with excellent answers.

Initially I was a bit surprised that their support forum didn’t contain all to many threads. I kept thinking, “this must be a small-time product that nobody actually uses.” Nope, that doesn’t seem to be the case. Once you’re over the initial learnin curve things just make sense and the need for support just plain drops off. I no longer have any need to query the developers because the product just makes sense!

The real kicker is the price. They’ve now dropped it down south of $500 per developer. That’s, at worst, 10 hours time for a developer. In my experience this project might save you that amount of time on the initial project but it’s close. On the 2nd or 3rd project? Yeah, you’ve just recouped your costs and managed to trim time and money off those projects.

Is it the end-all be-all of framework design? No, but it is worth considering and as a developer that usually scoffs at new frameworks it has obtained my seal of approval.

Advertisement

5 comments

  1. Patrick says:

    Does it add a significant amount of overhead to the application?

  2. Justin says:

    In general I would say no. It only brings itself into the picture when you actually use it, as it doesn’t try and intercept any regular programing that you would do.

    The only point of concern I have at this point is that it jams all of it’s Business Objects into the Session state which will consume memory on the server. However, their objects seem lean enough that it shouldn’t be a major point of concern unless you load up a butt-load of them during a page cycle. Why you would do that I’m not sure, aside from a search result page.

    There are plenty of ways of working around that problem if the need arises.

  3. JimWhite says:

    Justin, do you have experience with other frameworks like StrataFrame? I’m making the transition from
    VFP-9 here where we develop applications using a framework called MereMortals which is a well known
    framework in the VFP world. There are a few others. Could you speculate on what the top two or three
    frameworks that are currently in use by developers and are something like the corporate standard for
    third party frameworks?

    Thanks,
    Jim

  4. Darrell says:

    Justin, Now that you have been using Strataframe for some months now I’m wondering what your impressions are now of the product.

  5. rick watson says:

    Good morning Justin,
    We are considering strataframe. Currently we have a vfp application which uses a sql server database. I went through the tutorials for strataframe. How does one return the fields from a stored procedure if they are not in a single table. I would think you would want them to be part of a business object. We do not always have our sprocs returning single table values. I like the idea of being able to call a sproc but don’t know what to do whenever the fields returned are not in the bo. thanks
    rick

Leave a Reply