Blog Home  Home RSS 2.0    
Arnon Rotem-Gal-Oz's Cirrus Minor - EDA vs. Synchronous Request/Reply
Archive
 
 Tuesday, January 30, 2007

[originally published in my DDJ blog]

You may have read my BI and SOA post where I suggested using EDA within SOA to solve the BI/SOA impedance mismatch. Jack Van Hoof made the following comment on that post:

Many people think of SOA as synchronous RPC (mostly over Web Services). Others say EDA is SOA. And there are many people who say that the best of EDA and SOA is combined in SOA 2.0. Everybody will agree that there is a request-and-reply pattern and a publish-and-subscribe pattern. It is easy to see that both patterns are an inverse of each other….

I think that "Synchronous RPC" is not a very good (or useful) definition for SOA (see my series on what is SOA anyway). Nevertheless, I also think that even if all you have is synchronous request/reply you can still implement both asynchronous messaging and EDA How can we implement Asynchronous Messaging?

Option 1 Duplex Channel
Let’s say you are a service consumer. You send me your request. Instead of a reply I just acknowledge you that I got the message. I put the message into a queue and process it on my "spare" time. I then call you with the answer.

Option 2 One way Channel
Again you send the request. Instead of a reply, I give you a token or a ticket for the answer. When you think it is time, for example when the time promised in the SLA elapse (or whenever), you call me again, give me the ticket, and I look up the answer and give you your reply. If we hide all this protocol inside some software infrastructure the applications can see asynchronous messaging even though we have synchronous request/reply on the lower levels.

Okay, so what about Events? How can we publish events just using request/reply. The previous example would not work since we can miss out on important events?

If you are reading this blog -- chances are you already have the answer working on your computer -- yes, it is RSS. Think about it using an RSS Reader that pulls the server that publishes this blog you reach out using synchronous request/reply and get all the posts (events) that were added since the last time you asked.

There are a few additional architectural benefits for working this way. For one the service does not have to manage subscribers. Secondly, the consumer doesn’t have to be there the moment the event occurred to be able to consume it -- and the management and set up is easier and simpler than using queuing engines

1/30/2007 8:30:00 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [2]   Everything | SOA | Software Architecture  | 
2/8/2007 5:36:11 PM (Jerusalem Standard Time, UTC+02:00)
Arnon

I do think SOA and EDA are two different architectural styles. Combining them creates a higher level abstraction which provides the full business view an enterprise needs. while soa is more about service composition,reuse and sla - which are mostly an IT domain targets,eda is focused on the business domain by providing all the nesesary information on a business event level enabling business workers the added value thay expect.

By clearly defining a business event as the product of each business use case we can provide the stream of business events a CEP engine as well as BAM system can process.

Regards

Yoram
Yoram Kochol
2/9/2007 8:41:19 AM (Jerusalem Standard Time, UTC+02:00)
Hi Yoram,
I never did say that EDa and SOA where one and the same (see for example the previous post EDA & SOA).

I am saying that you can use EDA within SOA and that doing so enhances the SOA solution and solves some problems such as handling BI

Arnon
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Copyright © 2010 Arnon Rotem-Gal-Oz. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: