One of my responsibilities as Principal Consultant in IONA Technologies is developing training material for our Web Services offerings - some time ago we realised that the best people to write training material are people who are using the products day-in, day-out on customer sites on real customer projects. Given my previous existance as a lecturer in National University of Ireland, Maynooth I was keen to lend my efforts to our training program.
So - what should a basic web services training course contain? When I started contributing to our Celtix, Artix and Axis developer-training material I took a really pragmatic approach: what does a developer need to know to be effective after a 3 or 4 day course? Here's some guiding principles I came up with - if you're teaching yourself web services, or even writing your own training material, then you might use these principals to focus your activities.
- Understand WSDL and XSD. You can't design web services without an understanding of WSDL and XML Schema. Believe me, I've tried; even when you adopt a "code-first" approach you end up getting dogged down if you don't understand the fundamentals. Any web services course worth its salt should teach XML schema, show to use WSDL for RPC (both in RPC style and Wrapped-doc-literal), and show how to use WSDL for document-style message.
- Start Simple. There's nothing like "Hello, World!" to demonstrate the absolute bare minimum of a web services application: how to write a client, create a proxy to a service, invoke, recieve on the far end, and implement back-end code. I'm a big fan of getting the "bread-and-butter" right; if I know that students understand "Hello, World!" then we can move swiftly on to the more advanced material that's so much more rewarding.
- Build a Real Service. While there is nothing quite like "Hello, World" to get the basics right, students need to build something more complex to flex their new web services muscles. In my training courses I build a web service for receiving a sufficiently complex data structure (an Invoice). I find it pushes understanding of both XML and the mappings to the designated programming language.
- Teach Best Practise from the Start. This may sound obvious, but so often I've come across software exercises, code samples and WSDL/XSD contracts that make me cringe. If you're going to give an example, then give a good example, and make sure if conforms to accepted best practise. If, on the first formal introduction to a subject, students are submitted to sloppy work, they may inject this sloppiness into their own work. Remember, they may not know any better, but you as an instructor should.
- Teach the Development Environment. At some point students will go back to their day jobs and build and implement their own services. If they're going to do this then they've got to fully understand the development environment; this includes environment variables, third-party tooling, kit installation, and build/make systems. Don't try to to hide these details by providing a sandbox environment where everying has been set up under the covers: engage your students in setting up and configuring their own environment correctly.
- Teach Students to Help Themselves. There's only so much you can cover in a course; eventually students are going to encounter some problem after the course and will get stuck. It's important to teach techniques to get them unstuck, for example, how to configure and turn up logging, or view messages on the wire. And on that point, when it comes to configuration, make sure they know the fundamentals of configuring the web services toolkit, and then where to go for more information. The last thing any student wants is a lengthy, yawning, shopping list of configuration variables - leave that to documentation.
- Teach Security. I like to think that any service worth its salt needs some element of security, even if just at the level of secure transport, like HTTPS, and simple username/password authentication schemes via HTTP Basic Authentication or Web Services Security Extensions (WSSE). Implementing a service with a straightforward username-password authentication scheme is fun, and it can spark off discussion about more complex security considerations.
We've put these principals to the test in our Artix and Celtix and Web Services Bootcamp standard material, and our student feedback has been terrific. When students get this fundamental material, they're ready to devour more advanced web services topics, like reliable messaging, transactions, routing, replication and session-managment strategies. Most importantly, though, with the basics in place, they're ready to get to work designing, building and deploying web services.

Comments (1)
Was lookin' for this... I might even
have to throw down a bookmark.
Nickster
_____________________________
Buy Iphone
Posted by Shonryarbinny | October 21, 2007 11:16 AM
Posted on October 21, 2007 11:16