Advertisement

Higher-Order and Symbolic Computation

, Volume 20, Issue 4, pp 431–460 | Cite as

Implementation and use of the PLT scheme Web server

  • Shriram Krishnamurthi
  • Peter Walton Hopkins
  • Jay McCarthy
  • Paul T. Graunke
  • Greg Pettyjohn
  • Matthias Felleisen
Article

Abstract

The PLT Scheme Web Server uses continuations to enable a natural, console-like program development style. We describe the implementation of the server and its use in the development of an application for managing conference paper reviews. In the process of developing this application, we encountered subtle forms of interaction not directly addressed by using continuations. We discuss these subtleties and offer solutions that have been successfully deployed in our application. Finally, we present some details on the server’s performance, which is comparable to that of the widely-used Apache Web server.

Keywords

Scheme Web Interaction Continuations Performance Applications Conference management 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Amdahl, G.M.: Validity of the single-processor approach to achieving large scale computing capabilities. In: AFIPS Conference Proceedings, vol. 30, pp. 483–485 (1967) Google Scholar
  2. 2.
    Aron, M., Sanders, D., Druschel, P., Zwaenepoel, W.: Scalable content-aware request distribution in cluster-based network servers. In: USENIX Annual Technical Conference, pp. 323–336 (2000) Google Scholar
  3. 3.
    Banga, G., Druschel, P.: Measuring the capacity of a Web server under realistic loads. World Wide Web 2(1–2), 69–83 (1999) CrossRefGoogle Scholar
  4. 4.
    Banga, G., Druschel, P., Mogul, J.: Resource containers: a new facility for resource management in server systems. In: Symposium on Operating System Design and Implementation, pp. 45–58 (1999) Google Scholar
  5. 5.
    Brabrand, C., Møller, A., Schwartzbach, M.I.: The <bigwig> project. ACM Trans. Internet Technol. 2(2), 79–114 (2002) CrossRefGoogle Scholar
  6. 6.
    Bray, T., Paoli, J., Sperberg-McQueen, C.: Extensible markup language XML. Technical Report, World Wide Web Consortium. Version 1.0 (1998) Google Scholar
  7. 7.
    Cejtin, H., Jagannathan, S., Kelsey, R.: Higher-order distributed objects. ACM Trans. Program. Lang. Syst. 17(5), 704–739 (1995) CrossRefGoogle Scholar
  8. 8.
    Christensen, A.S., Møller, A., Schwartzbach, M.I.: Extending Java for high-level Web service construction. ACM Trans. Program. Lang. Syst. 25(6), 814–875 (2003) CrossRefGoogle Scholar
  9. 9.
    Coward, D.: Java Servlet Specification Version 2.3 (2000). http://java.sun.com/products/servlet/index.html
  10. 10.
    Danvy, O.: Back to direct style. Sci. Comput. Program. 22(3), 183–195 (1994) MATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Ducasse, S., Lienhard, A., Renggli, L.: Seaside—a multiple control flow Web application framework. In: European Smalltalk User Group—Research Track (2004) Google Scholar
  12. 12.
    Felleisen, M.: Developing interactive web programs. In: Jeuring, J., Peyton Jones, S. (eds.) Advanced Functional Programming School. Lecture Notes in Computer Science, vol. 2638, pp. 100–128. Springer, New York (2003) Google Scholar
  13. 13.
    Findler, R.B., Clements, J., Flanagan, C., Flatt, M., Krishnamurthi, S., Steckler, P., Felleisen, M.: DrScheme: a programming environment for scheme. J. Funct. Program. 12(2), 159–182 (2002) MATHCrossRefGoogle Scholar
  14. 14.
    Fischer, M.J.: Lambda calculus schemata. ACM SIGPLAN Not. 7(1), 104–109 (1972). In the ACM Conference on Proving Assertions about Programs CrossRefGoogle Scholar
  15. 15.
    Fisler, K., Krishnamurthi, S., Meyerovich, L.A., Tschantz, M.C.: Verification and change-impact analysis of access-control policies. In: International Conference on Software Engineering, pp. 196–205 (2005) Google Scholar
  16. 16.
    Flatt, M., Felleisen, M.: Cool modules for HOT languages. In: ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 236–248 (1998) Google Scholar
  17. 17.
    Flatt, M., Findler, R.B., Krishnamurthi, S., Felleisen, M.: Programming languages as operating systems (or, revenge of the son of the lisp machine). In: ACM SIGPLAN International Conference on Functional Programming, pp. 138–147 (1999) Google Scholar
  18. 18.
    Graham, P.: Lisp for Web-based applications (2001). http://www.paulgraham.com/lwba.html
  19. 19.
    Graunke, P.T., Krishnamurthi, S., van der Hoeven, S., Felleisen, M.: Programming the Web with high-level programming languages. In: European Symposium on Programming, pp. 122–136 (2001) Google Scholar
  20. 20.
    Herman, D.: WebPostRedirectGet (2005). http://schemecookbook.org/Cookbook/WebPostRedirectGet
  21. 21.
    Hopkins, P.W.: Enabling complex UI in Web applications with send/suspend/dispatch. In: Scheme Workshop, pp. 53–58 (2003) Google Scholar
  22. 22.
    Hughes, J.: Generalising monads to arrows. Sci. Comput. Program. 37(1–3), 67–111 (2000) MATHCrossRefGoogle Scholar
  23. 23.
    Kiselyov, O.: SXML specification. ACM SIGPLAN Not. 37(6), 52–58 (2002) CrossRefGoogle Scholar
  24. 24.
    Krishnamurthi, S.: The Continue server. In: Symposium on the Practical Aspects of Declarative Languages, pp. 2–16 (2003) Google Scholar
  25. 25.
    Krishnamurthi, S., Findler, R.B., Graunke, P., Felleisen, M.: Modeling Web interactions and errors. In: Goldin, D., Smolka, S.A., Wegner, P. (eds.) Interactive Computation: The New Paradigm, pp. 255–276. Springer (2006) Google Scholar
  26. 26.
    Krishnamurthi, S., Gray, K.E., Graunke, P.T.: Transformation-by-example for XML. In: Symposium on the Practical Aspects of Declarative Languages, pp. 249–262 (2000) Google Scholar
  27. 27.
    Kristol, D., Montulli, L.: HTTP state management mechanism. IETF RFC 2965 (2000). http://www.ietf.org/rfc/rfc2965.txt
  28. 28.
    Ladd, D.A., Ramming, J.C.: Programming the Web: an application-oriented language for hypermedia service programming. In: International World Wide Web Conference (1995) Google Scholar
  29. 29.
    Lawall, J.L., Friedman, D.P.: Towards leakage containment. Technical Report TR-346, Indiana University, Bloomington, IN, USA (1992) Google Scholar
  30. 30.
    Matthews, J., Findler, R.B., Graunke, P.T., Krishnamurthi, S., Felleisen, M.: Automatically restructuring programs for the Web. Autom. Softw. Eng. J. 11(4), 337–364 (2004) CrossRefGoogle Scholar
  31. 31.
    Meijer, E., van Velzen, D.: Haskell server pages—functional programming and the battle for the middle tier. Electron. Notes Theor. Comput. Sci. 41(1). Proceedings of the ACM SIGPLAN Haskell Workshop (2000) Google Scholar
  32. 32.
    Miller, S.G.: SISC: a complete scheme interpreter in Java (2003). http://sisc.sourceforge.net/sisc.pdf
  33. 33.
    NCSA, The common gateway interface. http://hoohoo.ncsa.uiuc.edu/cgi/
  34. 34.
    Nørmark, K.: Web programming in scheme with LAML. J. Funct. Program. 15(1), 53–65 (2005) CrossRefGoogle Scholar
  35. 35.
    Open Market, Inc., FastCGI specification. http://www.fastcgi.com/
  36. 36.
    Pai, V.S., Druschel, P., Zwaenepoel, W.: Flash: an efficient and portable Web server. In: USENIX Annual Technical Conference, pp. 199–212 (1999) Google Scholar
  37. 37.
    Pai, V.S., Druschel, P., Zwaenepoel, W.: IO-Lite: a unified I/O buffering and caching system. In: Third Symposium on Operating Systems Design and Implementation, pp. 15–28 (1999) Google Scholar
  38. 38.
    Pitman, K.: Special forms in lisp. In: Conference Record of the Lisp Conference, pp. 179–187 (1980) Google Scholar
  39. 39.
    Queinnec, C.: The influence of browsers on evaluators or, continuations to program Web servers. In: ACM SIGPLAN International Conference on Functional Programming, pp. 23–33 (2000) Google Scholar
  40. 40.
    Queinnec, C.: Continuations and Web servers. Higher-Order Symb. Comput. 17(4), 277–295 (2004) CrossRefGoogle Scholar
  41. 41.
    Spoonhower, D., Czajkowski, G., Hawblitzel, C., Chang, C.-C., Hu, D., von Eicken, T.: Design and evaluation of an extensible Web and telephony server based on the J-kernel. Technical Report TR98-1715, Department of Computer Science, Cornell University (1998) Google Scholar
  42. 42.
    Sun Microsystems, Inc.: JSR154—Java™Servlet 2.4 specification (2003). http://jcp.org/aboutJava/communityprocess/final/jsr154/
  43. 43.
    Thau, R.: Design considerations for the Apache server API. In: Fifth International World Wide Web Conference, pp. 1113–1122 (1996) Google Scholar
  44. 44.
    The Apache Cocoon Project: User documentation. The Apache Software Foundation (2005) Google Scholar
  45. 45.
    The Apache Software Foundation. http://www.apache.org/
  46. 46.
    The Apache Struts Project: The struts user’s guide. The Apache Software Foundation (2005) Google Scholar
  47. 47.
    Thiemann, P.: WASH/CGI: server-side Web scripting with sessions and typed, compositional forms. In: Symposium on the Practical Aspects of Declarative Languages, pp. 192–208 (2002) Google Scholar
  48. 48.
    Wallace, M., Runciman, C.: Haskell and XML: generic document processing combinators vs. type-based translation. In: ACM SIGPLAN International Conference on Functional Programming, pp. 148–159 (1999) Google Scholar
  49. 49.
    World Wide Web Consortium: XHTML 1.0: the extensible hypertext markup language (2002). http://www.w3.org/TR/xhtml1/

Copyright information

© Springer Science+Business Media, LLC 2007

Authors and Affiliations

  • Shriram Krishnamurthi
    • 1
  • Peter Walton Hopkins
    • 1
  • Jay McCarthy
    • 1
  • Paul T. Graunke
    • 2
  • Greg Pettyjohn
    • 2
  • Matthias Felleisen
    • 2
  1. 1.Brown UniversityProvidenceUSA
  2. 2.Northeastern UniversityBostonUSA

Personalised recommendations