Multitier programming

This is an old revision of this page, as edited by Guidosalva (talk | contribs) at 17:23, 4 May 2020. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Multitier programming is a programming paradigm for distributed software. In multitier programming, the functionalities that belong to multiple tiers (e.g., the client, the server and the database in a Web application) are part of the same compilation unit and are developed in the same programming language. In contrast, traditionally, tiers are developed using different languages, e.g., JavaScript for the Web client, PHP for the Web server and SQL for the database. The first multitier programming languages include Links.[1] and Hop[2]

Example

As an example, we show an Echo client–server application: The client sends a message to the server and the server returns the same message to the client, where it is appended to a list of received messages. The application is simple and self-contained, and – despite all the limitations of short and synthetic examples – it gives us the chance to demonstrate di erent MT languages side by side.

fun echo(item) server {
  item
}			
	



List of multitier programming languages




References

Category:Programming paradigms

  1. ^ a b Cooper, Ezra (2006). "Links: Web Programming Without Tiers": 266–296. doi:10.1007/978-3-540-74792-5_12. {{cite journal}}: Cite journal requires |journal= (help)
  2. ^ a b Serrano, Manuel (2012). "Multitier programming in Hop". Commun. ACM. 55 (8): 53–59. doi:10.1145/2240236.2240253.
  3. ^ Fowler, Simon (2019). "Exceptional asynchronous session types: session types without tiers". Proc. ACM Program. Lang. 3 (POPL): 28:1–28:29. doi:10.1145/3290341.
  4. ^ Serrano, Manuel (2006). "Hop: a language for programming the web 2.0": 975–985. doi:10.1145/1176617.1176756. {{cite journal}}: Cite journal requires |journal= (help)
  5. ^ Serrano, Manuel (2016). "A glimpse of Hopjs": 180–192. doi:10.1145/2951913.2951916. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Chlipala, Adam (2015). "Ur/Web: A Simple Model for Programming the Web": 153–165. doi:10.1145/2676726.2677004. {{cite journal}}: Cite journal requires |journal= (help)
  7. ^ Balat, Vincent (2006). "Ocsigen: typing web interaction with objective Caml": 84–94. doi:10.1145/1159876.1159889. {{cite journal}}: Cite journal requires |journal= (help)
  8. ^ Radanne, Gabriel (2018). "Tierless Web Programming in the Large": 681–689. doi:10.1145/3184558.3185953. {{cite journal}}: Cite journal requires |journal= (help)
  9. ^ Weisenburger, Pascal (2018). "Distributed system development with ScalaLoci". Proc. ACM Program. Lang. 2 (OOPSLA): 129:1–129:30. doi:10.1145/3276499.
  10. ^ Philips, Laure (2014). "Towards Tierless Web Development without Tierless Languages": 69–81. doi:10.1145/2661136.2661146. {{cite journal}}: Cite journal requires |journal= (help)
  11. ^ Philips, Laure (2018). "Search-based Tier Assignment for Optimising Offline Availability in Multi-tier Web Applications". Programming Journal. 2 (2): 3. doi:10.22152/programming-journal.org/2018/2/3.
  12. ^ Reynders, Bob (2014). "Multi-Tier Functional Reactive Programming for the Web": 55–68. doi:10.1145/2661136.2661140. {{cite journal}}: Cite journal requires |journal= (help)
  13. ^ Rajchenbach-Teller, D., & Sinot, Franois-R'egis. (2010). Opa: Language support for a sane, safe and secure web. Proceedings of the OWASP AppSec Research, 2010(1).
  14. ^ Carreton, Andoni Lombide (2010). "Loosely-Coupled Distributed Reactive Programming in Mobile Ad Hoc Networks": 41–60. doi:10.1007/978-3-642-13953-6_3. {{cite journal}}: Cite journal requires |journal= (help)
  15. ^ Dedecker, Jessie (2006). "Ambient-Oriented Programming in AmbientTalk": 230–254. doi:10.1007/11785477_16. {{cite journal}}: Cite journal requires |journal= (help)
  16. ^ VII, Tom Murphy (2007). "Type-Safe Distributed Programming with ML5": 108–123. doi:10.1007/978-3-540-78663-4_9. {{cite journal}}: Cite journal requires |journal= (help)
  17. ^ "WebSharper". websharper.com. Retrieved 2020-05-04.
  18. ^ Ekblad, Anton; Claessen, Koen (2015-05-11). "A seamless, client-centric programming model for type safe web applications". ACM SIGPLAN Notices. 49 (12): 79–89. doi:10.1145/2775050.2633367. ISSN 0362-1340.
  19. ^ "Fun (a programming language for the realtime web)". marcuswest.in. Retrieved 2020-05-04.
  20. ^ Leijen, Daan (2014). "Koka: Programming with Row Polymorphic Effect Types": 100–126. doi:10.4204/EPTCS.153.8. {{cite journal}}: Cite journal requires |journal= (help)
  21. ^ Neubauer, Matthias (2005). "From sequential programs to multi-tier applications by program transformation": 221–232. doi:10.1145/1040305.1040324. {{cite journal}}: Cite journal requires |journal= (help)
  22. ^ ChongStephen; LiuJed; C, MyersAndrew; QiXin; VikramK; ZhengLantian; ZhengXin (2007-10-14). "Secure web applications via automatic partitioning". ACM SIGOPS Operating Systems Review. doi:10.1145/1323293.1294265.
  23. ^ Manolescu, Dragos (2008). "Volta: Developing Distributed Applications by Recompiling". IEEE Software. 25 (5): 53–59. doi:10.1109/MS.2008.131.
  24. ^ Kereki, Federico, 1960- (2011). Essential GWT : building for the web with Google Web toolkit 2. Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0-321-70563-1. OCLC 606556208.{{cite book}}: CS1 maint: multiple names: authors list (link) CS1 maint: numeric names: authors list (link)
  25. ^ Strack, Isaac,. Getting started with Meteor JavaScript framework. Birmingham. ISBN 978-1-78216-083-0. OCLC 823718999.{{cite book}}: CS1 maint: extra punctuation (link) CS1 maint: multiple names: authors list (link)
  26. ^ Tilevich, Eli (2002). "J-Orchestra: Automatic Java Application Partitioning": 178–204. doi:10.1007/3-540-47993-7_8. {{cite journal}}: Cite journal requires |journal= (help)
  27. ^ Berry, Gérard; Nicolas, Cyprien; Serrano, Manuel (2011). "Hiphop". Proceedings of the 1st ACM SIGPLAN international workshop on Programming language and systems technologies for internet clients - PLASTIC '11. New York, New York, USA: ACM Press. doi:10.1145/2093328.2093337. ISBN 978-1-4503-1171-7.
  28. ^ Thywissen, John A. (2016). "Implicitly Distributing Pervasively Concurrent Programs: Extended abstract": 1. doi:10.1145/2957319.2957370. {{cite journal}}: Cite journal requires |journal= (help)
  29. ^ Zdancewic, Steve (2002). "Secure program partitioning". ACM Trans. Comput. Syst. 20 (3): 283–328. doi:10.1145/566340.566343.
  30. ^ Guha, Arjun; Jeannin, Jean-Baptiste; Nigam, Rachit; Tangen, Jane; Shambaugh, Rian (2017). Lerner, Benjamin S.; Bodík, Rastislav; Krishnamurthi, Shriram (eds.). "Fission: Secure Dynamic Code-Splitting for JavaScript". 2nd Summit on Advances in Programming Languages (SNAPL 2017). Leibniz International Proceedings in Informatics (LIPIcs). 71. Dagstuhl, Germany: Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik: 5:1–5:13. doi:10.4230/LIPIcs.SNAPL.2017.5. ISBN 978-3-95977-032-3.{{cite journal}}: CS1 maint: unflagged free DOI (link)
  31. ^ Chong, Stephen (2007). "SIF: Enforcing Confidentiality and Integrity in Web Applications". {{cite journal}}: Cite journal requires |journal= (help)
  32. ^ Groenewegen, Danny M. (2008). "WebDSL: a ___domain-specific language for dynamic web applications": 779–780. doi:10.1145/1449814.1449858. {{cite journal}}: Cite journal requires |journal= (help)
  33. ^ Sewell, Peter (2005). "Acute: high-level programming language design for distributed computation": 15–26. doi:10.1145/1086365.1086370. {{cite journal}}: Cite journal requires |journal= (help)
  34. ^ Hemel, Zef (2011). "Declaratively programming the mobile web with Mobl": 695–712. doi:10.1145/2048066.2048121. {{cite journal}}: Cite journal requires |journal= (help)
  35. ^ Richard-Foy, Julien (2013). "Efficient high-level abstractions for web programming": 53–60. doi:10.1145/2517208.2517227. {{cite journal}}: Cite journal requires |journal= (help)