Does anyone know if there’s an RSS feed for KurzweilAI.net? I got a rare opportunity to hear him speak yesterday as part of a Microsoft event and he was amazing. (I wonder if he got more sleep than Chris Anderson did?) I’ve started on his book The Age of Spiritual Machines (which I’ve had for a year and never found time for) and I was picking through the massive amount of information on his website. But I want to keep up to date and an RSS feed is (obviously) the easiest way to do that.
My Upcoming Article
They haven’t posted the article yet, but MSDN Magazine has posted their March Issue Preview, which will feature my first article:. Site Skinning: Rich XML Classes Let Users Personalize Their Visual Experience on Your ASP.NET Site. It’s about using a custom IHttpHander to build a Transform View for an ASP.NET website. Needless to say I’m pretty excited. I’ll be posting additional content related to the code here on this site (hence the recent facelift to the site – sitelift?) after the article ships. I’ve been delivering the content at .NET user group meetings up and down the west coast (most recently the MSDN chapter Phoenix) to good reviews, so I have high hopes for the article.
Now I just have to finish writing the second half – using CodeDOM to actually compile the pages just like ASP.NET WebForms do. It’s amazing how much easier writing the code is than the article that describes the code.
News Aggregation
I’ve been using FeedReader for aggregating news feeds, but I just downloaded and configured Syndirella. I think I’m going to switch permanently since Syndirella handles some of the 2.0 RSS feeds that FeedReader can’t. (I want to try News Gator, but I’m not running a compatible version of Outlook). Additionally, Syndirella is a .NET app, which I like even if it has little bearing on the apps’ functionallity.
Tracking Referrers
So now I’ve started tracking referrers. I’m using the referrer server variable, and running into canonicalization issues. For example, as I write this entry, there are 8 referrals from ASP.NET Weblog. But it shows up on my list as 3 separate referrers since I’m not sure how to canonicalize the URL. For example, Radio users mostly come from the Radio.Weblogs.com server, so for those users, the specific virtual folder is important. But for other sites, like aspnetweblog.com, it’s not. Anyone have a good suggestion?
WSDL soapAction Issues
Why does WSDL expressly forbid the use of the soapAction attribute with protocols other than HTTP? How else are you supposed to map incoming messages across non-HTTP protocols to SOAP endpoints? WS-Routing provides a simple mechanism for including action information inside any SOAP message – in the message rather than some out-of-band mechanism like HTTP headers.
The “action” element is used to indicate the intent of the WS-Routing message in a manner similar to the SOAPAction HTTP header field defined for SOAP (see [15], section 6.1.1). The value is a URI identifying the intent. Similar to the SOAPAction header field, WS-Routing places no restrictions on the format or specificity of the URI or requires that it can be dereferenced. There is no mechanism for computing the value based on the message and there is no default value. [WS-Routing spec, section 5.1.1]
WSDL provides a soap binding operation element that maps the HTTP soapAction header to a specific operation, providing a simple way to route an incoming method to a SOAP endpoint. However, WSDL expressly forbids specifying the soapAction attribute when you’re not using HTTP!
The soapAction attribute specifies the value of the SOAPAction header for this operation. This URI value should be used directly as the value for the SOAPAction header; no attempt should be made to make a relative URI value absolute when making the request. For the HTTP protocol binding of SOAP, this is value required (it has no default value). For other SOAP protocol bindings, it MUST NOT be specified, and the soap:operation element MAY be omitted. [WSDL 1.1 spec, section 3.4]
Argh! I see three possible ways of resolving this:
- Ignore WSDL spec and use soapAction anyway.
- Use a body root element QName / WS-Routing action naming scheme to map message to SOAP endpoint based on message and operation names.
- Include the equivalent of soapAction in a routing oriented WSDL extension as a child of wsdl:operation (i.e. duplicate soap:operation@soapAction w/o the only HTTP limitation)
Additionally, you might be able to use WS-Policy to specify this. The question is: Which is the best? Go against the spec, use an opaque name mapping scheme, or extend the spec? And if you’re going to extend the spec, which is better to extend? WSDL or WS-Policy?