SignalR 0.4 Released!

I’m happy to announce that the long awaited 0.4 release of SignalR is now available on NuGet! The sample package has also been updated to account for some of the API changes.

This release brings a huge amount of changes including new features, massive performance improvements and some API breaking changes (for the better of course).

Here’s an overview of the changes in this release:

  • Increased throughput by almost 100% from 0.3.5
  • Substantially reduced memory use
  • Decoupled from ASP.NET, can now host on other servers, e.g. OWIN, HttpListener, etc.
  • Standardized on JSON.NET for JSON serialization and deserialization
  • Removal of non-async APIs
  • Removal of statics to allow for better isolation (like testing, multi-host, etc.)
  • Support for four transports:
    • WebSockets on ASP.NET with Windows 8
    • Server Sent Events (EventSource)
    • Forever Frame
    • Ajax Long Polling
  • Improved transport negotiation
  • Support for custom querystring values in connection URLs
  • Support for dynamic parameters to hub methods
  • Improved disconnect logic and notification
  • Client support for .NET, Silverlight and Windows Phone 7
  • Improved tracing
  • Tools and configuration for load testing
  • Loads and loads of bug fixes

Plans for future releases

Our upcoming releases will focus on supporting scale out for web farms and cloud hosting scenarios, along with further features and improvements. While the list is still being decided, the following features are being considered:

  • Scale out providers for SQL Server and Service Bus
  • Cross domain connections
  • Hub JS proxy file generation at design/build time for improved JS IntelliSense & bundling support
  • .NET client side proxy generation
  • Much improved tracing
  • Web Forms control for server originated post-back (for use in UpdatePanels)

Giving Feedback & Getting Assistance

Please jump into the SignalR room on JabbR if you want to discuss any feature or issue or just chat with the SignalR team and other SignalR users. If you find a bug or have a feature suggestion, please log an issue on github.

Show Your Support

We love hearing of people having fun with SignalR. To show your support and keep us in the loop of your successes or otherwise, you can follow SignalR on twitter, and watch the SignalR repository on github.

BUILD talk on working with data in ASP.NET Web Forms 4.5 Developer Preview

Create rich, data-driven Web apps with ASP.NET 4.5 Web FormsThanks to those who attended my BUILD talk on the new features for working with data in ASP.NET Web Forms 4.5 Developer Preview (great name 😐 ).

If you didn’t catch it, you can watch it on Channel 9.

The demo project I used can be downloaded from

We’d love to hear feedback on these new features so please download the Visual Studio 11 Developer Preview, read the series on new ASP.NET features from ScottGu, read the What’s New in ASP.NET 4.5 and Visual Web Developer whitepaper, and try out the new features with *your* projects, by opening them in VS11 and updating them to use things like Model Binding and Unobtrusive Validation.

There’s no better testing than with real world apps!

Blog links updated

I’ve gone back through my blog articles and updated the links to code samples and the like as many of them were no longer working after I recently changed hosting providers. If you happen to come across any I missed, just drop me a comment to let me know and I’ll fix it up quick smart.

Typing speed

Mitch did it, then Darren. Now I’ve taken the typing test.

Typing test

I’m pretty happy with that, given that I’m not used to copying out great reams of repeating (or non-repeating) text.

What do you get?

CSS gone mad!

I found this site by way of Dave Glover and had to post it here:
I’m a big fan of CSS-based design (throw away those ugly <table> tags will you!) and this site really showcases just how powerful it can be. Unfortanetely I don’t quite have the creative talent of the designers on show there but that’s no reason not to use the technology.

I’m a Tech Talk Blogs Guest Blogger!

Well that’s just plain scary! I’m one of the guest bloggers over at Tech Talk Blogs for the next month or so, sharing the spot with others who have lots of impressive initials after their names and accolades to brag about. I’ll be flying the flag for the little people, you know, the one’s who are only just starting on .NET 2.0 stuff having been caught in 1.1 projects for what seems like an eternity, and perhaps don’t use SQL Server for their database, shock horror!
Wish me luck!

Oracle and .NET Blog

Found a good looking Oracle and .NET blog today here:
Seems this guy has presented a bit on Oracle at Tech.Ed US this year which Oracle is a Silver Sponsor of. How long until we see this sort of content at Tech.Ed Oz???

Updated: Oracle, .NET & Bind Variables

If you use Oracle as the database for your .NET applications then you must use bind variables in your SQL queries, I repeat YOU MUST USE BIND VARIABLES! The performance benefits of using bind variables are HUGE and cannot be underestimated.
So instead of doing this:  
string sql = "select * from SOME_TABLE where ID = " + id.ToString();
OracleCommand cmd = new OracleCommand(sql, _conn);
OracleDataReader rdr = cmd.ExecuteReader();
Do this:
string sql = "select * from SOME_TABLE where ID = :p_id";
OracleCommand cmd = new OracleCommand(sql, _conn);
cmd.Parameters.Add("p_id", OracleDbType.Decimal, Convert.ToDecimal(id), ParameterDirection.Input);
OracleDataReader rdr = cmd.ExecuteReader(); 
The project I’m currently working on is a new release of an internally developed app I worked on 2 years ago. It was our first .NET on Oracle project and we didn’t know of the many benefits of using bind variables in our SQL & DML statements. I have spent the last few days refactoring as much of the DAL code as I can to use bind variables and the effects on performance are astonishing. My understanding of the reasons is limited but basically if you use bind variables to pass in variable values to your queries, the Oracle SQL parsing engine can re-use much of the work it does when executing the queries when the values of the variables change. Plainly put, the query never changes, only the values do, and this means that execution plans can be re-used, etc. An added bonus is that it effectively paramaterises your queries, making them immune to SQL injection attacks.
I found a handy article today in relation to using bind variable to pass a list of values to a SQL IN statement. I’ve implemented the suggested pattern and it works a treat! Just note that you’ll have to read a fair way down the page to get to the example code that relates to the more recent versions of Oracle (9 & above). Just search the page for "Delimiter  December 29, 2004" to find it.
Update: Found another great getting started article today on bind variables on OTN at Check it out.

Victoria.NET Regional Conference






  • NO CHARGE to Victoria.NET members!!
  • 20 speakers over a whole day of action-packed conference program
  • Something for everyone in two full streams:  business & technical
  • Easy to implement information
  • Great give-aways, including a 1-year MSDN subscription!




Date:  Saturday 17 June

Time:  9am to 5.20pm

Venue:  Geoffrey Blainey Auditorium, Mount Helen Campus, University of Ballarat







0900 – 0945

Registration and Light Breakfast

0945 – 1000

Welcome & Keynote

Speaker TBC

1000 – 1040

Getting the most from Visual Studio

Dave Glover, Microsoft Australia

Business Coaching:  Tips to Improve your Business

Geoff Currie, Action International

1040 – 1055

Morning Tea

1100 – 1140

What’s New in C# & Visual Basic

Bill McCarthy

Ballarat:  Going Places in ICT?

George Fong, cBallarat 

Regional Technology Parks & Their Role in ICT Development

Stan Jeffery, Ballarat Technology Park 

1145 – 1225

Developer Productivity

Charles Sterling (TBC)

Small Business Server 2003 for Business

John Bade, Outback Computers

1230 – 1320


1325 – 1335

Address by the University of Ballarat

Speaker TBC

1340 – 1420

Office for Developers

Ed Richard, Software Objectives

IBM & Ballarat University:  An Education Model for the Future

Scott Hebbard, University of Ballarat

1425 – 1505

QuickReview of SQL Server 

Greg Linwood, SQL Servants

Quick Review of BizTalk & Windows Workflow Foundation

Bill Chesnut, Readify

YOU Can Export!

Min-Joo Sohn, Austrade & Wataru Takagi, Austrade Japan

AusIndustry:  Programs for Regional ICT Development

John Finch, AusIndustry

1510 -1525

Afternoon Tea

1530 – 1610

ClickOnce & Deployment

Scott Baldwin, Readify

Getting the Most from MS Office for Business

Ed Richard, Software Objectives

1615 – 1655

Practical Security for Developers

Chris Hewitt, Readify

Ways to Make Money from ICT by Partnering with Microsoft

Peter Halliday, Universal Trustees & David Gibson, Microsoft Australia

1700 – 1710

BDNUG Introduction

Damian Edwards, Rural Ambulance Victoria

1715 – 1720





Send the following information by return e-mail to Collins Rex at










* If there is enough of a demand, we will arrange bus transport from Melbourne to Ballarat return.  This service will be provided at a cost of $30 per person, payable in advance.  Please indicate whether or not you will require transport.


X If there is enough of a demand, we can arrange dinner and the show “Blood on the Southern Cross” at Sovereign Hill, for delegates and their families.  The cost will be $65 per person for members (and their families), and $70 per person for non-members (and their families).  Please indicate whether or not you are interested in the evening entertainment.




VS Team System continues…

Seems as though the current editions of Visual Studio Team Edition were just the beginning: