WSE is great, not only does it add a number of great features to Web Services stack in .NET, it is really fun to say. Go on - try it now - “whizzy”. Say it a few times for added effect. It ranks right alongside WSDL and XAML as some of my most fun acronyms to “say”. I’ve been working my way through the WSE 2 hands on labs from this year’s Tech-Ed U.S. Although the security enhancements that WSE brings to the web services table are what people probably know it best for, I think the messaging stuff is really, really cool. If you thought web services where all about request-response and [WebMethod] then think again. If this is any indication of what to expect from Indigo then I can’t wait.
Update: Simon Horrell from Developmentor has an interesting article on Messaging in WSE 2 on MSDN
Dominic has flexed his parser-generating mental muscles to write an XPath syntax hilighter in a disturbingly short period of time. My syntax hilighting experiments had fallen over in the area of white space retention. During the last week I saw how flawed my approach was - the xpath parser in ROTOR/System.Xml.XPath returns an abstract syntax tree (AST). Internally it uses a lexer which stores the “type” of the current lex. The default lexer implementation throws out whitespace, but when you’re doing syntax hilighting you want to keep that, so you don’t end up changing the text entered by the user. I had modified the lexer to keep any white space for the current lex, and had modified the AST node root object to include a whitespace property. Then I was trying to modify the parser so that when it built an AST node it also set the whitespace property. That sounds easy, but the parser is moderately complicated and I was having a hard time making sure each time the lexer performed it’s next lex that the whitespace was correctly assigned. Instead by changing the lexer a bit more I could ignore the whole AST tree altogether and just focus on the text that the lexer was processing and the “type” of the current lex. This approach - while not perfect - will probably be a lot simpler than what I was trying to do - “reverse engineer” the text from the AST. Hopefully I can drag myself away from WSE and SQL Server 2005 fun in order to complete my syntax hilighter.