System Definition Model SDK

Thanks to Pedro Silva, I now know about the DSL Tools forum on MSDN. There are also forums for VSTESA, MSF and VSTS Workshop. Plus, you can subscribe to RSS feeds of all these forums.

Speaking of the VSTS Workshops, the 3rd workshop (after DSL Tools and MSF Agile) just launched for the System Definition Model SDK. System Definition Model – or SDM – is the underlying model that powers the VSTESA modeling tools formerly known as WhiteHorse. VSTESA models 2 of SDM 4 levels – the Application Designer, the Logical Datacenter Designer as well as the Deployment Designer which essentially models the transformation between the two. These models map directly two the Application and Application Host layers of the SDM. Currently, we don’t have modeling tools for the Network/OS and Hardware layers of SDM.

Barry Gervin recently complained that the Logical Datacenter Designer sucked because you can’t model a web and database server deployed to the same physical machine. But in the context of SDM’s layers, you model the deployment of multiple application hosts to a single OS instance one layer lower than we currently have modeling tools for. Alex Torone, PM for VSTESA (and presenter for ARC310 – the drilldown on the Logical Datacenter Designer) penned an extensive comment in response to Barry’s complaints where he explains why SDM is factored the way it is and confirms that they are working on modelers for the other DSM layers “in future releases”.

Anyway, back to the SDM SDK. What’s cool about this is that while we ship some models “in the box” – primarily for our own stuff (SQL, IIS, WS03, etc) – there’s no reason you couldn’t model any system with SDM (Oracle, BEA, Linux, Z/OS, etc). The SDM SDK download is tools, samples and docs for building your own models and extending the modeling tools in VSTESA. (Note, the actual SDM SDK is a part of the VS05 SDK – i.e. what used to be called the VSIP SDK).

I wonder how long it is before the community models some of Microsoft’s major competitors in SDM?

Office PIAs

Not that I do a bunch of Office development, but I did build a pretty nifty utility for PowerPoint a while back. Getting it installed on anyone elses machine, however, was a pain in the ass because while I always remember to install the Office Primary Interop Assemblies when I install Office, I’m fairly certain I’m in the minorty on doing so. So installing Build Slide Exporter was alway tricky. Now, the Office PIA’s are available as a seperate install. Not sure if you can redist them, but the readme file that comes with the installer specifically mentions “Wrap the O2003pia.msi in another setup package through Visual Studio or other Windows Installer aware setup editor” so it sounds like they expect it to be redistributed.

p and p Live! Webcast Guest Hosting

Last Thursday, I hosted the patterns & practices Live! webcast for Ron Jacobs. The session was on the Updater Application Block with Eugenio. I should have posted a link before hand – sorry about that. As soon as I find a link to the on-demand version, I’ll post it.

Ron is still out this week, so I’m hosting another webcast this coming Thursday at 11am PDT. The session is on Packaging Design and Architecture Guidance for Visual Studio and I’m very excited about the stuff we’ll be showing. Visit the MS Events site to sign up for the session.

Update: I located the on-demand version of the UAB webcast.

Not Your Father’s C++

Certainly not my father’s C++. I sat thru a presenation on VC++ 2005 today. Wow, I hadn’t realized all the coolness there.

First off, all the syntax is working it’s way thru the standards bodies, so no more underscore underscore syntax. It makes the code somewhat easier to read, but more importantly it’s following a similar standardization process to CLI and C#.

Secondly, you can now use all the native C++ features (templates, multiple inheritance, buffer overrun protection, etc) and all the CLI features (garbage collection, generics, language interop) together. Previously, you had very limited choices for mixing the two coding idioms. No longer – go ahead and mix and match. This gives you the best of both worlds. Use templates, and expose them to other .NET languages as generics.

Finally, it brings deterministic finalization to .NET. In VC++ 2005, you can declare both a destructor (used when a class goes out of scope or is explicitly deleted) and a finalizer (used when the class is garbage collected). This is similar to the whole IDisposable approach for classes that wrap unmanaged resources (file handles, network sockets, etc). Actually, it’s identical to IDisposable because that’s how it’s implemented! And it works both ways – if you instance a managed class that implements IDisposable “on the heap” then it will automatically call dispose at the end of scope. For example:

{  //C++ Version
   FileStream fs = FileStream(path, FileMode::Create);
   fs.Read(...);
   fs.Write(...);
}  //fs.Dispose called automatically

Even though the FileStream is implemented in C#, it behaves here like a stack type and is destructed as you would expect. In C#, you’d have to use a using statement to achieve the same effect. For this trival example, it’s not that big a deal. But if you have multiple stack instances created at different times within a scope, this helps out immensely.

Not sure I would move to C++ for all my managed programming, but I’ll certainly be giving VC++ 2005 another look.

Various Modeling Info

I was in Barcelona all last week, so I’m behind on email and blogs. I missed a couple of great posts from various folks involved in modeling at Microsoft. Gareth blogged about the text template engine in the DSL toolkit. Ali Pasha blogged about the relationship between the Distributed System Designers and the System Definition Model. And R.Ramesh pointed to the second and third parts of the Channel 9 interview with John Stall from the Class Designer team.

BTW, if you want to keep up on all the goings on the VSTS world at large, you have to subscribe to Rob Caron’s Blog.