Just finished reading the excellent new whitepaper from Aaron Skonnard (hat tip: Jesus) entitled Windows Communication Foundation Adapters in Microsoft BizTalk Server 2006 R2. Very well written and it provides an exceptionally useful dissection of the BizTalk 2006 R2 usage of WCF. Can’t recommend it enough.
That said, I still have yet to entirely “jump into the pool” on WCF yet. It’s like a delicious, plump steak (WCF) when all I’m really want is a hamburger (SOAP Basic Profile). My shop is very SOAP-over-HTTP focused for services, so the choice of channel bindings is a non-starter for me. Security for us is handled by SOA Software, so I really don’t need an elaborate services security scheme. I like the transaction and reliability support, so that may be where the lightbulb really goes on for me. I probably need to look harder for overall use cases inside my company, but for me, that’s often an indicator that I have a solution with no problem. Or, that I’m a narrow-minded idiot who has to consider more options when architecting a solution. Of course with the direction that BizTalk is heading, and all this Oslo stuff, I understand perfectly that WCF needs to be a beefy part of my repetoire moving forward.
In the spirit of discussing services, I also just finished the book RESTful Web Services and found it an extremely useful, and well-written, explanation of RESTful design and Resource Oriented Architecture. The authors provided a detailed description of how to identify and effectively expose resources, while still getting their digs at “Big Web Services” and the challenges with WSDL and SOAP. As others have stated, it seems to me that a RESTful design works great with CRUD operations on defined resources, but within enterprise applications (which aren’t discussed AT ALL in this book), I like having a strong contract, implementation flexibility (on hazier or aggregate resources) and access to WS* aspects when I need them. For me, the book did a bit of disservice only focusing on Amazon S3 and Flickr (and like services) without identifying how this sort of design holds up for the many enterprise applications that developers build web services integration for. On a day to day basis, aren’t significantly more developers building services to integrate with SAP/Oracle/custom app then the internet-facing services used as the examples in the book?
All of this is fairly irrelevant to me since WCF has pleasant support for both URI-based services (through UriTemplate) and RPC-style services and developers can simply choose the right design for each situation. Having a readable URI is smart whether you’re doing RFC-style SOAP calls using only HTTP POST, or doing the academically friendly RESTful manner. The REST vs. WS* debate reminds me of a statement by my co-worker a few weeks back (and probably lifted from elsewhere): “The reason that debates in academia are so intense is because the stakes are so small.” Does it really matter which service design style your developers go with, assuming they are built well? Seems like a lot of digital ink has been spent on a topic that shouldn’t cause anyone to lose sleep.
Speaking of losing sleep, it’s time for me to change and feed my new boy. As you were.
Technorati Tags: BizTalk
So why not build new services in WCF using the basic HTTP profile so it’s web services compatible? Then you’d have fast and easy flexibility to extend that to other bindings/protocols/etc later on if you decide to without having to rewrite the service.
Do they seem that much more difficult to develop? I’ve only just started with WCF, and there seems to be a slight learning curve over your basic ASMX web service, but it doesn’t seem too terrible.
That, and with the direction Microsoft seems to be taking with, well, everything (especially BizTalk!), it feels like it won’t be too long before your simple SOAP “hamburgers” are being called legacy along with mainframes. 😉
Hey Chris, to your points, I spent of bit of time “getting to know” WCF a bit better again (https://seroter.wordpress.com/2007/11/07/adventures-with-wcf-and-biztalk/). We’re currently dating and considering moving in together.
Caution: WCF-Basic HTTP Keep-Alive is hard coded to “true” and cannot be modified…use the custom wcf adapter if you need to modify this setting.
….my pain is your gain.
Thanks Will. Hadn’t noticed that you COULD set this value in the custom one.