Mike Gunderloy’s Daily Grind is a great source of information. In today’s grind Mike points to the unveiling of Microsoft Expression, both the official press release and the “readable” version from Somasegar’s blog entry.
Here is a one paragraph excerpt from the press release.
Rudder stressed that the new tools portfolio, paired with the Windows Presentation Foundation, a powerful platform-level presentation and display engine, will help drive down the cost and effort associated with building richer, more compelling and exciting applications with unique differentiated capabilities.
Yes, that’s one paragraph – one period, four commas, and the mind numbing phrase (“unique differentiated capabilities”). I have no idea what this paragraph is supposed to mean to me, but I get the feeling Eric Rudder is stressed, and I’ll never get a job writing press releases.
If you’ve spent time with VS 2005, you’ve probably met the Exception Assistant.
Reading the tips for a common exception is a bit like calling the cable company when your broadband connection is down.
“Sir, is the cable connected to the modem? Are there any green lights blinky-blinking?
Ok, sir.
Sir, I’m going to need you to power down your computer, your modem, your cell phone, and your microwave oven…. "
The “View detail” link is useful, as it lets you drill into all the properties of an exception.
The tips appear to be extensible. You can drop an XML file into the correct ExceptionAssistantContent directory (under Visual Studio 8\Common7\IDE) to provide helpful troubleshooting tips for your own exception types…
… or you can repurpose the existing DefaultContent.xml file to torture your co-workers…
I’ve been catching up on all the news from the PDC today (I’m not there). It’s a bit of a shame all of this news has to stay bottled up and released all on one day, but I suppose it does make for an exciting event.
I’m stuck with real work for awhile, and won’t be able to jump into the excitement just yet. The following graph illustrates my backlog for technology research.
Here are some highlights of stuff to revisit some day.
Language integrated query, set, and transform operations (LINQ) are the kind of features you expect to see in a “fringe” language before reaching widespread acceptance, yet they appear to be headed for mainstream C# and VB.NET. Matt Warren has a nifty code sample posted, and Frans Brouma has an early reality check.
ASP.NET fans get their first look at Atlas today. ScottGu has a post “Atlas Unleashed” which describes some details and the development model for Atlas. It looks as if Microsoft will provide a JavaScript library to make the client side a bit easier, although I see a great deal of “getElementByID” calls in the samples, which isn’t the type of easy I wish for. Hopefully the team will keep blogging and getting information out, as some people seemed to feel they were mugged in a dark alley with the beta 2 release of ASP.NET 2.0.
Office 12 (screenshots here) will release with Vista. These two need to dance together better than the pairing of SQL Server and the CLR in terms of scheduling and binary dependencies. I’m a minimalist when it comes to the tools I use everyday, so toolbars with big icons have me immediately looking for the options menu. I’m more interested to hear about improvements in the areas I use everyday. Will Word let me post to a blog? Will Word do code formatting?
Microsoft gadgets bring Konfabulator type widgets to Vista. Some of the widgets are scary cool, like the ones that can run on the lid of a laptop.
Now back to the mundane…
Rick Strahl has a fantastic post: “Understanding Page Inheritance In ASP.NET 2.0”. Go read the post now.
Here are some ideas I thought of while reading.
The @ Reference, @ MasterType and @ PreviousPage directives are the only reliable mechanisms for referencing a type defined in another page (or user control, or master page) from inside a web form.
In Rick’s case he wanted to create a new web form (UploadItemPictureEx) derived from UploadItemPicture, where UploadItemPicture is defined as a Page derived class in the CodeFile for a second web form. In the new compilation model UploadItemPicture isn’t visible from the code inside the UploadItemPictureEx web form. This behavior is dramatically different from 1.1, as Rick clearly explains.
One solution is to define a base class for both web forms and stick the class in App_Code or a class library. Another solution is to use @ Reference, e.g:
]]>
If you place the above in UploadItemPictureEx.aspx, you’ll be able to use the UploadItemPicture type inside the CodeFile without any hassle.
The @ MasterType directive is useful when you want a strongly typed Master property for your page. I described @ MasterType in a previous post.
Likewise, the @ PreviousPage directive is useful during Server.Transfer and cross page postbacks. The runtime will give you a strongly typed PreviousPage property. I have some example of using @ PreviousPage in this article.
If you are dynamically loading user controls with LoadControl and don’t know which control you need to @ Register or @ Reference, I don’t see any choice but to define a base class for the control and keep the class in App_Code or in a class library referenced by the web project.
Every so often I go looking for a public web service to do a job and end up at a UDDI Registry, like the one run by Microsoft. UDDI (Universal Description, Discovery, and Integration) came with the promise of providing searchable metadata to make web services easy to find and use from client software. A UDDI registry is a place where business and individuals can publish their metadata and become “discoverable”.
All the registries I find are terrible.
The registries contain out of date information, have confusing interfaces and categorizations, but worst of all they are not comprehensive. I have not found a registry yet that lists any of the latest and greatest web services for maps, photos, or blogs. Perhaps no one with a public web service cares about UDDI anymore, as UDDI always seemed destined for large, heterogeneous corporations to use inside the firewall.
I have, however, found two nice repositories for open web service APIs, thanks to Alex Barn’s blog:
Following a software design pattern is good. Falling into a software anti-pattern is bad.
The “master” in “master page” can be misleading. The term suggests the master page is somehow in control of everything happening during the lifecycle of a request. What actually happens is that the master page injects itself into the Controls collection of a web form and becomes a child control, (see figure 7 of Fritz Onion’s article on the topic). The master becomes the child.
Because the master page sounds like it commands all that happens under it’s domain, there is a tendency to lean towards a God object anti-pattern design. In other words, the master page class knows too much, and does too much. If you see a web form calling into a master page method to open a database connection or authenticate a user, then you are witnessing the master page anti-pattern in full glory.
Master pages are for UI layout, nothing more.