19 May 2011

Perf wars - Share your performance experience with VS2010

Microsoft has released another great extension to the gallery, called PerfWatson. This extension monitors Visual Studio for performance problems with the UI thread and submits them to Microsoft for analysis. So if you are having a problem with your Visual Studio, then please take the time to install this and submit to Microsoft Smile

03 May 2011

Rapid Business Development: Lightswitch vs. Dynamics CRM vs. SharePoint 2010 vs. ASP.NET MVC 3

In this post I am going to look at comparing four technologies that can be used to build business applications easily. This post was inspired by how similar a number of products have become over the last few years and more importantly how the new kid on the block Visual Studio Lightswitch, which is a specialised rapid business tool development platform built on top of Visual Studio, is going to affect this eco-system. It is important to also remember that this is being written in the Lightswitch Beta 2 timeframe, so some details may change by launch.

Lightswitch feels very similar to me, to another product I have worked with in the past: Dynamics CRM, which is a Customer Relationship Management tool from Microsoft. CRM does very well in the xRM (x = extensible) scenario, where I think it will come up against Lightswitch a lot. I haven’t had an opportunity to use the latest CRM release yet, so I have had to rely on the help of experts to fill in my gaps!

SharePoint 2010 is another product I have worked with, can of course be used for building business applications quickly cause it is the “operating system of the enterprise” and has good features for these types of applications.

Finally, while watching Scott Hanselman do the ASP.NET MVC 3 demo in the MIX 11 Keynote, I was struck with how that is very close to a rapid business user development tool with all the new scaffolding features. ASP.NET MVC is a real outsider in this group because it is first a development toolset for web development and, maybe a rapid tool second where the rest are rapid development platforms or tools first.

I think the differences between these four are very interesting and while each has it’s strong & weak points, this should definitely not be looked at as a pick one only post. There are many scenarios where you want to combine them for even better experiences.

I have broken down the issues into twenty one(!) aspects (key points we can compare them against each other) which are grouped into six scenarios to make it easier to digest. Each scenario starts with a list of the aspects and a brief description followed by a comparison table of those aspects.


  • Ready to go out of the box: Once installed, can it do anything? Seems silly, but quick turn around at the start, even if actual development is longer is important as it helps with prototyping, shows some rapid development and hints at how hard it is to learn (for me at least, if it does something I find I can experiment and learn quickly). Important to note, we are not looking at making it align with your company needs here, we just want it to do something. Eating CPU cycles & RAM is not something either.
  • Northwind Style Sample development costs: This aspect looks further than the above aspect and looks at how much more would it take to get it tailored for a company, like the fictional Northwind, to have a XRM type system as it can be done across all four. Fewer $ signs means less time and/or resources for the functionality.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
Ready to go out of the box Fast Fastest Fast Slowest LS & MVC need development, while SP needs at least 5min of tailoring. CRM, is ready to go once installed.
Northwind Style Sample development costs $ $$ $$ $$$ ASP.NET MVC has the highest development costs as so little is out of the box. Lightswitch excels in this scenario.


  • Cost for on-premise deployments: This looks at the money cost for licensing to get the solution up and running on premise (i.e. in your company). Licensing is, of course, flexible and this will vary based on who you are – so this is not indicative for all. It does not include such things as server hardware or common costs, for example operating system licensing.
  • Deployment Complexity: Getting a solution up and running shouldn’t be difficult for an organisation and a lot of time can be lost (and costs incurred) changing, upgrading and troubleshooting systems that do not want to be deployed.
  • Deployment Documentation: When it happens that you need to deploy, having a wealth of documentation (be that video’s, best practice guides, troubleshooting material) is vital and plays a large part in getting a solution up that works every time.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
Cost for on premise deployments $$$

Likely cost per developer seat.
No per user costs.
$ to $$$

Cost per user & cost per server. Visual Studio only if you are doing integrations or custom workflows.
$$$$ to $$$$+

Cost per user & cost per server. Visual Studio licenses for any serious work.

Visual Studio licenses.No per user costs.
CRM on the small scale with low development is very cheap but since you pay per user can get expensive. LS & MVC only have development software costs, which is more expensive up front but do not increase as you add users to the system.
Deployment Complexity Medium Hard Hardest Easy LS, CRM & SP all have requirements that they need to work, in increasing deployment complexity, but CRM & SP are significantly harder than LS though due to their more complete product nature. MVC is easy because there is no constraints from it (other than a web server).
Deployment Documentation Yes Yes Yes No Only MVC has no official documentation, which makes sense as it is a development tool. All four have GREAT communities to help as well!

User Experience

  • Front End Technology: A good looking, feature rich UI can seriously ease adoption, and what we are looking at here is the richness level of technology used for the out of the box front end user interface.
  • How good the standard UI looks: Completely subjective and really this is based on what I think looks best.
  • Flexibility of out of box front end: In this aspect we are concerned about how easy it is to adjust and tweak the out of the box front end.
  • Themability : Corporate branding is massive business and making sure the application out of the box looks like it is part of your business is important. It is important to note that both CRM & SharePoint can have custom front ends built which enable this scenario, but that requires extra development, and we are focusing on the out of the box options here and assuming you have the theme built already.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
Front End Technology Silverlight.

Supports out of browser (desktop) & in browser


ASP.NET under the covers with sprinklings of Silverlight
ASP.NET LS clearly best here, since it will give the richest UI out of the box. ASP.NET MVC out of the box scaffolding isn’t pretty but can easily be improved.
How good the standard UI looks (very subjective) Low Medium Very. Low Depends on your web designer This is the most subjective aspect: LS & SP both have a fairly plain out of the box UI but SP has a bad UX to go with it. CRM is much better out of the box and if you are going down the MVC route you will likely be taking advantage of the best UI thanks to the complete flexibility – but that depends on how good your designers are.
Flexibility of UI development in the tool High Medium Medium High MVC & LS can almost do anything on the front end, especially if you combined MVC with Silverlight. SharePoint & CRM too have lots of options and work with Silverlight.
Themability Medium Low Medium High The flexibility of MVC is highest as it is a pure programming, with LS following up thanks to it’s strong theme support. SharePoint can be themed but not the same level as LS. CRM will always look like CRM!


  • API for integration: In the short term having an API means it is easy to get data into your new solution, in the medium term it means more ways to sync data and mash up your systems and in the long term it gives you a way to get your data out. It is vital to have an API.
  • Marketplace: Apple kicked the idea of having an AppStore into reality for many of us and now having a marketplace to get extensions, customisations or themes is an important aspect. I am ignoring public sites, like Codeplex for example, and only focusing on an official marketplaces. Galleries are just marketplaces with no vetting, which means they are bigger but the quality bar is not guaranteed.
  • Additional Authentication Options: Only your employees or customers (which may be everyone if you are lucky enough) should access your solutions. What do we get out of the box to limit access to the system? All four systems support Windows & Forms based authentication so I am only listing other options which are available.
  • Permission Structure (Authorisation): Being able to control what parts of a solution you can access, once you have logged in is also vital and having a lot of flexibility in this space is also important as very seldom will one structure work for everyone.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
API for integration Yes Yes Yes - at least 5 of them. N/A In MVC you could build one, oData for instance, but it doesn’t have one out of the box. LS creates a WCF RIA Service for us. CRM & SP both have API’s, but SP is more complex as it supports so many different API’s with different subsets of features supported.
Marketplace Once it is released a gallery will exist. Yes Nope Gallery available CRM leads here in a big way with a REAL marketplace. ASP.NET MVC has it’s own gallery plus a strong 3rd party marketplace ecosystem.
Additional Authentication Options Anonymous and more available through custom development (e.g. Windows Live). Claims based authentication(custom development required). Claims based authentication via STS Anonymous and more available through custom development (e.g. Windows Live). Claims based authentication(custom development required). Anonymous and more available through custom development (e.g. Windows Live). Claims based authentication(custom development required).  
Permission Structure (Authorisation) Very basic and really just a half a step ahead of editing XML that MVC needs. Fantastic out of the box option, plus plenty of extensibility if needed. Good structure with many levels of customisation.
Out of the box is very simple.
Basic support for it but can be extended through development. A lot of XML work though may be needed. LS & MVC are the lightest here, both supports authorisation options but enforcing it is up to the developer to implement. LS is better slightly better at guiding the developer and needs no XML editing. SP authorisation is as varied & powerful as what CRM offers. However SP can easily get messy, users can break permission inheritance, while CRM enforces authorisation all the time and makes for a better structured environment.

Information Worker Features

  • Offline support: Being able to work when you are not in the office is a vital need for many people. So how do these platforms enable that scenario. In theory it is always possible to build this, so we are just looking at the out of box offering.
  • Easily Import Data: How do we get information into the solution, besides the API? Does the product make this easy with out of the box tooling?
  • Printing: Despite the promise of a paperless office, it still is not the case and being able to print is important, even if it is just to XPS or PDF for invoicing.
  • Office Integration: Integration into Microsoft Office products (i.e. Word, Excel, Outlook, PowerPoint, Access, Publisher, InfoPath & OneNote) means that your IW’s will be able to work in the tools that they are comfortable with, easing adoption and productivity.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
Offline support No Yes Yes No Being able to work offline is important if you are a roaming user. LS & MVC offer nothing in this space while CRM & SP both offer offline via Outlook.
Easily Import Data (out of the box) Nope Yes, from CVS. Yes. Multiple options. Nope In all cases there are tools and other ways to import data but CRM & SP have an out of the box options.
Printing (out of the box) Nope Yes Yes – Poor Browser Level LS & MVC can have custom development solutions for printing,  other than that they both offer nothing out of the box. As browser printing has improved MVC has a slight advantage being HTML based normally. SP has printing, but it is very poor. CRM leads the way here with a great print scenario.
Office Integration Low

One way export to Excel.

Others can be custom developed

One way to Excel. Mail merge with Word & Outlook.
Deep integration with Outlook is available too.

Only Publisher doesn’t have some integration with SharePoint.
Every other Office product does, some like Excel are one way while others like Access are two way.

SP internally has features that understand Office files too, for example PowerPoint Libraries show thumbnails.

Can be custom developed.


  • Databases Supported: Where the data can come from for your application is a critical piece of the puzzle because it means the difference between building ETL solutions to handle moving it around if the source is supported or having it just work.
  • Minimum Skills For Tailoring: Tailoring is what I refer to when I think of customisation of a system, without the need for a programming language. At some point you will need a developer but how far away that is and what can be done by a analyst or super user early on is important from a time to solution and cost perspective. Lower is better here.
  • Can run in the cloud?: If you not thinking about how you can leverage the cloud, then you are not thinking. Making sure the solutions can cater for the cloud is an important consideration. All four solutions can run in the cloud but how do they run is also important
  • ALM Experience: How does this tool work with a full ALM experience? Can I unit test it easily? Will it go into source control easily and what happens when multiple developers are updating the same files? How about build server and development tool integration? All important questions in understanding a complete picture of that these tools cost or what you sacrfice with some of them.
  • Requires Silverlight: Despite decent market penetration and ease of deployment in corporate scenarios, the requirement for Silverlight can be a deterrent to business, especially those where the CEO uses an iPad2 Smile with tongue out. This is not answered in the table as only Lightswitch requires Silverlight. CRM has no dependencies, SharePoint has a fall back mode and if you used Silverlight with MVC it would be possible to have a fallback mode, provided you developed it.
  • Data performance: This is also not in the table since it only applies to Lightswitch. For CRM, MVC & SharePoint I assume your front end (web) is always close enough, for example the same LAN, to the database but in Lightswitch you can really separate them. Here it is important to note Lightswitch is NOT great with data performance between backend & frontend. It sends massive amounts of data around. In my view it really does not feel optimised for WAN scenarios.
  Lightswitch (LS) Dynamics CRM SharePoint 2010 (SP) ASP.NET MVC My Thoughts
Databases Supported SQL Server, SQL Azure, SharePoint or anything supported by WCF RIA services. SQL Server SQL Server normally.

With advanced skills can use external data sources.
For scaffolding anything supported by LinqToSQL or Entity Framework. LS & MVC feel very close here, however LS has it’s own OM which MVC uses established ones meaning more options in the MVC camp.
Minimum Skills For Tailoring Intermediate
Low Highest Being able to tailor with less skill is a big plus for CRM & SP. MVC doesn’t have tailoring as it is all development. LS really stuck in the middle ground here – for setting it up I suspect nothing more than power user but that ends much sooner and moves to needed a developer than with CRM and SharePoint.
Can run in the cloud? Platform as a service using SQL Azure for database & compute instances for front end. Software as a service: Can get it from Microsoft & Partners at a cost per user per month. Software as a service: Can get it from Microsoft & Partners at a cost per user per month. Recently launched in beta with Microsoft. Platform as a service using SQL Azure for database & compute instances for front end.  
ALM Experience Medium Low High Highest ASP.NET MVC is a pure development experience and so works well with ALM. SP2010 plus VS2010 is a great ALM experience (although mocking is difficult). LS & CRM are oddly very similar with customisations in XML though so expect some source control pain. Plugin’s for CRM and LS Extensions are a great ALM scenario. CRM falls short in the unit testing scenario though.

Special Thanks

A post this in depth could not have been done without input from my “brain trust”, and I thank each one of you for your help:

19 Apr 2011

What's new in Microsoft .NET Framework 4 Platform Update 1?

Even this Pooh is confused by the new PU!Microsoft today made me happy & sad all at once! Let’s hit the bad news bit first: (rant start) WTF is a Platform Update? The .NET Framework must be the least logically named thing ever! We have had to endure such inconsistencies major releases be a point difference release (.NET 1.0 vs. .NET 1.1 and again with .NET 3.0 vs. .NET 3.5) while other times major releases are major number differences (.NET 2.0 & .NET 4 come to mind), we've had service packs be patch updates until .NET 3.5 SP 1 which included MASSIVE new functionality and had finally .NET 4 dropped the .0 after the 4 (see how many Microsoft staff mess this up still), in contrast to every release before it! There is zero logic or pattern in this naming, which just adds to MASSIVE customer confusion. Today we are introduced to a Platform Update, and not just PU (like Poo or Pooh) but PU1… that implies more is coming… so WTF is it? Rant over, promise.

It is NOT the new name for bug fixes, the PU is in fact the best news for Workflow Foundation people as it includes some seriously powerful new features.

untitled2We finally get a complete state machine in WF (dance):

  • Entry and exit actions for a state
  • Conditional and default transitions that have transition actions
  • Scoped variables for a state machine
  • Improved tracking support

I know this was available on Codeplex for a while (and there is still other good stuff on there for WF not included in this), but this is just awesome to get it officially as this implies to customers a seriousness & support that having on Codeplex does not.

I would be happy if it was just that but they have ALSO given us the ability to use SQL Azure as a store for WF instances!!

This is HUGE!!

Just imagine storing a workflow in the cloud until you need it later? Ideas for roaming devices, workflows that span across devices and, naturally, better usage of worker instances in the cloud themselves all are opened up by this.

Lastly (and least-ly for me) they add the CompensationExtension class, which is used if you are creating your own host and wish to enable support for compensations in workflows. Not a big deal for me, but this could bring new features into my favourite host AppFabric, but we will need to see if that happens in the future.

The update comes in three parts:

  1. The runtime update. You need this to do development & you need to install this on machines that make use of the new features. You can get the update at KB2478063.
  2. The multi-targeting update allows Visual Studio to give you the option for this in VS as a drop down (see below) you can get this from KB2495638.


  3. The designer update, which does include both of the above and provides all the bits needed to make use of the new features in VS. You can get it from KB2495593

So what you waiting for?! Go and get your workflow on!

05 Apr 2011

Install Tailspin Travel on Windows 7 SP1

imageIf you try and install the tailspin travel demo on Windows 7 with service pack 1 , it will fail saying the operating system is not supported Sad smile

Thankfully this is easy to fix, in the C:\TailspinTravel\assets folder is a Dependencies.dep  file. Open that in notepad (or text editor of your choice) and navigate to the <os> element. Note the buildNumber attribute is set to: 7000;7100;7600

All you need to so is change it to: 7000;7100;7600;7601

As in the screenshot above, now save and rerun setup and you will succeed!

30 Mar 2011

How to attach to process before the application even starts?

There is many ways to do debugging in Visual Studio, normally you just hit F5, compile & run the code with debugging. However sometimes you need to debug an executable you have already built or debug on another machine. I have mentioned this previously you can use the Attach to Process option to do debug MSCRM assemblies that exist on other machines and/or run by a executable you do not control.


This works great but recently I had an issue where the application would start and (silently) die within seconds, but only in test (never in dev). It just happened so quickly that I could not attach the debugger in time. So how can you debug that scenario?

Thankfully this is very easy, just go to your Visual Studio project settings and switch the Start Action to Start External Program, set the path to the executable and then hit F5!


What this will do is start the executable, attach the debugger and work with your code all for you – so no more racing against the attach to debugger options Smile

30 Mar 2011

Missing Code Analysis

If you have Visual Studio 2010 you may be annoyed when you want to run code analysis and it is just not there! You can configure it, but cannot run it?!


The reason is that code analysis is only available for the selected project, and you likely have the solution selected in the Solution Explorer (or Solution Navigator). You will need to select the project first and it will appear.


No solution wide code analysis yet either. However I believe these annoyances will be corrected in the next version of Visual Studio Winking smile

30 Mar 2011

NDepend: Power tip to analyse quickly

Update: This has changed with version 3.8, read the awesome news at A follow up to my NDepend pro tip...

I am a a big NDepend fan – I can’t imagine doing analysis or taking over new projects without it! If you have not heard of NDepend, then have a look at: NDepend - The field report

I feel stupid for not finding this power tip before, but recently I had about 20 projects to analyse - a situation that appeared to be painful because it meant creating NDepend projects for each one.

Thankfully I stumbled on the terribly named Select .NET assemblies to Analyze option in the file menu. This is option is actually a way to create a quick temp NDepend project!


Once you have clicked that, you should click the choose VS solutions option and you get another great dialog showing you a list of your Visual Studio recent solutions! This is great because I would load the code in VS, build it (to make sure it can build) and run code metrics against it and having this quick selector linked to VS meant that I do not need to browse for the solution NDepend again!

Possible bug in it though, where it doesn’t show web projects; WinForms, console apps etc… all fine just not web projects?!


Select the one you want, hit OK twice and analysis starts!

Happy analysis!

23 Mar 2011

Pepper: A Visual Studio Settings Synchronisation & Backup Extension

pepperscreenshotPepper is a new free extension for Microsoft Visual Studio 2010 that I have created to solve a major pain which I am calling SLM (setting lifecycle management Smile with tongue out). The problem is that settings inside Visual Studio are vast & complex, and configuring your IDE is a labour of love, taking years of fine grain tweaks. I can personally trace back my settings to sometime in 2005 and have been tweaking and fiddling ever since.

Once when I moved jobs I forgot to copy my settings and VS felt broken until an ex-co worker was able to get a backup of my old laptop restored and sent me the file. Wouldn’t it be great to have a backup system in the cloud? Say on Azure?

This brings about another interesting scenario, what if I have multiple machines? Can I backup on one machine and restore on another? Giving me a synchronisation system for Visual Studio settings?

Pepper does exactly that, it automates the export/import of settings and allows you to place them in a SQL Azure database!

This is the first release, and while it has had some beta testing it is not perfect so please, if you give it a go and it fails, let us know in the discussions.

Pepper is available in the Visual Studio Gallery, which means you can install it and keep it up to date inside Visual Studio too!