Project Jasper!


At the Mix07 conference this week, we will be announcing Project Jasper – aka Dynamic ADO.net. Available immediately is the initial CTP (Community Technology Preview) release for the project.


What is Project Jasper? Here is the high level description of the project from the overview document included with the CTP release:



Microsoft Codename “Jasper” is a set of components aimed at fulfilling the need for a rapid and iterative development experience for data. With Jasper, you are able to just point at a database and immediately begin coding against its data using intuitive, domain-specific data classes. No configuration and no source code generation are required. Jasper works with existing application frameworks (including ASP.NET, WinForms, and WPF) and existing, real-world databases.


Technically, Jasper is a set of extensions to the Ado.NET Entity Framework designed specifically to enable rapid development of powerful, real world data driven applications. As the project team likes to say, we want to make the experience of developing quick and dirty database apps one that is truly quick and clean. To enable that development experience, Jasper is made up of two major components; again I quote the overview document:



Jasper provides a programming interface to your data that is well-suited to rapid development. Jasper provides two main services:

· Data Access: query and update facilities for reading and writing data, exposed via an Object-Relational (O/R) API.

· Data Binding: presentation of data in controls that form the visual user interface of the application.


For CTP release, we are specifically targeting Visual Basic 9 (Orcas version of VB.NET) and Iron Python 1.1. In other words, these are the languages we did a bulk of our testing for the CTP release. The reality is any CLR language that supports late binding (IronRuby, Managed JavaScript) can be used with the Jasper framework. In the future, we are very interested in leverage other features of Dynamic Language Runtime (also being announced at Mix07), for example the ability to modify types  at runtime, to provide even a richer experience. 

Several resources are available right now to learn about Project Jasper:


Over the next few weeks, we will be releasing a bunch of supporting material for the project including several screencasts and samples.  I will post links to this material as it becomes public.

We will also be publishing a bunch of information on our blogs:


· Shyam Pather’s blog: http://pather.net/shyam/


· Carl Perry’s blog: http://blogs.msdn.com/cperry/


· ADO.NET Team blog: http://blogs.msdn.com/adonet/


· Data Programmability Team blog: http://blogs.msdn.com/data/


· Visual Basic Team blog: http://blogs.msdn.com/vbteam/


Starting immediately, we are soliciting any and all feedback. We have already started thinking about doing another CTP release some time this fall, and have some interesting ideas, but we are also quite interested in public feedback. Best way to do this is send me email or post to the public forum.

kick it on DotNetKicks.com

Comments (6)

  1. Andrew Conrad announced project "Jasper" earlier this week at Mix ’07. Jasper is different from typical

  2. Microsoft has just announced two new projects at MIX '07: Jasper and Astoria (codenames). Both tools

  3. Nathan D. says:

    Will the generated classes (and collections of them) implement IQueryable and be able to be used with LINQ?

  4. 미국과 시간차이 때문에 이 시간까지 버티면서 키노트를 보고 발표한 것들을 정리해봅니다: SilverLight를 위한 새 커뮤니티 사이트 SilverLight 개발자 사이트 SilverLight

  5. aconrad says:

    Reply to comment question: Will the generated classes (and collections of them) implement IQueryable and be able to be used with LINQ?

    In the current CTP, Linq To Objects is supported over the Jasper API.    This is comparable to what is currently offered with Linq over DataSet and Linq over XML.

    We did a bunch of work to hook up the Queryable support in Jasper – essentially the ability to translate the Linq queries to the backend query language, however due to limitations in VB9 and Python 1.1 we were not able to include this feature in the CTP release.  Essentially the problem bolis down to the fact Linq (as currently is) requires queries to be statically typed – and Jasper is based on runtime type generation. Supporting Linq in Dynamic Languages (VBX, IronRuby, IronPython) is very important and currently there is a ongoing cross team effort to get this working.

    The CTP release does fully support Entity Sql.  Since this query language applies to the conceptual model and not the runtime types, it is not hampered by the need for static types.

  6. luis says:

    As far as I could see in the sample code, the way queries are performed in Jasper are not too different to the "list comprehension" fetures of python.

    Would it be possible to use this syntax instead?

    That would be great and way more intuitive for python programmers…

Skip to main content