It's about 15 minutes before the buses start to roll out to Universal Studios where probably everyone is going to be. Microsoft has rented out the entire park for the evening along with all the food places so it's going to be a movie smorgasborg tonight.
Today was SharePoint day at PDC as Microsoft pulled back the covers (or opened the Kimono as Fitz puts it) and opened the fire hose to SharePoint V3. I found the time to sit in on two sessions on configuration and customization and the new additions to the object model, deployment changes, and other good stuff so this is going to be a long (and hopefully informative) post about that (actually took me about 1 1/2 hours to put together from all my crappy notes and memory). More descriptive and more my thoughts rather than bullet points that you've seen around so far. I'm sure my other fellow SharePointers will have more to follow and I hope it's useful to you.
First there's some pretty nice stuff happening under the scenes with V3. There's a nice audit model built-in so things like the number of views of a document are tracked but you don't need to iterate through each document to find it. Makes for a nice simple Web Part that you can build to display based on views (think number of views on a Flickr photo and you get the idea).
For the geeks in us that like to see what the kimono is made of, there's a schwack of great stuff happening in the Object Model. The big thing is the flip from SharePoint intercepting HTTP calls and passing them onto ASP.NET (or rendering ASPX pages with it's own custom parser) to doing a 180 where ASP.NET handles the call (no more ISAPI filter) and then proxies to SharePoint if it needs to. A much better Architecture that will not only expose all (yes, all) of ASP.NET 2.0's capabilties but also play much nicer with ASP.NET apps. The other big thing in the code space is the compatibility with ASP.NET's Web Part Framework and really leveraging the ASP.NET model.
Generally ASP.NET 2.0 Web Parts will work in SharePoint V3 (you can "kind" of get this with ASP.NET 2.0 and WSS SP2, but check out SmartPart 1.1 and Son of SmartPart for a better setup). There are some small things that don't work and limitations. For example you can't use ASP.NET 2.0 Web Part Pages as-is in SharePoint, you have to use the SharePoint implementation. You also can't use ASCX controls natively like you can in an ASP.NET 2.0 page but again, turn to SmartPart for this. What you can do is write a small ASP.NET 2.0 wrapper for now, but Microsoft will be providing this later in the cycle. The thing to remember here (as a result of PDC) is that this is all for WSS only! Remember that and don't ask when SPS will have these things available to it as there are many other products and services in the Office 12 eco-system that will be coming in the next months leading to the betas and release next year.
So in a nutshell, if you're building for tommorow today, do it with the ASP.NET Web Part model and make calls to SharePoint specific classes to retrieve information, update lists, etc. You can use the SharePoint Web Part base class if you need it and there may be times you want to (e.g. web part caching is only in the SharePoint classes) but use it liberally as the long term is a single Web Part model.
As for forms, the form templates are now in XML and you can replace the base ones on a web basis or per list (as well as other options). Have you ever wanted to modify the New.aspx page for a list but just saw gobbly-gook in FrontPage? Now you can 100% customize the form using a simple XML file. Do some branding, do some rearranging of fields, introduce new fields and controls, whatever. You still need to use CAML for views so don't go throwing away those skills just yet, but that's okay for all the other goodies we're getting.
More stuff. Master Pages. They're big time present in WSS and that, combined with some very cool Master Page Tokens will make it a breeze to totally customize the look and feel of your sites. This is much more than just themes or even custom CSS. Another thing (and I can't remember if this is 100% correct) is that the Master Pages are applied to all pages, not just default.aspx. So the current issue of branding a WSS site and having some pages not take form (except for colours) to your changes is gone. There's a Master Page Gallery (just another doclib) that holds the master page file and you can apply a master page across the web, a site or an entire farm (which is pretty much the same for more of the changes with V3).
On the customization and deployment front, V3 will have less XML and less duplication. It's now easier to change things in the system via the Features and apply it. Again you can apply it to a web, site, web application (think Virtual Server) or an entire farm. Most of the extra stuff that you always had to copy and use (even though you couldn't touch it like base types) is now in what's called a Global Template. Your customization comes in the way of Features. This is very much like features that you get in an MSI where you can choose items to include or exclude. There's also hooks in the OM for handling features so you can do custom code whenever a feature in installed, activated, uninstalled, and deactivated (like extra SQL work, go off to a legacy system, email notifications, tracking, etc.). It's basically the Add/Remove Programs for SharePoint and as a developer, you can create dependancies on your Features so (for example) one feature depends on another before it can be used. This will help avoid putting end users into unsupported or weird configurations.
Another great new feature is the timer job subsystem. This allows you to hook into a continuous running process on the SharePoint server. You specify what gets called and when, how often, etc. so things that are currently built as separate console apps or services can be just another assembly on your server that can be turned on and off (even from within a Web Part say to turn archiving on and off).
More goodness, in a word, XSD. Yup, a fully qualified XSD file for all the configuration files so editing them inside of Visual Studio 2005 will do validation and intellisense on the tags including allowed values and other stuff to prevent you from shooting yourself in the head when editing config files. Okay, so we still have XML based config files but at least there's less of them and they're validated now.
As for customization you can hook into any part of the UI which is similar to what we have today (like adding options to the Modify Shared Page menu) but this goes beyond that and lets you build you own toolbar items, menus, and even hooks into the new Welcome menu which allows you to sign in/out, change the current user, etc. All of these can be security filtered as well.
For hard core coding, there's some new classes like SPGridView which is basically a DataGrid but has a bunch of SharePoint-like look and feel to it as well as features to handle sorting and filtering, ala SharePoint style. So if you have custom classes that do this for you now (like I do) you can throw that code away and just instantiate a SPGridView and Bob's your uncle. There's more goodies like the SPBoundColumn class that you add to a SPGridView and lets you bind to a SharePoint list or library column.
Another much needed class is the SPDataQuery. This is a class that will do cross site queries with a little CAML (set as properties). Basically create an instance of it, set the properties (list type to search, scope, keywords to search) and fire it off to get back a result (or bind it directly to a SPGridView). Sweet.
If you look around the SharePoint space, there are a lot of navigation components. SharePoint V3 has these now baked in including breadcrumb trail stuff and a new Navigation Node object that you can get and traverse tree views of the entire site. This also has security filtering so if you don't have access to a feature, it's not available to you. Yes, in V3 we finally get links filtered based on your security or role.
Still another beautiful thing (that got some applause in the audience) is the SPDataSource which is a SharePoint class exposed as an IDataSource. Yup, just hook it up to anything you want now and treat a SharePoint list as any data source which will make SharePoint reporting a snap.
There's a small SharePoint/CMS MVP group growing at PDC. Today I met with Jans Tielens and Patrick Tisseghem. Interesting how people are different in person. Jans is taller than I imagined, Patrick younger and Angus Logan... well, Angus is just plain Angus (complete with his Porn room at The Standard). Good times and I'm sure you'll see more interesting blogs from them on the sessions they attended and thoughts that they have about things (Angus has been doing a series of one-line blog posts everytime he hears something new, we'll talk to that boy).
That about covers it and I do apologize if there's some errors or omissions I made here. Like I said up front, the fire hose has been turned on and trying to go through what I have access to and what was presented, I might be wrong here and there in details so my apologies for that. If you're unsure about something or want more details, just yell and I'll see what I can do. Off to be a movie geek now!
P.S. My heart almost stopped today as I saw Fitz blogging. Again. That's twice in two days, a record for him. Now that the gag is lifted, he's got a LOT of catching up as do we all. Watch for more to come.
Tags and Links
Google Maps where I'm staying (Miyako)