Paul Gielens:ThoughtsService

another Endpoint to my thoughts

News

Syndication

Ads


Favorites

Projects

RAD is Making a Comeback with Jasper

Andrew Conrad announced project "Jasper" earlier this week at Mix '07. Jasper is different from typical O/R frameworks that often require data classes to be written by hand, or generated at development-time using a tool. Jasper on the other hand connects to the database, determines the database schema, and generates the corresponding data classes. The interesting thing is that this generation does not result in source files. The data classes are compiled in-memory and are available within the running program. If the database schema changes from run to run, the dynamically generated data classes reflect the schema changes without any developer intervention. See the Microsoft Codename Jasper CTP Overview document in the CTP for more details.

I'd rather see Jasper leaning on the Entity Data Model implementing some form of conceptual model that is directly executable instead of objectifying the logical database schema.

As always I'm aiming at the ceiling ;)

Comments

Andrew Conrad said:

Actually, Jasper always works over the conceptual model (EDM).  It essentially has three models:

1)  Based on database schema (tables, columns, PK/ FK relationships, etc) a Default EDM and mapping is generated.  This uses a default naming service to handle plurization (Orders table -> Order type)

2)  Same as 1, but use plugs in a custom naming service.

3)  User specified EDM and mapping.  

In all three cases, the type generation and query/ CUD translation is completely independent of whether a default EDM was generated or specified.

This is covered a bit in the overview document, I will try to get a blog post up about it also.

# April 30, 2007 5:45 PM

Anastasiosyal said:

Subsonic is also an orm that doesnt require the source class files to be generated. The team has used a buildprovider which emits the class information dynamically without the need for source classes.

# April 30, 2007 6:40 PM

p.gielens said:

Andrew:

To my knowledge Jasper’s current implementation is concentrated on the logical database schema expressed in EDM, which is great for data oriented applications. I’d like to learn more about the user specified EDM and mapping option (3). Looking forward to your blog post!

# May 1, 2007 7:46 AM

Ryan Ternier said:

Jasper looks cool, but it seems that the new things comming out are taking the coding out of programming.

Things are more efficient when they're all custom built by the coder. Have all of these things at our finger tips will allow us to creat applications very quickly, but at what cost?

# May 1, 2007 11:58 AM

Joe Chung said:

"Things are more efficient when they're all custom built by the coder." is a big, fat lie.

# May 1, 2007 7:27 PM

Andrew Conrad said:

A couple of comments on the comments...

The goal of Project Jasper is not to take the coding out of programming, but allow the programmer to only write the code the is specific to the application.  In other words, we have gone to the extreme of trying to remove almost all plumbing code but not application specific business logic.  If you watch our "Data Access City" demo from Mix07 (http://sessions.visitmix.com/default.asp?event=1011&session=2012&pid=DEV18&disc=&id=1527&year=2007&search=DEV18), there is quite a bit of code - but the code is all very specific to the application - stuff the framework could never do without introducing some alternative way for the developer to specify “code”.  We believe developers are comfortable writing code, and have no goal of introducing a code free framework.   We have a lot of work to do, but one of our eventual goals is to make programming against the Jasper framework similar to using a DSL.   The framework provides the model (either generated by default or specified by the developed), the corresponding runtime clr types, and a default controller for coordinating model view interaction – the developer provides app specific code representing the business logic specific for the app’s domain.

My other comment is that the Jasper framework is intended to be a high level API.  There will definitely be cases where the developer could do things more efficiently if they use the lower level APIs.  In my opinion, this is true of almost anything when one increases the level of abstraction.  In other words, we are explicitly making the decision to significantly increase developer productivity while sacrificing some code efficiency.  Because Jasper is built on the ADO.NET Entity framework, we have a huge advantage that the developer could always drop down to the lower level API – even in an application that largely uses Jasper.  That said, there are a couple of huge challenges here:  1)  Make sure the Jasper framework’s perf/ scaliblity is good enough for production deployment for the targeted scenarios and 2) Get the layering right with the low level APIs.  In other words, we have a lot of work to do.

# May 4, 2007 1:39 PM

Some comments about comments and other ramblings about Project Jasper | All you can LINQ said:

Pingback from  Some comments about comments and other ramblings about Project Jasper | All you can LINQ

# July 31, 2007 3:59 PM

All you can LINQ » Some comments about comments and other ramblings about Project Jasper said:

Pingback from  All you can LINQ » Some comments about comments and other ramblings about Project Jasper

# July 31, 2007 6:19 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)