Take the 2-minute tour ×

I frequently encounter a situation where I need to write a program which reads data-objects from a file or system, does a transformation on the data, convert the data to another datamodel and then push the data in another file, or system. Do you know of a object-model which facilitates these type of programs in such a way that it is pluggable and scalable?

share|improve this question
It sounds like you are talking about a pipe and filter architecture? –  Macneil Nov 27 '10 at 18:36

3 Answers 3

here's a link to an article on an alleged Extract/Transform/Load (ETL) design pattern but it sounds like what you want is a framework

share|improve this answer
Thanks for the link, but I'm more looking for a GoF like design pattern, inlcuding Objects, relations etc. –  Edward Smit Nov 27 '10 at 15:21
@Edward: if you find one be sure to edit your question and publish it; ETL is not a GoF design pattern. There are ETL frameworks however. good luck! –  Steven A. Lowe Nov 27 '10 at 15:23

Read Enterprise Application Integration Patterns.

There is a website related to it here that contains a wealth of inter-application processing design patterns for you to browse. In particular, I'd draw your attention to these patterns:

Messaging How can I integrate multiple applications so that they work together and can exchange information?

Message Channel How does one application communicate with another using messaging?


I've got a copy of the book myself and it's packed with detail about inter-application and inter-system design patterns.

share|improve this answer
Thanks Gary, I have the book myself :) I do appreciate this book for SOA based design, but I'm looking for a little bit more lowlevel, and need a detailed Object-design. –  Edward Smit Nov 28 '10 at 8:18

Consider Gstreamer.

Though it is mainly for multimedia domain, and i don't know what is yours; however, here is what you can gain from the overall architecture -

  1. Any kind of data is processed by various elements arranged in a sequence called pipeline

  2. Data exchange between elements is done at interface called pad which are on sides of both the elements. The mechanism is either PUSH based or PULL based.

  3. elements are inherited from variety of capabilities which cab be plugged arbitrarily. They can negotiate (in run time) the common denominator for all.

  4. Application can give command to individual or all elements through a message bus and properties

There are many more stuff - i am not trying the exhaustive about what gstreamer does but only suggesting that this could be directly useful to you or at least can inspire you a lot.

Some people believe that gstreamer is derived out of DirectX. That may be true or false but doesn't bother me. I am not comparing.

share|improve this answer

Your Answer


