Douglas Purdy

Archive for the ‘Oslo’ Category

Getting Deep Fried

without comments

At PDC 2009, I had an opportunity to sit down with Keith and Woody to talk about SQL Server Modeling (nee “Oslo”) and OData, among other topics.

image_12[1]

I enjoyed doing the podcast.  Keith/Woody were great hosts.

You can listening at http://tinyurl.com/deepfried43.

 

 

.

Written by douglasp

February 5th, 2010 at 2:25 am

WebSphere eXtreme Scale supports OData

with one comment

As noted on the OData.org site, WebSphere eXtreme Scale uses the OData protocol.

Billy Newport, an IBM Distinguished Engineer, was interviewed recently on why they selected a RESTful data service as the API and how OData helped.

The article: http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1379765,00.html

More product details: http://www.ibm.com/developerworks/websphere/downloads/xs_rest_service.html 

It is great to see that developers, regardless of platform/language, have a simple way to consume these services.

I’ll make one interesting note about this implementation.

As near as I can tell, Billy’s team implemented OData without ever talking to anyone at Microsoft.

I suspect they used the protocol documents we have online (these define the protocol with even greater precision that many standard specifications I have seen) and a HTTP trace tool.

Having been involved in distributed computing/protocol integration work for a long time, that is quite an achievement.

It could speak to simplicity of the protocol (it is just conventions/extensions over HTTP/AtomPub), the quality of the documentation or the intelligence/patience of the IBM team.

Likely it was all of these.

Written by douglasp

January 28th, 2010 at 8:16 pm

Dminor

without comments

Before we gave “M” an official external codename, we called it “D” internally.

Back in the “D” days, our team started working with MSR on a number things related to the language.

We recently released some of that work on the MSR site: Dminor.

Dminor is a data-modeling language based on M, the data-modeling language of Microsoft Oslo. Dminor provides extended compile-time checking of code, making use of an SMT (Satisfiability Modulo Theories) solver.

You can read more about it at http://whigmaleerie.spaces.live.com/blog/cns!C6149B019D236BF5!846.entry.

You can download it at http://research.microsoft.com/en-us/downloads/cd60cdb0-353f-48b3-81d7-177621eba1bf/default.aspx.

Congrats to Andy and company…

Written by douglasp

January 13th, 2010 at 1:25 am

Model-Driven Content Based Routing

with 4 comments

I tweeted this, but I think it deserves a full post.  This a great example that leverages many of the different aspects of SQL Server Modeling (”M”-based DSLs, “M”, Modeling Services, etc.) to enable a better experience around application development/management.

One of the major new WCF features in .NET 4 is the Routing Service which is a configurable WCF-based service that supports content-based routing and protocol bridging. The content based routing capability in .NET 4 allows for WCF to perform message filtering based on content contained in either the SOAP headers or within the message body. For instance, if a company has two different versions of the same service deployed, the client application can call into a central routing service. The routing service can then forward the message to the correct backend service based on information it extracts from the incoming message, such as version number. The routing service also supports error handling routing that can automatically resend the message to another destination endpoint in the event of an error.

Unfortunately, the default routing service is not the easiest to manage or configure. Fortunately, the recently released SQL Server Modeling CTP makes it easy to build model driven application and the .NET 4 router configuration is a good modeling candidate. As such, the RouterManager sample which is available for download from MSDN Code Gallery, shows how this can be accomplished using Visual Studio 2010 Beta 2 and the SQL Server Modeling CTP which was released in conjunction with PDC09. This is the first in a series of articles that will cover the architecture and concepts used in the RouterManager sample application to create a fully model driven content based router.

The SQL Server Modeling CTP can be used to create a domain specific language (DSL) that can make the routing configuration of the WCF routing service much simpler. This is accomplished by first defining a language that is human readable, which will provide IT Operations and others within an organization who are not expert developers with an easier way to interact with applications. The CTP’s modeling language features make it easy to define the structure of the configuration data in a human readable representation that can be shared within an application’s modules, tiers and tools or between even between applications. Also included, as part of the CTP, is the SQL Server Modeling Services, which provides functionality to store, access and share both the physical and metadata representation of the model. The Modeling CTP also provides a visual tool called “Quadrant” for viewing and interacting with models and model data.

http://blogs.msdn.com/dmcat/archive/2009/11/16/model-driven-content-based-routing-using-sql-server-modeling-ctp-part-i.aspx

Written by douglasp

December 6th, 2009 at 1:46 am

Cool Intellipad Plugins

with 4 comments

I don’t know if these work against the latest CTP, but you can ask Ceyhun Ciper.

http://www.sixpairs.com/intellipad/mgraph-visualization-intellipad-plugin.aspx

Written by douglasp

December 6th, 2009 at 12:08 am

“MUrl”: A DSL for RESTFul clients (Nov. 2009 CTP)

with 12 comments

“MUrl” is updated to the latest CTP (thanks SNinja and the rest of the Intellipad team).

There is a good readme in the zip file that outlines how to build, install and use it.

Download it now. 

[Updated on 2010/1/4 to fix a bug in installation]

Twitter.murl
murl1

How the credential information is stored
credman1

Written by douglasp

December 5th, 2009 at 2:47 am

“M”: Attributes/Annotations

with 2 comments

AAguiar asked me a question related to my EDM 3.0: Bring EDM and “M” together post that I wanted to answer here.

@douglasp In .edmx I could add attributes in my own namespace to enrich my model. How is that going to work with ‘M’?

In the latest CTP you can add attributes/annotations for “M” types, extents, fields, functions.

Below is a simple example.  Note the SQL that is generated by default, but you can control that as well.

attributes

Written by douglasp

December 4th, 2009 at 8:15 pm

“Quadrant”: Three Features in Two Minutes

with one comment

[Updated:  I re-recorded and added a voice over.]

The below screencast runs ~2 minutes and worth watching if you care about interacting with data (and who doesn’t).

What you see are 3 key features of “Quadrant” in the latest CTP:

  • Access to SQL Azure databases
  • Creating custom views (including master detail) by mashing views together
  • See the “markup” of any view in Quadrant and steal it/change it (just like view source in a Web browser)

You also get to see the infinite canvas and the zoom features indirectly.

I am thinking about posting a couple more of these 2 minute demos over the course of the next couple weeks.

If you want to see something more in-depth now, check out the “Quadrant” PDC talk or Quadrant Overview video.

[Updated:  Download Video @ http://www.douglaspurdy.com/wp-content/uploads/quadrant1.swf]

Written by douglasp

November 29th, 2009 at 10:42 pm

EDM 3.0: Bring EDM and “M” together

with 14 comments

One of the biggest things we have done in recent months is start to bring EDM and “M” together into one data model.

I could spend a bunch of time talking about the design principles behind that work, but I want to be as concrete as I can and get down to something that help you (if you are a .NET developer) today.

In a nutshell, “M” replaces the EDMX XML file that you are no doubt familiar with if you have used either the Entity Framework or Data Services.

Said differently, we have a nice human-friendly DSL that replaces a human-hostile XML file.

In addition, this nice, warm and friendly DSL can both generate your database and the EF classes you need to program against the database.

Before I talk about how this works, I want to say one thing:

EF and DS are at the knee of the adoption curve and we are not going to do anything to slow down that adoption; so rest assured that we are committed bring EDM and “M” together in a way that places the upmost importance on existing and future investments in EF and DS.

With that said, let’s look at a simple example (if you want to follow along, download the bits first)…

1. Look at all the “Oslo” VS projects that we have in the CTP bits (the name landed too late to get the bits updated).

image

2.  Let’s create a simple “M” model

image

3. Set the connection string in the project properties

image

4. Deploy (this will create the database and the CLR classes you need)

image

image

5. Write some code against the generated classes

image

6. Run the App

image

8. Under the covers (you can look in the obj folder to see what we generate)

image

9. Really under the covers, especially if you don’t like to use an IDE (you know who you are)

image

This uses a command-line option for m.exe and tool that will generate the EF classes for you.

I am fairly sure that someone on the language team is going to throw something at me when they read this.

image

When Sells and I talked about this feature at PDC, it resulted in at least two separate rounds of applause from the audience and I know it was a highlight (one of many) at the Box/Anderson anchor session.

You can get more details on this at http://msdn.microsoft.com/en-us/library/ee713219(VS.85).aspx.

Written by douglasp

November 25th, 2009 at 7:03 am

Microsoft Data Development Technologies: Past, Present, and Future

without comments

http://msdn.microsoft.com/en-us/library/ee730343.aspx

This is one of the best articles that I have read about the Microsoft data and modeling history and strategy. 

Kraig wrote this piece and I love it.

Below is at the end of the doc that talks about modeling…

Data Development Futures: Modeling

If we take a step back from the whole arc of the discussion we’ve had in this article, we can see a definite trend toward greater levels of abstraction. The earliest data access solutions for SQL Server, like DB-Library and ESQL for C, were sufficient though quite rudimentary. Technologies like ODBC created an abstraction layer above the proprietary APIs of different databases, a model that OLE DB, ADO, and ADO.NET continue to follow.

Most recently, the Entity Framework has gone a step further to create an additional abstraction layer not over the data access API but over the structure of a relational database itself. Similarly, Data Services transform any number of diverse data sources into something accessible through a simple REST-based exchange protocol. (In fact, Microsoft expects that using such protocols will become increasingly popular, as it allows data providers and consumers to evolve independently from their programming model.)

Taken as a whole, this trend can be described as a trend toward modeling, the act of creating representations of real-world concepts that are internally translated into the representations that computer systems (like database engines) inherently understand.

What’s key here is that modeling itself is something that takes place outside of the database, in large part because data often spans multiple databases and multiple formats. Thus what matters is the richness of the pipeline between what’s in the data store and what runs outside that store.

Increasing that richness is the purpose of Microsoft’s next wave of investments beyond the Entity Framework and Data Services (see Entity Framework futures and Data Services futures), namely a body of technologies collectively called the SQL Server Modeling CTP (Community Technology Preview). Rather than replacing existing data development methods, these technologies introduce new ways of working with SQL Server databases along with greater availability of metadata alongside the data itself.

Metadata—or information about data and applications—is the key to the next advances in developer productivity with data-oriented applications. Modeling, in other words, is a recognition that data about an application, and data about data, is just as important as the application and data themselves. And the components of the SQL Server Modeling CTP, shown in Figure 10 as a projection from Figure 9, are the ways in which Microsoft is beginning to explore this new territory.

History_Futures_1.png

Figure 10: Future technologies in the SQL Server Modeling CTP.

The code name “M” language is like a more manageable (though more limited) form of Transact-SQL, the language normally used to describe data schema and values. It’s also closely aligned with the purpose of the EDMX files used in the Entity Framework to implement the conceptual layer (or Entity Data Model). The "M" language is, in fact, being developed as a textual language that also implements the Entity Data Model, and will serve alongside the XML-based EDMX dialect. Furthermore, "M" includes powerful support for the creation of domain-specific languages (DSLs) in which application logic, data access layers, and even an application’s user interface can be easily defined by even non-developers.

SQL Server Modeling Services, for its part, deals with enterprise-wide metadata and the kinds of applications that enterprises are interested in building around that metadata. And the code name “Quadrant” tool provides a visual means of interacting with relational data in ways that have traditionally been either very difficult or have necessitated a custom application of some kind. Many “forms over data” applications that have to date been written using the other data access technologies we’ve seen can be quickly assembled directly within “Quadrant”.

Written by douglasp

November 24th, 2009 at 1:06 am