I was onsite with a customer the other day discussing the architecture of one of their future applications. I was only there for the day, so we obviously couldn't go into too much depth. They just wanted a sanity check to make sure they weren't going in the wrong direction at a high level. One of the interesting things about their design is it accounted for some grid computing principles.
Behind the service facade, they incorporate a series of message handlers that are invoked based on the wsa:Action (yes, they're using the WSE messaging API behind the curtain). They have conciously created a separation between the operations and the service interface (I'll explain what I mean). In most Web service implementations, the operations being exposed are related in an interface definition (the portType) and then the binding details (transport, payload protocol, etc) are applied to the portType. Theirs is not your typical Web service. While it is exposed over the internet, they aren't publishing the WSDL, since it is only consumed by their client app.
They don't have an immediate need, but they're preparing themselves for a scenario where different operations of the service can be installed on different nodes on the network and some intelligent dispatcher can send requests to the appropriate place. For example operations 1-5 are on machine A, operations 6-10 are on machine B, etc. and this setup can be modified at runtime. That's where I got the term dynamic portTypes.
I haven't done a lot of research on grid computing, and these architectural decisions they've made, but I'm not sure I'm a fan of this approach. Some would argue that any sepation of operations in a service (physical or logical) would constitute a new service. I think a more simplistic approach would be to use the more typical static portType approach and just load balance all of the services - same service on all the servers.
I know I didn't go into a lot of detail about their solution (because I don't have a lot of details), but am I missing other advantages to this approach? Has anyone else heard of scenarios like this? I thought it was pretty interesting, but I haven't seen anything about it that is compelling enough to recommend it to others. Thoughts?