Skip to main content

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

  • Chapter
Transactions on Pattern Languages of Programming I

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aberdeen Group: Flash Remoting MX: A Responsive Client-Server Architecture for the Web. Technical report, Macromedia White paper (December 2002)

    Google Scholar 

  2. Bernstein, P.A., Hadzilacos, V., Goodman, N.: Concurrency Control and Recovery in Database Systems. Addison-Wesley, Reading (1987)

    Google Scholar 

  3. 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. 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)

    Article  MATH  Google Scholar 

  5. Boese, E.S.: Java Applets: Interactive Programming, 2nd edn. Lulu.com (2002)

    Google Scholar 

  6. Braun, P., Rossak, W.: Mobile Agents: Basic Concepts, Mobility Models, and the Tracy Toolkit. Elsevier, Amsterdam (2005)

    Google Scholar 

  7. 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. 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. Flanagan, D.: JavaScript: the definitive guide. O’Reilly, Sebastopol (2002)

    Google Scholar 

  10. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Elements of Object-Oriented Software. Addison-Wesley, Reading (1995)

    Google Scholar 

  11. Gray, J.: Operating Systems: An Advanced Course. Springer, Heidelberg (1978)

    MATH  Google Scholar 

  12. Garfinkel, S., Spafford, G., Schwartz, A.: Practical UNIX and Internet Security. O’Reilly, Sebastopol (2003)

    Google Scholar 

  13. Henderson, B.: Linux Loadable Kernel Module HOWTO. Technical report, Linux Documentation Project (September 2006)

    Google Scholar 

  14. 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. 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. 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. 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. 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. 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)

    Chapter  Google Scholar 

  20. Nair, R.: Virtual Machines: Versatile Platforms for Systems and Processes. Morgan Kaufmann, San Francisco (2005)

    MATH  Google Scholar 

  21. 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. 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. 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)

    Article  Google Scholar 

  24. Tidwell, J.: Interaction Design Patterns. In: Proceedings of the Conference on Pattern Languages of Programs (PLoP 1998), Monticello, Illinois (1998)

    Google Scholar 

  25. 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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Ballesteros, F.J., Kon, F., Patiño, M., Jiménez, R., Arévalo, S., Campbell, R.H. (2009). Batching: A Design Pattern for Efficient and Flexible Client/Server Interaction. In: Noble, J., Johnson, R. (eds) Transactions on Pattern Languages of Programming I. Lecture Notes in Computer Science, vol 5770. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-10832-7_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-10832-7_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-10831-0

  • Online ISBN: 978-3-642-10832-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics