So last night I said "Real-World Tips for Real-World Web Applications" by Paul Sheriff and Ken Getz was the best ASP.NET session. I was also asked why in the comments and I will try to explain that in a minute. Today I went to two of Clemens Vasters sessions, "Building Distributed .NET Applications" and "Aspect-Oriented Programming", and these were also fabulous. I will even have to go out on a limb and say Clemens' "Building Distributed .NET Applications" is the best overall session for me so far. I'm not saying its better than Paul and Ken's talk for everyone, but that depends on whether you need to learn more ASP.NET or not, and I'm simply past that point. Clemons spent some time first talking about the difference between layers (logical separation) and tiers (physical separation), including some real cool pictures and a comparison to something Men In Black. He showed a demo of one of his apps that works both disconnected and connected -- can't wait to get the code for this later on his blog. Finally, there was a lot of distinctions made between the types of tiers, that being local (same machine), near (LAN), and far (everything else). Local should use Remoting and take advantage of properties, inheritance, byref, events, and be synchronous. Near should use Enterprise Services and take advantage of chunky calls, interfaces, byval, and may be synchronous. Far should use Web Services and take advantage be asynchronous message based. There were a lot more details, but I had never heard anyone say that Remoting is only best for same machine communication and once you step out into the LAN you should be using Enterprise Services. I've heard hints of this before, including some stuff from Ingo himself at DevConnections, but this was right in your face this is the way to do it conclusion. It sounded good to me, but I don't have much experience with these, so let me know your thoughts on this.
So the question was why was Paul and Ken's talk so good. First, they made it very clear this was an advanced session (only 300 level by the way) so they were not going to spend time on the basics! This was obviously not a problem with the audience, so I don't get why so many others feel this just can't be assumed as has been noted elsewhere. Next, part of the greatness was due to their style and funny exchanges as a team, but I still think it would have been the best even if it had lacked this part. They looked at a demo based on a real application they had built and simply showed some of the best and more advanced pieces of it. They showed how to use interfaces and a separate data access class to easily be database agnostic. I don't personally think they went far enough (I would claim my code is better), but this was some of the best stuff I've seen in sessions or books. They showed how to use user controls and stylesheets to get a reasonably flexible GUI that didn't have code on every page. Again, I would claim my stuff is better, but this was better than most of the other stuff out there including IBuySpy and the Starter Kits. I could hardly contain myself however when Paul was asked afterwards how come they didn't have their GUI in their base page class and he said it wasn't easily possible! It seemed a common theme that they have some great stuff but they seem to be ignorant of other options that are available in the community. By the way, they did have a base page class, which was the centerpiece of the rest of their demos, but it was strictly functional, things like tracking users, handling exceptions, and other good things. They also showed how to create a class for your config and session settings, and gave a good demo on role-based forms authentication. So while I would claim it was not as good as it could be, it was nonetheless very excellent and enjoyed by all! Now I even more want to focus on getting best practices out there, since even they were missing some.
By the way, the MVP dinner last night was great also, but in a very different way than my previous dinner. I got to meet more of my peers, that being fellow MVPs as opposed to authors and speakers, along with many in charge of the MVP program. The meal itself was also very different, being more elegant formal dining instead of huge Texas portions of meat! This was at the Abacus restaurant -- thanks to Tony Hynes and the rest of the MVP staff. First there were tiny cute appetizers, but only exactly enough for one each, which was the butt of jokes at my table. One appetizer looked like a tiny ice cream cone with a little crab and salad in it -- very good and I managed to get a second that someone else didn't want. The other appetizer was nachos, although we all agreed that one chip with stuff on top hardly deserves to be called nachos. It had guacamole on it, so I passed and let someone else have two whole nachos. The first course was supposed to be a shrimp appetizer on fried rice -- but there was only one shrimp on each plate which just seems wrong. Next came a small salad which was the typical salad. The entree was a choice between prime rib or salmon -- I got the prime rib and it was a rather decent size and very tasty, but not as good as the filet and crab the night before. Finally, I did have room for dessert, which was an acceptable macadamian nut chocolate pie. We did all end up feeling like we ate enough after all was said and done, and I'm probably better off anyhow, so it was a very nice dinner in the end. No clue what it cost, although my guess is a lot.