Welcome to MSDN Blogs Sign in | Join | Help

Only the blog has moved. I still work for Microsoft. See www.davidaiken.com for more.

Visual Studio Team System Management Model Designer Power Tool (TSMMD) v2.0 CTP is now live at http://www.codeplex.com/dfo.

This project has two deliverables.

First is the Visual Studio Team System Management Model Designer Power Tool (TSMMD). TSMMD is a tool for modeling line-of-business health scenarios and the associated instrumentation. The tool includes guidance packages that generate platform instrumentation (called Instrumentation Helpers) and validators to confirm that application source code contains instrumentation defined in the Health Model. The tool can then be used to generate Management Packs for System Center Operations Manager 2007.

Second is the Management Guide that contains prescriptive guidance on building highly manageable applications on the Microsoft Windows platform.

TSMMD is in an early stage of development. It was developed to help raise the Architect and Developer awareness of the needs of the ITPRO.

patterns & practices is releasing this CTP with a level of functionality to enable the end-to-end adoption and consumption of the health modeling scenario from Architecture to IT.

We need your feedback. Is the tooling correct? What did we get right and where did we fall short?

New features include:

  1. Improved model and user experience.
  2. Limited support for Enterprise Library Logging.
  3. Native support for model export to System Center Operations Manager Management Packs.
  4. Support for existing applications through MSIL scanning for Event Log, Performance Counter, WMI and Enterprise Library instrumentation.

Please download the TSMMD right now and starting giving feedback.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS, CONTENTS MAY BE HOT

A few people have asked questions about, or have had trouble installing the latest version of DinnerNow on 64bit Vista machines. I thought I'd take some time out to explain the 64bit story and how you can get things going.

First, we don't support 64bit in the installation. We do support Vista, Vista SP1 and Windows Server 2008, but only 32bit versions.

Why you may ask? Isn't 64bit the future? (or the present depending upon your outlook in life?)

The simple answer is testing.

To get 2.5 out the door, I have to be fairly sure that it will install on a computer outside of Redmond. This means for each test pass I do, I use 3 separate VPC's, one for each OS. The starting point is a bare OS, with none of the prerequisites installed. One by one the prerequisites are installed. If the Dependency Checker fails at any point in any OS, the OS is rolled back to the start, and the test begins again. I use undo disks for this.

Once the DC passes, the undo disks are merged creating a base with the installed prerequisites.

The next task is the walk through document that we include with the install. You can find this in the documents folder. DN is installed fresh and the walk though is attempted. Each time I have to rebuild, we roll back the undo disks and start the walk through again. This is repeated for each OS, so that's all of that, 3 times.

Even worse, if Vista and Vista SP1 pass, then server fails a which requires a code change, the tests are restarted on ALL OS's. (How do I know the fix didn't break something on another OS?). I should really automate this testing, and at some point I may well do that.

So back to 64bit, to support 64bit, not only would the DC require more configuration, but I'd now have to run through 6 complete passes. This is not something I'd like to get to without some serious testing automation.

The other problem with 64bit, is the hardware we have for testing, only in the last week have I found time to upgrade to Hyper-V, which gives me the ability to run a 64bit guest OS. As a side note, Hyper-V is incredible. Even the test version we have runs more guests per server than Virtual Server did. Also if you are brave enough for a core install, its even better. ooooo and having 2 CPU's allocated to your VPC is pretty darn cool too.

The last part of the "why doesn't DinnerNow run on 64bit" is the size of the DN team. There is no build labs, ship teams, test teams, product planners, developers, UX teams or anything else. If there is ever more than 2 people working on DN, its because we have contracted some development out. The final push on DinnerNow 2.5 was James and myself. Other people have helped along the way, and without them we'd never ship anything, but do keep this in mind.

So will DN work on 64bit. Yes it does. The main blocker is the automated install and configuration. So what you have to do is look in the scripts/install folder. Look in the runme.ps1 powershell script file.

   1:  . .\library.ps1
   2:  cd ..\..
   3:  $DinnerNowRoot = (Get-Location).Path
   4:  cd scripts\install
   5:  [Environment]::SetEnvironmentVariable("DinnerNow",$DinnerNowRoot,"machine")
   6:  $env:DinnerNow=$DinnerNowRoot
   7:   
   8:  new-DatabaseAlias
   9:   
  10:  invoke-SqlRestoreCommand
  11:   
  12:  new-WFTrackingDatabase
  13:   
  14:  Create-SQLASPMembership
  15:   
  16:  enable-SvcExtensions
  17:   
  18:  create-DinnerNowVdir
  19:   
  20:  new-selfcert
  21:   
  22:  bind-SSLCertificate
  23:   
  24:  & ".\Build DinnerNow.bat"
  25:   
  26:  Enable-IISCopyrightHandler
  27:   
  28:  Deploy-Gadget
  29:   
  30:  Create-desktopicons

You should see the first few lines load library.ps1. This is where most of the install/configuration code lives. (yes PowerShell is used for almost everything). After that is simple calls to scripts within the library. To get going on 64bit, all you need to do is manually work through the runme.ps1 file one script at a time. Sometimes the script will just work, sometimes you will need to change some paths. Hopefully the scripts are too cryptic and you should get through them.

One last tip. Don't do this on your only machine. Use a 64bit Virtual machine, or a spare. That way when you wreck something you can just role back your undo disc and start again.

Good Luck.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS, NOR WILL IT HELP AS PART OF A CALORIE CONTROLLED DIET

It's just over 1 year since we released the first version of DinnerNow to the Web, and I'm proud to announce today we have released DinnerNow version 2.5 - which targets the .net framework 3.5 and Visual Studio 2008.

If you are not familiar with DinnerNow, check out www.dinnernow.net for more info.

So what's new in this version?

Well, we've replace the entire ServicePortfolio solution with a brand new one which has considerably less code than previous versions and uses some of the new framework 3.5 features such as LINQ and workflow services. The result is something that should be more understandable, and aid in your learning.

We've also done away with the Console and Windows Service host. This time around ALL the WCF Services are hosted in IIS.

The workflow services have been attacked with my complexity axe, removing most of the mapping code. I always felt that got in the way of understanding the workflow - too many Order objects.

We've also moved things around a little, so DinnerNow works from http://localhost/dinnernow, rather than stealing your IIS root and messing with you hosts files and proxy settings. As part of this, check out the installation steps which show how you can generate via script your own certificate root and SSL certificate (which we bind to the site to support https)

You can also hit F5 in any app and it starts debugging. (Previous versions required attachment to the web application). This coupled with the Service hosting means an impromptu  demo is only a mouse click away.

The Web site has had a few changes too. We've tweak the CSS to work in FireFox, and also implemented more features using AJAX (and not just the update panel). The Web application is always something we hate touching as we are all server guys, so expect a few funnies.

The PowerShell cmdlets have also been tweaked to make it easier to demo and the installation is now almost 100% PowerShell. The dependency checker now correctly detects the OS (for a while Vista SP1 showed up as Server 2008 which caused a few problems when trying to install server roles)

The final piece is the Mobile Delivery application actually uses the CF 3.5 and WCF. It still looks like I designed the GUI, and we had to proxy the call back into the workflow service to enable the conversation to flow.

There are a stack of other minor things, too numerous to mention (and I'm sure to have missed something major out too - like the fact we re-factored the database ready for...).

We'd Love to hear from you about the new release. Comments, Questions are always welcome.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

Not long after my appearance on .NET Rocks - my good friend Keith appears on show 100 of .Net Rocks TV - http://www.dnrtv.com/ - talking about and demonstrating the TSMMD. Check out the show and, yes go and watch the other 99 episodes too.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS, NOT NOW, NOT EVER

Not long ago, I posted about the new version of the Management Model Designer. One thing I did not post was the requirements, and since I've been asked a few times now, I thought I best blog it.

The designer will require VSTS2008 (yes that is Team System as in Team Architect, Team Developer etc). It will not run in Pro or Std. The designer also has a dependency on the Guidance Automation Extensions (GAX).

Hope this helps.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS NOR WAS IT WRITTEN IN A FACTORY PRODUCING NUTS

I must admit, having survived the last 22 data access technologies, I'm really liking LINQ. The fact that I can use LINQ to query just about anything, against just about any data source is pretty cool. Lists and Arrays beware. Nested Correlated sub-queries are near - I also love to hear Luca speak about it.

Anyway, while preparing the latest DinnerNow release (coming soon), I had to rewrite the RSS feed for the restaurant. Obviously using the Syndication Support in WCF.

Since the Feed is simply returning menu items, you can imagine its a simple database call to return the menu items, then a loop to create syndication feed items for each one, then spit them out. Fine, but with LINQ, you can miss most of that out. In fact when I originally wrote this, it had 1 line of code which returned the results of a LINQ query. Some people thought this might be too much so I split it into many more lines as shown below.

Key in creating the Syndication items is line 15, as part of the LINQ query. The query projects directly into SyndicationItems. Note also the Links property being populated on line 27 - all pretty neat.

Since the feed type (atom or rss) is simply formatting, I actually specified this as a parameter and lines 37 to 39 work out which formatter to use, based upon the URL.

   1:  public System.ServiceModel.Syndication.SyndicationFeedFormatter GetMenuItems(
   2:      string feedType, 
   3:      string restaurantName, 
   4:      string menuType)
   5:  {
   6:       var db = new DinnerNowDataContext();
   7:   
   8:       Uri incomingURI = (OperationContext.Current == null ? 
   9:          new Uri("http://localhost/") : 
  10:          OperationContext.Current.IncomingMessageHeaders.To);
  11:   
  12:       var items = from mi in db.MenuItems.AsEnumerable()
  13:          where ((mi.Menu.Restaurant.Name == restaurantName) && (mi.Menu.MenuType.Trim() == menuType))
  14:          orderby mi.Name
  15:          select new SyndicationItem()
  16:          {
  17:              Title = SyndicationContent.CreatePlaintextContent(mi.Name),
  18:              PublishDate = DateTime.MinValue,
  19:              LastUpdatedTime = DateTime.MinValue,
  20:              Id = mi.MenuId.ToString(),
  21:              Content = new TextSyndicationContent(
  22:          String.Format(
  23:              CultureInfo.CurrentCulture,@"<p>{0}</p><p><img src='{1}/{2}' style='border: 0px;width:216px;height:174px;' /></p>",
  24:                          mi.Description,
  25:                          "/DinnerNow",
  26:                          mi.ImageLocation), TextSyndicationContentKind.Html),
  27:              Links = { SyndicationLink.CreateAlternateLink(new Uri(incomingURI.AbsoluteUri + "/" + mi.Name)) }
  28:           };
  29:   
  30:       SyndicationFeed feed = new SyndicationFeed(
  31:          "DinnerNow - Menu Items",
  32:          "Menu Items for Restaurant",
  33:          incomingURI,
  34:          items.ToList<SyndicationItem>()
  35:          );
  36:   
  37:       return (feedType.ToLower(CultureInfo.CurrentCulture).Equals("atom") ?
  38:          (new Atom10FeedFormatter(feed)) as SyndicationFeedFormatter :
  39:          new Rss20FeedFormatter(feed));
  40:  }

Below is the contract, so you can see how the URL is put together. Something like http://localhost/DinnerNow/service/menussearchservice.svc/rss/restaurants/NorthWind/Dinner would activate the service.

   1:  [OperationContract]
   2:  [WebGet(UriTemplate = @"/{feedType}/restaurants/{restaurantName}/{menuType}")]
   3:  SyndicationFeedFormatter GetMenuItems(string feedType, string restaurantName, string menuType);

Minus the contract, there really is only 5 lines of code - albeit split into multiple lines. Whilst this in itself is not that cool, the fact my code is no longer plagued with mind-numbing foreach loops is an absolute blessing. (re-write the above using ADO.NET if you want to see what I mean)

Long Live LINQ...

Note: this post was never meant to be a tutorial, simply a look how cool this is...

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

EVEN IF YOU HAVE A NOTE FROM YOUR MUM

 

Here is someone who possibly loves Windows PowerShell more than I do.

Check out http://ca.youtube.com/watch?v=MWWzrp3xkYY.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS SO THERE

Yesterday I presented twice a 3 hour session on DinnerNow.NET to Lead Enterprise Architects at the LEAP Conference. The session walked through our DinnerNow.Net demo (see www.dinnernow.net) and talked some about the architecture, history and a whopping 1 hour demo.

Since the deck contains some pictures of DinnerNow and juicy bits on the next version, I've included it here.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

It was my great pleasure to chat with Carl and Richard earlier this week on www.dotnetrocks.com. The show is entitled "David Aiken on Bridging the Gap between Dev and IT" and talks about working with IT Pros to build better managed applications, some of the technologies and strategies you can adopt to make it easier and PowerShell (I have to mention PowerShell everywhere).

One thing I would like to say is that chatting with Carl and Richard was almost the easiest thing I've done. Not only are they super easy to talk too, they also totally get what you are saying and can ask great questions and comment from their own experiences - which makes the conversation even better. (as its not just me on a rant). Do please check out the show and even better subscribe to the RSS feed from here http://www.intellectualhedonism.com/SyndicationService.asmx/GetRssCategory?categoryName=dnr in your favorite Zune like media device and listen to the other 305 episodes.

Thanks Carl and Richard - .net ROCKS

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

Some of you may have already seen the existing Management Model Designer from http://www.codeplex.com/dfo or seen the channel 9 screen casts The DFO Show - Designing a Health Model with the Visual Studio Management Model Designer or The DFO Show - Implementing a Health Model with the Visual Studio Management Model Designer.

Well we've been working hard on a new version which will CTP in the next few weeks.

Remember the previous version of the tool allowed you to design a health model, then generate the instrumentation code that implemented it. The new version has some pretty significant new features.

Discovery of Existing Instrumentation Code, will allow you to bring into the model any instrumentation code you already have in your application. It doesn't matter if its event log messages, performance counters, WMI events or even Enterprise Library. The designer will find it. You don't even need the source, as the scanner uses the IL!

image

Generation of a System Center Operations Manager 2007 Management Pack means you no longer have to hand craft a management pack for your model. You simply hit a button and out drops a management pack. You can import this management pack directly into Operations Manager and without change Operations Manager will find all instances of your application and begin monitoring.

 image

The new designer also defines more meaningful entities such as web sites, services, etc. which links to the automated discovery in Operations Manager.

Designer Surface Screenshot

Couple the 2 new big features together, and you end up with the capability of discovering instrumentation in your app, mapping this into a health model, and generating a fully operation management pack. With the existing instrumentation generation, you can now turn your application into something that can easily monitored and maintained once deployed.

Watch out for an update and link to download when its released in a few weeks time.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

Now we are pushing out the videos from the Visual Studio training kit, we have created (thanks to Charles) a new tag, VS2008+Training+Kit. What it means is i can now just view everything on that tag at http://channel9.msdn.com/Showforum.aspx?forumid=38&tagid=267.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

Oh My!

I just received a copy of Lee Holmes Windows PowerShell Cookbook. The book is 429 pages of juicy mouth-watering recipes for anything from how to write loops, to accessing remote registry access. There are then 90 pages of reference including Regular expressions and WMI.

A great book. I suggest you purchase several copies (one for work and one for home) from your favorite book retailer.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

You can now take one of the Hands on Labs from the Visual Studio 2008 training kit on MSDN Virtual Labs.

The lab is Building Web Applications with Visual Studio 2008 and you can access it via this link http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032360368&EventCategory=3&culture=en-US&CountryCode=US 

Enjoy.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

Today we released the Visual Studio 2008 Training kit. You can download it right now from http://go.microsoft.com/?linkid=7602397

The Visual Studio 2008 and .NET Framework 3.5 Training Kit includes presentations, hands-on labs, and demos. This content is designed to help you learn how to utilize the Visual Studio 2008 features and a variety of framework technologies including: LINQ, C# 3.0, Visual Basic 9, WCF, WF, WPF, ASP.NET AJAX, VSTO, CardSpace, SilverLight, Mobile and Application Lifecycle Management.

This content was developed over the last few months. As part of the development process, we presented many of the topics to real people we invited to Redmond. In September we recorded these sessions and are making these available on Channel 9. There will be several videos posted each Monday for the next few weeks. Today I posted:

It was great working with all the different folks on the content and the training events over the last few months and I hope you enjoy using the kit as much as we did putting it together.

THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS

More Posts Next page »
 
Page view tracker