I think it’s pretty safe to say that most web applications fall into one of two categories.
I also think it is pretty safe to say that they are easy to build. However, things can get a little dicey when it comes time to integrate services. The fact is that we are implementing reusable functionality as services and that means that our web applications must now include service clients.
That means we are now responsible for maintaining the client and the UI.
Here is a thought. How about we allow the services to generate their own forms and allow the users to interact with them directly? I do not want to continue playing the middle man.
I think I’ve finally figured out what bothers me about SOA.
It is responsible for the notion of composition via remoting.
The problem I have with web services is that they are just another method of remoting, and remoting requires messaging. The fact that you are using web services does NOT mean that you have built a distributed system. As a matter of fact, you haven’t. Especially since web services rely on synchronous point-to-point communication. It means that you have mistakenly used remoting as a means of composition.
I don’t have a problem with messaging. I’m down with message queues.
I don’t have a problem with remoting. It is useful for integration.
I have a problem with using remoting as a means of composition.
Can we all agree that remoting (web services) should only be used as a method of integration with non-Java and/or remote clients?
I’ve actually seen organizations where every new feature is implemented as a web service written in Java to be consumed by one or more Java applications. There were no non-Java clients and there were no remote clients. How can any architect justify this?
I’m down with composition & reuse, loose coupling, and other principals often associated with SOA. However, they are best achieved by deploying services as OSGi bundles alongside their clients.
If you need to integrate with non-Java and/or remote clients then simply expose those bundles as web services, but allow the Java applications to run their bundles locally.
So until next time, good fight, good night.
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Oct | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | |||