I was a bad person and just started working on my Cool Tips and Tricks talk for the PDC this week. My official reason for waiting was that I was holding off working on content until the other 18 ASP.NET Whidbey talks were done -- so that I could make sure to avoid any duplication of content. For those who have never been to one of my tips and tricks talks before, the basic structure I use is a slide/demo/slide/demo format. The emphasis is on cool stuff that can you can easily put into most applications.
Origionally I was a little worried that I wouldn't have enough content for the talk -- given that so much cool stuff is covered in-depth elsewhere. Thankfully after about 30 minutes more of thinking, though, I was able to dig up a number of goodies to share. Below are some of the things I'll be showing in my 60 minutes (note: I'm deliberately not showing any of the stuff covered elsewhere in the other 18 talks):
-- Cross Page Postback between pages. Yup -- you can now do it. And it is easy.
-- Using ValidationGroups. You can now have validator controls optionally validate depending on which button on the page is pushed. You can group validation rules into “groups“ so that all controls within that group fire or don't fire.
-- Building workflow on a page using the new asp:Wizard control. Handle next/back, step1->n workflows easily now (no funky state management tricks for controls required).
-- Using the new Image Generation Service and asp:DynamicImage server control. Show databinding a photo-album where all images are stored in the database, and bound to the asp:DynamicImage control within a asp:DataList template. No code required.
-- Url Rewriting using the new UrlMapping Service. Build vanity urls on your site (/products/shoes.aspx is re-written to really be processed by /products/productcatalog.aspx?id=shoes -- but the customer never knows it). Talk about how this makes http.sys kernel level caching possible for dynamic pages.
-- Using the new SiteCounter service to efficiently log and record usage patterns on a site (page views, clicks on important links, ad banner click and impressions tracking). Build some reports that show off how to look at the data.
-- Building a simple content management system with the FileSystemProvider. Show how you can store your .aspx pages inside your own custom database now (complete with code and code-behind) -- and how you can configure ASP.NET to pull and execute the content (and still dynamically compile it if appropriate) from places other than the file-system.
-- “No Compile” Pages. Enable administrators to lock down what code is allowed (or not) for portions of a site. Talk about scenarios with tens of thousands of content pages (but still with server controls + master pages -- just no code allowed) -- and how these can also all now be served without dynamic compiling each one at runtime (avoiding a perf hit on the first request -- as well as reducing memory usage on the server.
-- Using the ASP.NET Forms Authentication architecture and the new Membership and Role Management system to provide security authentication/authorization to non-ASP.NET pages/resources. My plan is to show a classic ASP site where we add login/role management support using ASP.NET. I'm also going to probably show PHP or JSP protected using ASP.NET as well.
-- Client-script goodies. Basically eliminate the need for the Black-Belt Web Forms talk that I currently give occasionally on Everett. Show automatically maintaining scroll postions during postback, controling default buttons and focus, programmatically setting focus on controls on the server, and easily handling client-side click events using server control buttons.
-- Build-Providers. Talk about the ability to add declarative types into your “code” directory and have them automatically compiled as part of your website (with full intellisense inside Visual Studio). Talk briefly about the extensibility model on how to add your own files (example: a .pdf file could become a strongly typed object that you could program against), and about the cool model this enables when used with partial types for end-user extensibility. Show using a .wsdl file I got from Google.com to integrate Google searching into a site as a web-service bound to an ASP.NET data control.
-- RSS Blog Reader. Show how to build a simple RSS Blog Reader from scratch using the new asp:XmlDatasource control, the asp:DataList server control, and our new XPath binding support for hierarchical data structures. Close the talk with a new ASP.NET reader working off of this blog.
Note: I'm still fine-tweaking what I'm going to show (and might need to cut one or two things if time gets tight), but hopefully there will be enough interesting and otherwise hidden things above to have people leave happy. Obviously the coolest features will be the ones in the 18 dedicated talks -- but this talk should hopefully be a nice near the end of the conference talk which shows some remaining loose end features that are fun.