September 12, 2006
Smart clients and services - take 2
In my recent post on "Smart clients and services", I left one topic open on client-service interaction.
Just to recap: there are 3 main scenarios for client-service interaction when the service is an Autonomous Service.
1. The client consists primarily of maintenance screens. The client is really part of the service that it's communicating with - there's no need for pub/sub within a service. Therefore, conventional client-server computing can still hold here.
2. There is some business level functionality left in the client after taking out all the maintenance screens and splitting them among the services. Chances are that there are that the business functionality left belongs in its own service. Create a new service and fold the client into it using conventional communications.
3. The smart client / user combo are, in essence, a service. Let's delve into this one some more, since it's the most interesting/complex.
At the "business" level, this scenario occurs where several, often physically disparate, users cooperate (maybe even in real-time) on a task. Each user being in charge of some part of the task, but all users are using the same smart client. Command & Control systems see this kind of behavior quite often - different units coordinating amongst themselves in achieving a certain goal.
Technically, we can view this either as multiple instances of the same services communicating in a peer-to-peer fashion. In which case, we're talking about intra-service communication. However, each smart client, in this case, doesn't view the information coming from its peers any different than that coming from the outside world. Since each client is indeed autonomous, making its own decisions based on its own data, at whatever times it sees fit, this scenario fits the SOA model quite well.
You could also look at the robot world cup in a similar way. Each robot on the soccer (football) team has a position which dictates the way that it will respond to certain events occurring. The same software is installed on all robots, yet it is designed in such a way to enable real-time distributed collaboration in achieving a common goal - by each client working on its own local goals. Each position is an autonomous service.
Like I said, this probably isn't a very common scenario in the Enterprise, but still, you never know when it might come in handy.
Posted by Udi Dahan at 05:09 PM Permalink
|