Monday, July 30, 2007

Orcas Beta2 : the good!

I've spent a number of the last posts mostly griping about what's broken in Orcas Beta2. I figured I'd change the tone a bit and talk about some of the new goodies that I like!

- WebHttpBinding - This thing is going to rock hard when the bugs get squeezed out. To be fair, it hasn't had nearly the soak time of the other WCF bindings, either. In general, I'm really impressed with the combination of WCF + WebHttpBinding for POX and REST-style messaging. I love using the same service implementation to handle server-to-server and client-server communication, without having to compromise performance or code to a "least common denominator". Well, I'm almost there- I still end up building AJAX-friendly versions of most of my service contracts, at least the ones that accept HTTP GET. I don't think serializing a DataContract instance as JSON on the query string was what the REST-afarians had in mind, and I'm in the "explicit MessageContract" minority, so I don't have much choice.

- New IDE goodies, refactors, cleanups

  • "Organize Using"- nicely handles one of my little pet peeves: sloppy/dead "using" statements. I see this as a long-needed tool for cleaning up after the oh-so-useful-but-mess-making "Resolve Using" command.
  • Multi-targeting- so I can be sure at compile-time that I haven't inadvertently introduced 3.5 dependencies in our 2.0/3.0 only projects
  • Intellisense improvements- Ctrl-for-transparency, showing both member docs and intellisense at once, Javascript intellisense(!)

- Extension methods. This one's gonna be tough not to abuse, but lemme tell you: hanging .HasContent() on every string, null or not (wrapper over ! String.IsNullOrEmpty()) is one really nice bit o' syntactic sugar...

- LINQ- I'm in love. LINQ to SQL is coming along nicely on the march to RTM, and does just about everything I need right now. Sad to see DataShape get hidden back away under the LINQ to SQL umbrella as DataLoadOptions in B2 (could be useful for other stuff, which I'm sure was the initial intent before it was locked down to SQL Server only), but oh well. LINQ to Objects is another one that'll be tough not to abuse- I already have a couple of places where we're joining LINQ to SQL and LINQ to Objects-based queries together to present a unified log and history view across multiple service tiers. I'm excited to see where LINQ takes us in the next few years- both in MS-built query providers and third party stuff. I really hope to see LINQ-enabled providers over WMI and LDAP from Microsoft soon. The lack of the latter (and yes, I'm aware of Bart DeSmet's work in this area, but it's not ready for prime-time) was the final nail in the coffin for ADAM on our project. Implementing our user store from scratch in SQL Server was much more palatable since LINQ to SQL removed enough of the impedance mismatch- it was just going to be too much double-definition and code->directory sync with ADAM- we're in a bit of a hurry. If I had a lot more time on my hands, I'd jump in and pick up the ball on LINQ to LDAP- I think it's a very interesting project, and Bart's got a great start on it.

Anyway, so far, so good- I haven't hit any issues I wasn't able to work around, which is good- we're planning on going live (or at least beta) with the Orcas Beta2 bits.

1 comment:

Anonymous said...

Matt,

Thanks a lot for your feedback! We're looking into the issues you mentioned wrt the web programming model and will get back to you.

Thanks
Vish