ABSTRACT
Modern applications are designed in multiple tiers to separate concerns. Since each tier may run at a separate location, middleware is required to mediate access between tiers. However, introducing this middleware is tiresome and error-prone.We propose a multi-tier calculus and a splitting transformation to address this problem. The multi-tier calculus serves as a sequential core programming language for constructing a multi-tier application. The application can be developed in the sequential setting. Splitting extracts one process per tier from the sequential program such that their concurrent execution behaves like the original program.The splitting transformation starts from an assignment of primitive operations to tiers. A program analysis determines communication requirements and inserts remote procedure calls. The next transformation step performs resource pooling: it optimizes the communication behavior by transforming sequences of remote procedure calls to a stream-based protocol. The final transformation step splits the resulting program into separate communicating processes.The multi-tier calculus is also applicable to the construction of interactive Web applications. It facilitates their development by providing a uniform programming framework for client-side and server-side programming.
- C. Flanagan, A. Sabry, B. F. Duba, and M. Felleisen. The essence of compiling with continuations. In Proceedings of the 1993 Conference on Programming Language Design and Implementation, pages 237--247, Albuquerque, New Mexico, June 1993.]] Google ScholarDigital Library
- S. Gay and M. Hole. Types and subtypes for client-server interactions. In D. Swierstra, editor, Proceedings of the 1999 European Symposium on Programming, number 1576 in Lecture Notes in Computer Science, pages 74--90, Amsterdam, The Netherlands, Apr. 1999. Springer-Verlag.]] Google ScholarDigital Library
- A. Gordon. Bisimilarity as a theory of functional programming. Theoretical Computer Science, 228(1-2):5--47, Oct. 1999.]] Google ScholarDigital Library
- J. Greiner and G. E. Blelloch. A provably time-efficient parallel implementation of full speculation. ACM Transactions on Programming Languages and Systems, 21(2):240--285, 1999.]] Google ScholarDigital Library
- F. Henglein. Efficient type inference for higher-order binding-time analysis. In Hughes {6}, pages 448--472.]] Google ScholarDigital Library
- J. Hughes, editor. Functional Programming Languages and Computer Architecture, number 523 in Lecture Notes in Computer Science, Cambridge, MA, 1991. Springer-Verlag.]] Google ScholarDigital Library
- N. Jones, C. Gomard, and P. Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.]] Google ScholarDigital Library
- J. Krinke. Context-sensitive slicing of concurrent programs. In Proceedings 9th European Software Engineering Conference, pages 178--187. ACM Press, 2003.]] Google ScholarDigital Library
- X. Leroy. The Objective Caml system release 3.02, Documentation and user's manual. INRIA, France, July 2001. http://pauillac.inria.fr/caml.]]Google Scholar
- R. Milner. Communication and Concurrency. Prentice Hall, Englewood Cliffs, NJ, 1989.]] Google ScholarDigital Library
- M. G. Nanda and S. Ramesh. Slicing concurrent programs. In Proceedings of the International Symposium on Software Testing and Analysis, pages 180--190. ACM Press, 2000.]] Google ScholarDigital Library
- D. Park. Concurrency and automata on infinite sequences. In Proceedings of the 5th GI-Conference on Theoretical Computer Science, number 104 in Lecture Notes in Computer Science, pages 167--1183. Springer-Verlag, 1981.]] Google ScholarDigital Library
- S. L. Peyton Jones. Parallel implementations of functional programming languages. The Computer Journal, 32(2):175--186, 1989.]] Google ScholarDigital Library
- S. L. Peyton Jones and J. Launchbury. Unboxed values as first class citizens in a non-strict functional language. In Hughes {6}, pages 636--666.]] Google ScholarDigital Library
- W. R. Stevens. UNIX Network Programming. Prentice Hall Software Series, 1990.]] Google ScholarDigital Library
- Y. M. Tang and P. Jouvelot. Effect systems with subtyping. In W. Scherlis, editor, Proc. ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation PEPM '95, pages 45--53, La Jolla, CA, USA, June 1995. ACM Press.]] Google ScholarDigital Library
- F. Tip. A survey of program slicing techniques. J. Programming Languages, 3(3):121--189, 1995.]]Google ScholarDigital Library
- D. Walker, C. Crary, and G. Morrisett. Typed memory management via static capabilities. ACM Transactions on Programming Languages and Systems, 22(4):701--771, July 2000.]] Google ScholarDigital Library
- S. Zdancewic, L. Zheng, N. Nystrom, and A. C. Myers. Secure program partitioning. ACM Transactions on Computer Systems, 20(3):283--328, 2002.]] Google ScholarDigital Library
- L. Zheng, S. Chong, A. C. Myers, and S. Zdancewic. Using replication and partitioning to build secure distributed systems. In Proceedings of the 2003 IEEE Symposium on Security and Privacy, page 236. IEEE Computer Society, 2003.]] Google ScholarDigital Library
Index Terms
- From sequential programs to multi-tier applications by program transformation
Recommendations
From sequential programs to multi-tier applications by program transformation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languagesModern applications are designed in multiple tiers to separate concerns. Since each tier may run at a separate location, middleware is required to mediate access between tiers. However, introducing this middleware is tiresome and error-prone.We propose ...
Performance modeling and analysis of virtualized multi-tier applications under dynamic workloads
Virtual machine technology facilitates implementation of modern Internet services, especially multi-tier applications. Server virtualization aims to reduce the cost of service provisioning and improve fault tolerance, portability and security of ...
Agile dynamic provisioning of multi-tier Internet applications
Dynamic capacity provisioning is a useful technique for handling the multi-time-scale variations seen in Internet workloads. In this article, we propose a novel dynamic provisioning technique for multi-tier Internet applications that employs (1) a ...
Comments