1 / 112

< bigwig > A Programming Language for Developing Interactive Web Services

< bigwig > A Programming Language for Developing Interactive Web Services. Claus Brabrand. BRICS , University of Aarhus, Denmark. Plan. Introduction Runtime System Dynamic Documents PowerForms Conclusion. Plan. Introduction Runtime System Dynamic Documents PowerForms Conclusion.

balin
Download Presentation

< bigwig > A Programming Language for Developing Interactive Web Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. <bigwig>A Programming Languagefor DevelopingInteractive Web Services Claus Brabrand BRICS, University of Aarhus, Denmark Datalogforeningen <bigwig> December 7, 1999

  2. Plan • Introduction • Runtime System • Dynamic Documents • PowerForms • Conclusion Datalogforeningen <bigwig> December 7, 1999

  3. Plan • Introduction • Runtime System • Dynamic Documents • PowerForms • Conclusion Datalogforeningen <bigwig> December 7, 1999

  4. What is <bigwig>? • A domain-specific high-level programming language for developing interactive Web services. HTML JavaScript Service Specification <bigwig> CGI HTTP Auth. Java Applets Datalogforeningen <bigwig> December 7, 1999

  5. A collection of DSLs • C-like skeleton language with • Runtime system • Concurrency control • Database • Dynamic documents: DynDoc • Input validation language: PowerForms • Security • Cryptographic security • Syntactic-level macros Datalogforeningen <bigwig> December 7, 1999

  6. A collection of DSLs • C-like skeleton language with • Runtime system • Concurrency control • Database • Dynamic documents: DynDoc • Input validation language: PowerForms • Security • Cryptographic security • Syntactic-level macros Datalogforeningen <bigwig> December 7, 1999

  7. DSL vs. GPL • DSL ::= Domain Specific Language • GPL ::= General Purpose Language • DSL? • Targeted for specific problem domain • Abstraction level match problem domain • Examples: Lex/Yacc, LaTeX Datalogforeningen <bigwig> December 7, 1999

  8. DSL vs. GPL • DSL ::= Domain Specific Language • GPL ::= General Purpose Language • DSL? • Targeted for specific problem domain • Abstraction level match problem domain • Examples: Lex/Yacc, LaTeX, <bigwig> Datalogforeningen <bigwig> December 7, 1999

  9. DSL Advantages …vs. GPL + library • Syntax • Analysis • Implementation Datalogforeningen <bigwig> December 7, 1999

  10. Goals • Lower development time (= cost): • Targeted at Web services • Low-level  high-level • Increase functionality: • Compiler does “the dirty work” • Reliability: • Catch errors during development • Runtime errors  Compile-time errors Datalogforeningen <bigwig> December 7, 1999

  11. Assumptions • “Rules of engagement”: • Lowest common denominator • Any browser/Web server combination • Only include basic primitives • Syntactic macro language does the rest Datalogforeningen <bigwig> December 7, 1999

  12. Target Audience • Programmers! • No expert Web knowledge required • No multiple choice questionnaires or drag’n’drop “Reduce Web service development to a standard programming task.” Datalogforeningen <bigwig> December 7, 1999

  13. Core Language Features • C-like to minimize syntactic burdens • Features: • Garbage collection • Relations, vectors, tuples • Strong type checking Datalogforeningen <bigwig> December 7, 1999

  14. People • 1x Michael I. Schwartzbach • 1x Post Doc. • 3x Ph.D. students • 2x Programmers • 2x Testers • 1x External contributor Datalogforeningen <bigwig> December 7, 1999

  15. Plan • Introduction • Runtime System • Dynamic Documents • PowerForms • Conclusion Datalogforeningen <bigwig> December 7, 1999

  16. Plan • Introduction • Runtime System • Dynamic Documents • PowerForms • Conclusion Datalogforeningen <bigwig> December 7, 1999

  17. 3 Approaches Script-centered Perl/CGI Datalogforeningen <bigwig> December 7, 1999

  18. 3 Approaches Script-centered Perl/CGI ASP, PHP Page-centered Datalogforeningen <bigwig> December 7, 1999

  19. 3 Approaches Script-centered Perl/CGI ASP, PHP Page-centered Mawl, <bigwig> Session-centered Datalogforeningen <bigwig> December 7, 1999

  20. Script-Centered A script A script A page A page A script A page Datalogforeningen <bigwig> December 7, 1999

  21. Page-Centered A page A page A page Datalogforeningen <bigwig> December 7, 1999

  22. Page-Centered “Service code embedded in tags and interpreted by specialized Web server” • Increased level of abstraction • Easy to add dynamics to static pages • Scalability Datalogforeningen <bigwig> December 7, 1999

  23. Script / Page-Centered • As the service complexity increases: • Page-centered  Script-centered • Script-centered: • default programming, escape printing. • Page-centered: • default printing, escape programming. Datalogforeningen <bigwig> December 7, 1999

  24. (Fundamental) Problems • Interpretation-based: • Typically no static checks • (Efficiency) • Not domain specific: • Cannot check Web related issues • Implicit control-flow: • A service = A collection of scripts/pages! Datalogforeningen <bigwig> December 7, 1999

  25. Language Requirements • Compilation-based: • Static checks • (Efficiency) • Domain specific: • Check Web related issues • Explicit control-flow: • A clear service specification Datalogforeningen <bigwig> December 7, 1999

  26. Session-Centered client: server: N show show N Internet Datalogforeningen <bigwig> December 7, 1999

  27. Hello World service { session Hello() { html D = <html>Hello World!</html>; show D; } } Datalogforeningen <bigwig> December 7, 1999

  28. Hello World service { session Hello() { show <html>Hello World!</html>; } } Datalogforeningen <bigwig> December 7, 1999

  29. A Page Counter service { session Access() { globalint counter; string name; show EnterName receive [name=name]; counter = counter + 1; show AccessDoc <[counter = counter]; } } Datalogforeningen <bigwig> December 7, 1999

  30. A Page Counter  if (counter == 100) { show Congratulations <[name = name]; counter = 0; } else { show EnterName receive [name=name]; }  Datalogforeningen <bigwig> December 7, 1999

  31. CGI Shortcomings • Stateless protocol • Session model requires state • No bookmarking • CGI, not HTML URL • Back-button problem • “Step-back-in-time” does not make sense Datalogforeningen <bigwig> December 7, 1999

  32. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  33. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  34. Components client CGI HTML Internet HTTP server CGI HTML restore ; compute ; save program database Datalogforeningen <bigwig> December 7, 1999

  35. Adding a ”Connector” client CGI HTML Internet HTTP server CGI HTML redirect connector CGI HTML restore ; compute ; save program database Datalogforeningen <bigwig> December 7, 1999

  36. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  37. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  38. Components client CGI HTML Internet HTTP server CGI HTML connector CGI HTML program database Datalogforeningen <bigwig> December 7, 1999

  39. Adding an HTML “Reply File” client CGI jump Internet HTTP server CGI jump connector CGI done! HTML reply file program HTML database Datalogforeningen <bigwig> December 7, 1999

  40. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  41. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  42. Components client CGI jump Internet HTTP server CGI jump connector CGI done! HTML reply file program HTML database Datalogforeningen <bigwig> December 7, 1999

  43. Components client CGI jump Internet HTTP server CGI jump connector same URL CGI done! HTML reply file program HTML database Datalogforeningen <bigwig> December 7, 1999

  44. CGI Shortcomings • Stateless protocol • No bookmarking • Back-button problem Datalogforeningen <bigwig> December 7, 1999

  45. Additional Problems Datalogforeningen <bigwig> December 7, 1999

  46. Additional Problems Datalogforeningen <bigwig> December 7, 1999

  47. What is going on? • Error? • Package Lost, Service Crash, Connection down? • Ok? • Searching Database, Long Computation, Waiting for a Resource? • Would like to explain delays: • “searching database, please wait...” Datalogforeningen <bigwig> December 7, 1999

  48. Components client CGI jump Internet HTTP server CGI jump connector CGI done! HTML reply file program HTML database Datalogforeningen <bigwig> December 7, 1999

  49. Adding a Connector Timeout client CGI jump Internet HTTP server CGI jump connector Timeout CGI done HTML reply file program update database Datalogforeningen <bigwig> December 7, 1999

  50. Concurrency Control • Problem: Parallel service processes. • Access shared resources. • Require synchronization. • Solution: • Specification of checkpoints & constraints • Synthesize centralized safety controller • Ensures that service obeys constraints. Datalogforeningen <bigwig> December 7, 1999

More Related