Current and Future Web Development looking cool
I was fortunate enough to attend the WebDD conference in Reading at the weekend. I could only stay for the morning so took the time to attend three sessions given by Scott Guthrie. If you get the chance to see him speak I'd recommend it as he has a very relaxed, funny style and his demos were very slick in an "I know what I'm doing kind of way" rather than a scripted way. Mind you, he is general manager for most of Visual Studio :-). All the sessions were filmed and are due to be posted on the WebDD site in the next week or so.
What did he talk about? First he gave a two part talk entitled "End to End Web Sites" which demonstrated what you can do with currently shipping web development technologies from Microsoft including IIS7 (released as part Vista), SQL 2005 and ASP.NET AJAX 1.0 which was released last week. Second he gave a sneak peak at Orcas, the next release of Visual Studio and the .NET Framework. His sessions were so overwhelmingly popular that despite already giving 4 talks that day he did a repeat of the Orcas talk at lunchtime as well!
I made some notes as he went along (mainly to help force them into what brain cells I have left) but here they are. I'd recommend watching the recordings of his talks once they are available.
End to End Web Sites
With IIS7 (available now on Vista) you can now have multiple sites in the desktop version of IIS.
The tight integration of IIS7 and ASP.NET together with the shift from metabase to config files as the store for configuration settings means it becomes much easier to XCOPY deploy entire web sites.
There are at least 45 ASP.NET data access tutorials available on the ASP.NET site.
Although URL rewriting can be achieved today with bolt-ons such as that from urlrewriting.net, it is now very easy in IIS7.
The CSS Adapter Toolkit allows you to change existing ASP.NET controls from table based to CSS based rendering by allowing you to take full charge of the CSS styling of controls.
Scott kindly pointed out that as AJAX 1.0 is now released it is also now fully supported by Microsoft support. He emphasised that this meant 24 hours a day, 7 days a week, 52 weeks a year. Don't I know it - I've been carrying my phone all week Scott :-)
Scott then demoed some of the key AJAX controls including the UpdatePanel which is a container allowing you to AJAX enable groups of almost any existing ASP.NET controls - very cool. The UpdateProgress control also allows you to give the user feedback that something really is happening. The DisplayAfter property allows you to control how soon that should happen (default 1.5 seconds - that's how long it takes for people to get impatient these days!).
Then he showed the Control Toolkit. It currently has 35 controls but the target is 50 to 100 in the coming months. This is a collaborative effort with some control written by Microsoft people and the rest by developers from around the world. The source code for the toolkit is available as is the source for AJAX 1.0 itself. Each control is basically made up of the client behaviours, the server side code, the designer code and some helper code. The highlight of the control toolkit was the calendar control which had some very cool scrolling action.
Next he demonstrated who the ASP.NET membership provider functionality is now fully integrated with IIS7. He also discussed how the IIS7 management snapin talks to the server over https and can be used to manage remote servers as easily as local ones with granular control over who can change what. This offers great scope for hosting environments once Longhorn server ships.
Setting up SSL in IIS7 is a breeze with "click here" support for creating a self signed cert.
Something he mentioned about ASP.NET 2.0 caching that I was not aware of is that you can now cache by page with the exception of certain parts of the page - very handy.
He also demoed the use of the WebPartZone which is something I've not used yet but should as it makes web site customization very easy.
The upcoming SharePoint 2007 is built on top of ASP.NET 2.0 so you now have various options for different people to author different parts of your site - the new SharePoint Designer tool, Visual Studio or the new Expression Web tool.
Sneak Peek at 'Orcas'
Scott then previewed the next CTP build of Orcas which should be available in a few weeks with a beta in April timeframe.
First thing I wasn't aware of is that Orcas will allow you to target .NET 2.0 (Whidbey), 3.0 (Vista) and 3.5 (Orcas). You will choose which version you are targetting at the project level and then the IDE will only show you and let you use the features appropriate for that version. This is the first Visual Studio version to allow this.
Next point was that the core CLR will remain unchanged in .NET 3.5. In the same way that .NET 3.0 takes the core .NET 2.0 runtime and layers on WPF, WCF and WWF, .NET 3.5 will maintain the core and augment with new features such as LINQ (which itself is built on dynamic language features that are being introduced), enhanced language compilers, CLR Addins etc.
A big bonus for web developers in Orcas will be the enhanced HTML designer - the same as that used in the Expression Web product. The complementarity of Expression Web and Orcas will make it easier to allow designers and developers to work together on sites.
Another big plus is the new "split view" which lets you see both HTML view and WYSIWYG design surface at the same time.
A big bone of contention for many developers in Visual Studio 2005 is the switching between HTML and design views which is sometimes frustratingly slow. This is massively improved in Orcas due to the continuous background execution of the WYSIWYG engine. Another nice touch is the ability to wire up events in source view saving you a switch to design view.
A major new feature is the enhanced CSS support. The "Manage Styles" panel shows you the style sheets associated with a page and allows you to drag and drop style between style sheets. A new colour picker dialogue allows you to pick colours from any window on your desktop. Highlighting of CSS properties actually in use allows you to see at a glance what you've got and what you are using while the CSS properties windows lets you "debug" your CSS by seeing which properties are being overridden and at what level.
You can also set the IDE into a mode that auto-generates CSS as you do WYSIWYG edit your pages (so you don't get rogue HTML tags going into your markup).
A much desired addition to ASP.NET has arrived - nested master pages.
Debugging of anonymous functions should also be possible but only based on prototypes not closures. Apparent debugging of closures is particularly hard to implement - one reason why the AJAX libraries are based on prototypes.
Solution Explorer will show JS files that your solution uses when they are downloaded from external sources.
AJAX unit testing support is also being added and many of the testing features are to be brought forward from the Team Suite SKUs to Visual Studio Professional Edition!
The cool thing is that most of these rich new IDE features will be in the Express SKUs also.
Then Scott moved onto LINQ - the Language integration of data access as a first class feature. The hub of this is the "LINQ to SQL" object relational mapper design surface where you can focus on your data model. This then creates data centric classes behind the scenes which are then kept in synchronisation if the data model changes. I strongly recommend watching the demos for this - it is hard to express in words!
LINQ is based on extension methods which are a new dynamic language feature added in C#3.0.
Drag and drop of the stored procedures in the database onto the data model design surface gives you IntelliSense for the stored procs you are using.
LINQ is not data source specific - it allows you to work against a myriad of data source including XML, SQL and Oracle as well as offering full query support against any array or collection. This allows you to do in memory joins across disparate data sources.
New UI elements include an enhanced ListView control with support for paging, CSS and editing.
The intriguing "Scaffolding UI generator" can be used to instantly create a UI framework for any LINQ data source. This is put to extreme effect in the BLINQ tool which effectively generates a complete web site from a data source!
Scott finished with some very interesting comments about the future directions of Microsoft development tools. He talked about the move of LINQ features inside of SQL Server and the streaming of LINQ entities across the wire for offline querying. He also talked about the high level move from imperative to declarative programming models with a shift from "here's how to get the data I want" to "here's the data I want". This important in the long term for making software more scalable on multi-core machines as the ability to parallelise execution can be moved from something the developer has to think about explicitly and implement via multi-threading etc to something that can be done implicitly by the CLR and the framework.
I have seen the future - and it is looking very rosy indeed!