Tristan Smith: Tech Ed 2008 Day 1

The day started as it would continue, I was woken up to the joyous bouncing on my bed of Neil Bostrom excitedly shouting “Tech Ed! Tech Ed!”.

Arriving at the conference centre, I looked in wide eyed amazement at the sheer amount of caffeinated geeks and laptops on display. Quickly joining the queue I picked up my laptop bag, cap and timetable and headed for lunch.

The keynote was first, we heard about the awesome new features that are planned for Visual Studio 2010 (The development environment we all use at Compsoft).

Integrated into the IDE are code analysis tools which allow you to see visual dependency diagrams and relationship diagrams which you can dig deeper into. This allows people unfamiliar with the code base to learn a system without starting by trawling the code, allowing people to be productive quicker.

Designer additions
Writing markup for pages is a time consuming task, using the code snippet mechanism which has been improved, html and other control declaration should be a quicker experience. [keyword] [tab] is sufficient to have an entire html or asp control rendered.

There are a lot of improvements with code navigation, you can now see code highlighting of variable usage. This should make bug fixing and code tracking a much easier task.

There is a new QuickSearch feature as well, it's surprising how much difference small improvements like this can make.

Deployment
A new deployment profile should allow for easier deployment scenarios and the configuration pain associated with debug and release modes is being made easier.
Multiple configuration files can be used with a new transformation syntax so that different environments can be configured independantly with little change. SQL server details, versioning etc can all be done in a much nicer way.

SharePoint
Sharepoint development looks like being a bit easier with a new integrated explorer and new controls.

Integrated test centre
This was a focus area of Visual Studio 2010. The classic problem is that a tester will encounter an issue but that the developer won't be able to reproduce the bug.
With the new integrated Test Center a tester's session is entirely video captured and logged. Moreover, the entire debugging history is captured at every stage of the test cases. This allows a developer to literally 'jump into' the testers session even if that session was weeks or months ago.

The developer need not even be on the same machine, the tester's machine configuration is cloned into a virtual machine with state so a virtual instance of it can be launched and debugged.

Logging bugs is a much easier experience too as the majority of the information needed is passed into a new bug report template.

The testing features should make a real impact in taming and fixing bugs, helping us develop higher quality software.

Lap around the .NET Framework 3.5 SP1 Enhancements for Web Developers
Normally service packs are just big packages of bug fixes, 3.5 SP1 however, included a lot of framework and supporting technologies.

ADO.NET Data Services
Gives us another mechanism for exposing data of any kind over the web in a standard and easily consumable way.
Using the same technology as RSS (Atom) the data can be queried via URI. http://mysite.com/customers can list all customers where /customer(1) can give customer ID 1 etc.

It's secure – Locked down by default. You get query and command interceptors to allow you to perform additional processing both before and after the data is returned and the query is fired off.
You can also retrieve values without the XML that normally accompanies webservices by using $value.

Routing
Microsoft's solution for friendly URL that allows sites to have “mysite/Products/Toy_Car” instead of /Products.aspx?prodId=234. Is used in a lot of the technologies shown, Dynamic data, DataServices etc.

Dynamic Data
We use our own code generation to produce List, View, Edit pages in ways that we find most useful. Dynamic Data is a similar solution, it uses templating of List/Edit pages which can be customised based on types and pages with customisation an option.

It uses Meta Data attributes for validation, overriding field names etc.
Modifying these templates and attributes allows for styling, custom processing and behaviour.

AJAX History
To allow the back/forward buttons in the browser which have been off limits with Microsoft's AJAX implementation up to now.

Script Combining
Allows you to combine multiple Javascript resources into one to cut down on the resource requests. This helps keep the page load time down.

Web and User Experience - ASP.NET AJAX 4.0

This talk took us through the multiple ways you can build the same page and give quite different user experiences each time.

When it comes to writing a page, you can use the traditional postback model where the server returns a whole new page every time. Not very responsive, the user sees the page load in full but it's safe, the server is in control.

Alternatively we can use AJAX update panels which intercept the page requests and give a more consistent experience, you don't see the page reloading but the content changes nicely.

From there you have a choice of using the Microsoft AJAX Client Library which means the server gives you the page once and the browser makes requests for data as and when it needs it. This approach is the most responsive here but with the trade off that the server loses control.

The speaker showed how the amount of bytes being sent and received using the different implementations varied from 3.5k to 0.6k, a significant performance improvement.

When working with the client library normally, you have to write your javascript by hand to populate the content as you need. Version 4.0 of the AJAX framework includes declarative controls such as the DataView which (on any control) give you the properties and syntax to pull in your data and template out the style etc without any javascript.
Less javascript = more maintainability so it's really for the win.

Live Binding is a new feature that looks very interesting, when using the DataView you can specify the property and method names to bind to your templates in a way.
This allows you to execute javascript on the context of the current data item.

There is also a way of implementing two way databinding using a style similar to WPF that was shown with an MVC example which I'll have to look at again.

The summary was basically that moving more to the client side will enable better performance and a better user experience. Compsoft's projects have been moving towards this a lot more recently with Javascript libraries such as jQuery. We've been using Update Panels for more than a year to give a better user experience.

Apologies for length... :p