Does SOA mean the end of OO?

Just to share some notes I took from Udi Dahan's excellent podcast - Does SOA mean the end of OO?

 

Why did we need SOA in the first place? And what are we using OO for?

Both of them are attacking the problem of software development – OO from bottom up and SOA from top down.

 

Let’s start looking at OO design of a given application.

 

OO was started in the single process era – a single process in a single application on a single thread on a single machine.

 

If you are building a single app, SOA probably is not going to solve any problems that OO does not cover.

 

Presently, in a typical application, we have numerous processes on numerous machines on numerous datacenters.

 

25 years ago, when the idea of distributed objects came, it didn’t do wonders. OO failed to bring the advantages it gave to single process, single applications to distributed applications. So we lurched from OO.

 

SOA came in this scenario advocating services. The interactions between objects are different from that of services. The interactions between objects are often chatty, in process, we except each call to occur blindingly fast. Whereas, when we are calling inter process or inter machine, we have to acknowledge the fact that there is network latency and that we don’t necessarily know what the distance is between those two computers that are talking. So we can’t take  the same object oriented semantics and make services behave the same way, or we will get the same problem that we had with distributed objects.

 

So that’s really when SOA came in and said that what you have are services. Service is something that is quite a bit larger than an object. Services will probably contain numerous objects within itself, managing its own state, whether in memory or in a database. Being hosted separately and being run on a separate machine.

 

Facts that SOA brings to the table is that distributing is a primary concern and it totally affects the way services interact together.

 

Services interact differently than objects, services will be built probably out of objects in a OO language.

 

So does SOA mean the end of OO? Absolutely not!

 

It solves a different problem, not only different problem, it solves a problem that was previously solved very poorly by OO. It came to fill a void. And that is really the coexistence between services and objects. The fact that SOA is the future doesn’t mean that anything in the past is no good anymore.

 

Published Mon, Jun 12 2006 13:26 by Rohan Thomas

Leave a Comment

(required) 
(required) 
(optional)
(required)