Abstract
Today’s applications are developed in a world where the execution context changes continuously. They have to adapt to these changes at run-time if they want to offer their services without interruption. This is particularly critical for distributed Web applications, whose components run on different machines, often managed by different organizations. Designing these programs in an easy and effective way requires choosing the right architectural style and the right run-time platform. The former has to guarantee isolation among components, supporting scalability, reliability, and dynamic changes. The latter has to offer mechanisms to update the applications’ code at run-time.
This work builds upon previous research about architectures and runtime platforms. Its contribution is to put together a very promising architectural style - Computational REST - with a language (and run-time environment) designed with dynamic, distributed applications in mind - Erlang. We show how they fit together by developing a new framework, which eases development of highly distributed Web applications capable of operating in dynamic environments. We also provide an initial experimental assessment of the proposed approach.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Mochiweb, http://github.com/mochi/mochiweb
Appeltauer, M., Hirschfeld, R., Haupt, M., Lincke, J., Perscheid, M.: A comparison of context-oriented programming languages. In: COP 2009: International Workshop on Context-Oriented Programming, pp. 1–6. ACM Press, New York (2009)
Armstrong, J.: Making reliable distributed systems in the presence of software errors. Ph.D. thesis, Royal Institute of Technology, Sweden (December 2003)
Armstrong, J.: A history of erlang. In: HOPL. pp. 1–26 (2007)
Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (July 2007), http://www.amazon.com/exec/obidos/redirect?tag=citeulike07-20&path=ASIN/193435600X
Armstrong, J.: Erlang. Commun. ACM 53(9), 68–75 (2010)
Byrd, W.E.: Web programming with continuations. Tech. rep., Unpublished Tech. Report (2002), http://double.co.nz/pdf/continuations.pdf
Costanza, P.: Language constructs for context-oriented programming. In: Proceedings of the Dynamic Languages Symposium, pp. 1–10. ACM Press, New York (2005)
Cugola, G., Margara, A.: Processing flows of information: From data stream to complex event processing. ACM Comput. Surv. (to appear)
Dean, J., Ghemawat, S.: Mapreduce: a flexible data processing tool. Commun. ACM 53(1), 72–77 (2010)
DiNitto, E., Ghezzi, C., Metzger, A., Papazoglou, M.P., Pohl, K.: A journey to highly dynamic, self-adaptive service-based applications. Autom. Softw. Eng. 15(3-4), 313–341 (2008)
Dybvig, R.K.: MIT Press, 4th edn. MIT Press, Cambridge (2009)
Erenkrantz, J.R., Gorlick, M., Suryanarayana, G., Taylor, R.N.: From representations to computations: the evolution of web architectures. In: ESEC-FSE 2007: Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the 14th ACM SIGSOFT Symposium on Foundations of Software Engineering, pp. 255–264. ACM Press, New York (2007), http://dx.doi.org/10.1145/1287624.1287660
Erenkrantz, J.R.: Computational REST: a new model for decentralized, internet-scale applications. Ph.D. thesis, Long Beach, CA, USA (2009) Adviser-Taylor, Richard, N.
Eugster, P.T., Felber, P., Guerraoui, R., Kermarrec, A.M.: The many faces of publish/subscribe. ACM Comput. Surv. 35(2), 114–131 (2003)
Fielding, R.T.: Architectural styles and the design of network-based software architectures. Ph.D. thesis (2000), http://portal.acm.org/citation.cfm?id=932295
Fuggetta, A., Picco, G.P., Vigna, G.: Understanding code mobility. IEEE Transactions on Software Engineering 24, 342–361 (1998)
Ghezzi, C., Pradella, M., Salvaneschi, G.: Context oriented programming in highly concurrent systems. In: COP 2010: International Workshop on Context-Oriented Programming, co-located with ECOOP 2010, Maribor, Slovenia (2010) (to appear)
Gorlick, M., Erenkrantz, J., Taylor, R.: The infrastructure of a computational web. Tech. rep., University of California, Irvine (May 2010)
Graunke, P., Findler, R.B., Krishnamurthi, S., Felleisen, M.: Automatically restructuring programs for the web. In: Proceedings of the 16th IEEE International Conference on Automated Software Engineering, ASE 2001, p. 211. IEEE Computer Society, Washington, DC, USA (2001), http://portal.acm.org/citation.cfm?id=872023.872573
Greenwood, P., Blair, L.: L.: Using dynamic aspect-oriented programming to implement an autonomic system. Tech. rep., Proceedings of the, Dynamic Aspect Workshop (DAW04, RIACS (2003)
Hewitt, C., Bishop, P., Steiger, R.: A universal modular actor formalism for artificial intelligence. In: Proceedings of the 3rd International Joint Conference on Artificial Intelligence, pp. 235–245. Morgan Kaufmann Publishers Inc, San Francisco (1973), http://portal.acm.org/citation.cfm?id=1624775.1624804
Kaminsky, M., Banks, E.: Sfs-http: Securing the web with self-certifying urls
Masuhara, H., Kiczales, G.: Modeling crosscutting in aspect-oriented mechanisms, pp. 2–28. Springer, Heidelberg (2003)
Oreizy, P., Medvidovic, N., Taylor, R.N.: Architecture-based runtime software evolution. In: ICSE, pp. 177–186 (1998)
Oreizy, P., Medvidovic, N., Taylor, R.N.: Runtime software adaptation: framework, approaches, and styles. In: 30th International Conference on Software Engineering, pp. 899–910. ACM Press, New York (2008)
Queinnec, C.: The influence of browsers on evaluators or, continuations to program web servers. In: Proceedings of the fifth ACM SIGPLAN International Conference on Functional Programming, ICFP 2000, pp. 23–33. ACM, New York (2000), http://doi.acm.org/10.1145/351240.351243
Taylor, R.N., Medvidovic, N., Oreizy, P.: Architectural styles for runtime software adaptation. In: WICSA/ECSA, pp. 171–180 (2009)
Vigna, G. (ed.): Mobile Agents and Security. LNCS, vol. 1419. Springer, Heidelberg (1998)
Zachary, J.: Protecting mobile code in the world. IEEE Internet Computing 7(2), 78–82 (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sivieri, A., Cugola, G., Ghezzi, C. (2011). Computational REST Meets Erlang. In: Bishop, J., Vallecillo, A. (eds) Objects, Models, Components, Patterns. TOOLS 2011. Lecture Notes in Computer Science, vol 6705. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21952-8_18
Download citation
DOI: https://doi.org/10.1007/978-3-642-21952-8_18
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-21951-1
Online ISBN: 978-3-642-21952-8
eBook Packages: Computer ScienceComputer Science (R0)