MSDN Flash
UK MSDN Flash
04 February 2009
Special Edition on Free Software
Editor's Intro

Hello all,

Welcome to our first special edition of the Flash which is jam packed with pointers to free software for developers. I have gathered together some of the best downloads based on recommendations from friends, colleagues and customers (which in case you were wondering is an overlapping group of individuals) plus a few of my personal favourites. I have tried to get something for everyone. From fairly generic utilities such as Free Download Manager and Unlocker, specialist tools such as SketchPath for XPath and Script# for JavaScript, to full blown approaches to development such as MbUnit and Rhino.Mocks. There were loads more great candidates to choose from which is why I've included two excellent resources – Windows Developer Power Tools which accompanies the book of the same name and Scott Hanselman’s tools list.

What do you think? Is a special edition something you would like to see us do again in the future? Perhaps four special editions per year? What would you like specials on? Send us your feedback here.

The Technical Article is a superb 500 word introduction to Inversion of Control created by Mike Hadlow in response to my request for volunteers. A big thank you to Mike for creating this. I am still looking for more volunteers.

Which leaves me with the last piece of news. I have been working with our partners to help the many UK companies who still have a significant investment with Visual Basic 6.0. What we have created is a clear explanation of the five options you have, from “Do Nothing” to “Complete Rewrite”, backed up by great offers on tools to help you migrate Visual Basic 6.0 code to .NET and resources to help you extend. Did you know that you can convert Visual Basic 6.0 code direct to C#? Did you know that you can easily extend Visual Basic 6.0 applications with .NET forms and controls? Did you know that our partners have migration tools that will convert over 99% of your code? Did you know that migration tools start at £199 and we have free copies for you to win? No? Then check out Secure your Visual Basic 6.0 investment with Microsoft .NET.

All the best

Eric 
Note: My blog is moving to http://geekswithblogs.net/iupdateable/Default.aspx
Follow me on Twitter 

P.S. Thanks to the many hundreds of you who completed the MSDN Survey (still open) and Visual Basic 6.0 survey (closed) last time around. I will start to share what we learnt on my blog in the coming weeks.

MSDNMSDN EventsMSDN ScreencastsEvaluation CentreDeveloper CentresMSDN

Fresh Discoveries
Top Tip
Tip
Bookmark usage in Visual Studio (2mins)
There are now video versions of Sara Fords tip archive. Nice!
Articles
Book
Solid Code
By Donis Marshall & John Bruno (Receive 40% off via MSDN Flash).
Articles
Website
MSDN Flash Survey ends 5 Feb
With a great prize.
Downloads
Download
Free Download Manager
Great open source tool for downloading everything else!
Articles
Website
Windows Developer Power Tools
An even better list than this one to accompany the book, mostly free.
Articles
Website
Scott Hanselmans tools list
A very comprehensive list of great tools, many free.
Downloads
Download
WinMerge differencing and merging
Open Source differencing and merging tool.
Downloads
Download
Code Project Browser add-in for Visual Studio
Browse the goodness that is on Code Project.
Downloads
Download
Xaml editor for WPF and Silverlight 2
A must have tool for Xaml development.
Downloads
Download
.NET Reflector
Explore, browse and analyze .NET assemblies.
Downloads
Download
.NET Reflector Add-Ins
30 Add-Ins available for free.
Downloads
Download
Unlocker for sharing violations
Solve the “File in use by another program” category of problems.
Downloads
Download
Cropper for point and shoot screen captures
Screen grabber utility with plug-ins.
Downloads
Download
Foxit PDF Reader
Light weight and quick.
Downloads
Download
ISORecorder CD/DVD burner
Burn CDs/DVDs from ISO image files.
Downloads
Download
Daemon Tools to mount those ISOs
Why not mount instead of burn?
Downloads
Download
LINQPad query tool for LINQ
Explore and learn LINQ.
Downloads
Download
Notepad2 text editor
Great replacement for Notepad.
Downloads
Download
Notepad++ text editor
Another great replacement for Notepad.
Downloads
Download
Regulator for regular expressions
Regular expression testing tool.
Downloads
Download
Regular Expression Designer
Learn, develop and test Regular Expressions.
Downloads
Download
Sketchpath for XML
XPath Editor and XML analysis and testing tool.
Downloads
Download
XPathBuilder for XPath
Another great XPath tool.
Downloads
Download
Fiddler HTTP debugging proxy
Great for debugging http(s) communications.
Downloads
Download
MbUnit testing tool
Advanced unit testing.
Downloads
Download
Rhino.Mocks mocking tool
Mock object framework to simplify testing.
Downloads
Download
Code:Keep for Visual Studio
Manage thousands of code snippets.
Downloads
Download
SnippetEditor for Visual Basic 2008
Create Visual Studio code snippets easily.
Downloads
Download
Downloads
Download
Ultimate Boot CD
Never leave home without it!
Downloads
Download
SysInternals file, disk, process and network utilities
Loads of good stuff including Process Explorer.
Downloads
Download
Coding standards for C# and VB.NET
Not strictly software but very handy to have.
Downloads
Download
C# coding standard from IDesign plus plenty more!
IDesign have plenty of other useful downloads.
Downloads
Download
Microsoft Web Platform Installer 1.0 
A simple tool to install Microsoft’s entire web platform.
Downloads
Download
Express editions of Visual Studio and SQL Server
Free versions of Visual Studio 2008 & SQL Server 2008.


Register Now to Avoid Disappointment
Community event
Community event
Community event
Community event
Community event
Community event
10 February, Leicester: VBUG - Policy and Dependency Injection 
Community event
Community event
Community event
Community event
Community event
Community event
17 February, Cambridge: NxtGenUG – Alan Dean on REST
Community event
Community event
19 February, Southampton: NxtGenUG – Chris Hay on Azure
Community event
24 February, Coventry: NxtGenUG – Mike Taulty
Community event
Community event


Feature Article

Why do I need an Inversion of Control Container?

You may have come across the term ‘Inversion of Control Container’ (IoC container), it’s become a hot topic in discussions on .NET application architecture. The term ‘IoC container’ sounds quite scary, but the basic concept is simple. It is all about building component oriented software; software that can be re-wired simply with configuration.

Before I introduce IoC containers, there’s an essential building block we have to understand: Dependency Injection. It’s another scary sounding concept, but it really is very straightforward. First an example using a class Reporter that gets reports and then sends them:

public class Reporter
{
....IReportBuilder _reportBuilder;
....IReportSender _reportSender;

....public Reporter(IReportBuilder reportBuilder, IReportSender reportSender)
....{
........_reportBuilder = reportBuilder;
........_ reportSender = reportSender;
....}

....public void SendReport()
....{
........Report report = _reportBuilder.CreateReport();
........_reportSender.Send(report);
....}
}

Rather than creating instances of classes directly inside Reporter using the ‘new’ operator, we are injecting our dependencies by passing anything that implements IReportBuilder and IReportSender to Reporter’s constructor. Our software can decide what these classes will be after compilation. This is where the IoC container comes in. An IoC container is a very smart factory that knows how to create your class and its dependencies. We simply register our components and the interfaces they implement with the container. For example, stating that when we ask for an IReportSender we should be given an EmailReportSender. Remember components are simply classes written using the Dependency Injection pattern show above. The IoC container uses reflection to examine the signature of Reporter’s constructor and then looks up the components it needs in its configuration.

Now when we need a reporter we can simply get it from the container by writing:

Reporter reporter = container.Resolve<Reporter>();

The container will automatically resolve Reporter’s dependencies for us, supplying the implementation of IReportBuilder and IReportSender that we specified in the configuration. It also supplies any dependencies that the actual IReportBuilder or IReportSender implementation might have; it wires up our entire object graph for us.

Now, what if I want to use SmsReportSender rather than my existing EmailReportSender throughout my application? I only have to change the one configuration entry, rather than searching through my entire application looking for every place where a new instance of EmailReportSender is instantiated.

You could write your own IoC container but it makes more sense to use one of the existing IoC containers for .NET, the best known is Windsor from the Castle Project.

Dependency Injection and IoC containers are based on simple concepts, but can yield a wide range of optimisations. Decoupling our software in this way means that we can write applications as a collection of components which can be tested and maintained independently. This is especially optimal with large enterprise systems. The ability to swap components in and out of an application without re-compilation is also extremely powerful.

I hope I’ve been able to spike your interest with this short article. I have posted a list of further reading on my blog if you would like to find our more.

Mike Hadlow

Flash Poll Question

Results from last poll: 

What type of software development work are you doing currently?

27% Developing a brand new application
27% Developing a new version of an existing application
18% Developing a new module/subsystem for an existing application
15% Maintaining an existing application – bug fixes, minor changes etc
5% Migrating an existing application (e.g. Oracle to SQL, VB6 to .NET)
1% I do not develop applications
5% I do develop applications but right now I am not
2% Other

 Flash Results

Question of the fortnight

How active are you with Open SourceSoftware?

Open Source software is increasingly popular amongst windows developers including software from http://www.codeplex.com. How involved are you?

1. I contribute to an Open Source project
2. I contribute to several Open Source projects
3. I plan to contribute to Open Source projects in the future
4. I don't contribute but I regularly use Open Source software
5. I never/rarely use Open Source software

To take part in this week’s poll question please visit my blog to submit your answer.

On the Horizon
Community event
9 – 13 March, London: DevelopMentor - Essential BizTalk Server (£1,695)
Community event
16 – 20 March, London: DeveloperMentor - Guerrilla .NET (£2,995 all inclusive)
Community event
17–20 March, London: Microsoft-Free classroom Team Foundation Server Training (Complete application form)
Community event
23 - 27 March, London: DevWeek 2009 (Register by 27 Feb & save up to £100)
Community event
Community event
22 - 25 April, Oxford: ACCU 2009 Conference (Early Bird Offers until 28 Feb)
Community event
2 May, Glasgow: Developer Day Scotland 2009 




Contact Microsoft

Send your feedback and comments to ukmsdn@microsoft.com.
Find out more about the MSDN resources that are available to you.

Find out more about the Microsoft Contact Centre or call on 0870 60 10 100 (0800-1800 Monday to Friday)
Find out more about your MSDN support options or call 0800 0517 215

MSDNMSDN EventsMSDN ScreencastsEvaluation centreDeveloper CentresMSDN

To cancel your subscription to this newsletter, reply to this message with the word UNSUBSCRIBE in the Subject line. You can also unsubscribe at the Microsoft Profile Centre You can manage all your Microsoft.com communication preferences at this site.

Legal Information 

This newsletter was sent by Microsoft Ltd, Microsoft Campus, Thames Valley Park, Reading RG6 1WG.
Sign up for other newsletters | Contact Us | Unsubscribe | Update your profile | Legal information
© 2009 Microsoft Corporation  Terms of Use | Trademarks | Privacy Statement
Microsoft