Batching: A Design Pattern for Efficient and Flexible Client/Server Interaction

  • Francisco J. Ballesteros
  • Fabio Kon
  • Marta Patiño
  • Ricardo Jiménez
  • Sergio Arévalo
  • Roy H. Campbell
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5770)


The Batching design pattern consists of a common piece of design and implementation that is shared by a wide variety of well-known techniques in Computing such as gather/scatter for input/output, code downloading for system extension, message batching, mobile agents, and deferred calls for disconnected operation.

All techniques mentioned above are designed for applications running across multiple domains (e.g., multiple processes or multiple nodes in a network). In these techniques, multiple operations are bundled together and then sent to a different domain, where they are executed. In some cases, the objective is to reduce the number of domain-crossings. In other cases, it is to enable dynamic server extension.

In this article, we present the Batching pattern, discuss the circumstances in which the pattern should and should not be used, and identify eight classes of existing techniques that instantiate it.


Virtual Machine Design Pattern Mobile Agent Server Side Client Request 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Abe02]
    Aberdeen Group: Flash Remoting MX: A Responsive Client-Server Architecture for the Web. Technical report, Macromedia White paper (December 2002)Google Scholar
  2. [BHG87]
    Bernstein, P.A., Hadzilacos, V., Goodman, N.: Concurrency Control and Recovery in Database Systems. Addison-Wesley, Reading (1987)Google Scholar
  3. [BHK+99]
    Ballesteros, F.J., Hess, C., Kon, F., Arévalo, S., Campbell, R.H.: Object Orientation in Off++ - A Distributed Adaptable μKernel. In: Proceedings of the ECOOP 1999 Workshop on Object Orientation and Operating Systems, pp. 49–53 (1999)Google Scholar
  4. [BJP+00]
    Ballesteros, F.J., Jimenez, R., Patino, M., Kon, F., Arévalo, S., Campbell, R.H.: Using Interpreted CompositeCalls to Improve Operating System Services. Software: Practice and Experience 30(6), 589–615 (2000)zbMATHCrossRefGoogle Scholar
  5. [Boe02]
    Boese, E.S.: Java Applets: Interactive Programming, 2nd edn. (2002)Google Scholar
  6. [BR05]
    Braun, P., Rossak, W.: Mobile Agents: Basic Concepts, Mobility Models, and the Tracy Toolkit. Elsevier, Amsterdam (2005)Google Scholar
  7. [BSP+95]
    Bershad, B.N., Savage, S., Pardyak, P., Sirer, E.G., Fiuczynski, M., Becker, D., Eggers, S., Chambers, C.: Extensibility, safety and performance in the SPIN operating system. In: Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles, December 1995, ACM, New York (1995)Google Scholar
  8. [DKO+84]
    DeWitt, D.J., Katz, R.H., Olken, F., Shapiro, L.D., Stonebraker, M.R., Wood, D.: Implementation techniques for main memory database systems. In: Proceedings of the ACM International Conference on Management of Data (SIGMOD), pp. 1–8 (1984)Google Scholar
  9. [Fla02]
    Flanagan, D.: JavaScript: the definitive guide. O’Reilly, Sebastopol (2002)Google Scholar
  10. [GHJV95]
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Elements of Object-Oriented Software. Addison-Wesley, Reading (1995)Google Scholar
  11. [Gra78]
    Gray, J.: Operating Systems: An Advanced Course. Springer, Heidelberg (1978)zbMATHGoogle Scholar
  12. [GSS03]
    Garfinkel, S., Spafford, G., Schwartz, A.: Practical UNIX and Internet Security. O’Reilly, Sebastopol (2003)Google Scholar
  13. [Hen06]
    Henderson, B.: Linux Loadable Kernel Module HOWTO. Technical report, Linux Documentation Project (September 2006)Google Scholar
  14. [JPPMA99]
    Jiménez-Peris, R., Patiño-Martínez, M., Arévalo, S.: Multithreaded Rendezvous: A Design Pattern for Distributed Rendezvous. In: Proc. of ACM Symposium on Applied Computing, February 1999, ACM Press, New York (1999)Google Scholar
  15. [LS88]
    Liskov, B., Shrira, L.: Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems. In: Proc. of ACM Conf. on Programming Language Design and Implementation, pp. 260–267 (1988)Google Scholar
  16. [LS95]
    Lavender, R.G., Schmidt, D.C.: Active object – an object behavioral pattern for concurrent programming. In: Proceedings of the Second Pattern Languages of Programs conference (PLoP), Monticello, Illinois (September 1995)Google Scholar
  17. [LTS+96]
    Li, Y., Tan, S.M., Sefika, M., Campbell, R.H., Liao, W.S.: Dynamic Customization in the μChoices Operating System. In: Proceedings of Reflection 1996, San Francisco (April 1996)Google Scholar
  18. [MPZ+98]
    Mohindra, A., Purakayastha, A., Zukowski, D., Devarakonda, M.: Programming Network Components Using NetPebbles: An Early Report. In: Proceedings of the 4th USENIX Conference on Object-Oriented Technologies and Systems, Santa Fe, New Mexico (April 1998)Google Scholar
  19. [MRM06]
    Mikic-Rakic, M., Medvidovic, N.: A Classification of Disconnected Operation Techniques. In: Proceeding of 32nd EUROMICRO Conference on Software Engineering and Advanced Applications (EUROMICRO 2006), pp. 144–151. IEEE Computer Society, Los Alamitos (2006)CrossRefGoogle Scholar
  20. [Nai05]
    Nair, R.: Virtual Machines: Versatile Platforms for Systems and Processes. Morgan Kaufmann, San Francisco (2005)zbMATHGoogle Scholar
  21. [PPE97]
    Clements, P.E., Papaioannou, T., Edwards, J.: Aglets: Enabling the Virtual Enterprise. In: Proc. of the Managing Enterprises - Stakeholders, Engineering, Logistics and Achievement Intl. Conference (ME-SELA 1997), Loughborough University, UK (1997)Google Scholar
  22. [SC95]
    Sane, A., Campbell, R.: Composite Messages: A Structural Pattern for Communication between Components. In: OOPSLA 1995 workshop on design patterns for concurrent, parallel, and distributed object-oriented systems (1995)Google Scholar
  23. [SDP91]
    Shrivastava, S.K., Dixon, G.N., Parrington, G.D.: An Overview of Arjuna: A Programming System for Reliable Distributed Computing. IEEE Software 8(1), 63–73 (1991)CrossRefGoogle Scholar
  24. [Tid98]
    Tidwell, J.: Interaction Design Patterns. In: Proceedings of the Conference on Pattern Languages of Programs (PLoP 1998), Monticello, Illinois (1998)Google Scholar
  25. [YJ02]
    Yoder, J.W., Johnson, R.: The Adaptive Object Model Architectural Style. In: Proceeding of The Working IEEE/IFIP Conference on Software Architecture 2002 (WICSA3 2002). Kluwer Academic Publishers, Dordrecht (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Francisco J. Ballesteros
    • 1
  • Fabio Kon
    • 2
  • Marta Patiño
    • 3
  • Ricardo Jiménez
    • 3
  • Sergio Arévalo
    • 1
  • Roy H. Campbell
    • 4
  1. 1.University Rey Juan Carlos 
  2. 2.University of São Paulo 
  3. 3.Technical University of Madrid 
  4. 4.University of Illinois at Urbana-Champaign 

Personalised recommendations