Smalltalk Web frameworks

Slides:



Advertisements
Similar presentations
The Web Wizards Guide to HTML Chapter Six Tables.
Advertisements

Struts Portlet Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
WEB DESIGN TABLES, PAGE LAYOUT AND FORMS. Page Layout Page Layout is an important part of web design Why do you think your page layout is important?
Apache Struts Technology
OMT II Mam Saima Gul. * Static web page * a web page with contents that remain fixed and unchanged once it has been created by the author Web server Client.
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Apache Struts Technology A MVC Framework for Java Web Applications.
2440: 141 Web Site Administration Web Server-Side Programming Professor: Enoch E. Damson.
Web 2.0 with AJAX Students : LASC Ioana KELEMEN Csilla POP Dan Adrian CIOBANU Dumitru Daniel Project leader : Ahmed RHIAT.
Struts 2.0 an Overview ( )
Struts. Agenda Preface Struts and its components An example The architecture required for Struts Applications.
UNIT-V The MVC architecture and Struts Framework.
Introduction to the Jakarta Struts Framework  The Topics: JavaServer Pages (JSP) Overview JSP Tags and Tag Libraries Overview Model – View – Controller.
Web Development Methodologies Yuan Wang(yw2326). Basic Concepts Browser/Server (B/S) Structure Keywords: Browser, Server Examples: Websites Client/Server.
The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.
_______________________________________________________________________________________________________________ E-Commerce: Fundamentals and Applications1.
Chapter 1: Introduction to Web
With your friendly Web Developer, Chris.. Terminology  HTML - > Hypertext Markup Language  CSS -> Cascading Style Sheet  open tag  close tag  HTTP->Hypertext.
Web Application Programming Carol Wolf Computer Science.
ASP.NET and Model View Control Jesper Tørresø ITNET2 F08.
JDeveloper 10g and JavaServer Faces: High-Performance UIs on the Web Avrom Roy-Faderman Senior Programmer May, 2006.
Chapter 17 - Deploying Java Applications on the Web1 Chapter 17 Deploying Java Applications on the Web.
Design Patterns Phil Smith 28 th November Design Patterns There are many ways to produce content via Servlets and JSPs Understanding the good, the.
COMP 321 Week 7. Overview HTML and HTTP Basics Dynamic Web Content ServletsMVC Tomcat in Eclipse Demonstration Lab 7-1 Introduction.
Introduction to HTML. What is a HTML File?  HTML stands for Hyper Text Markup Language  An HTML file is a text file containing small markup tags  The.
1 Dr Alexiei Dingli Web Science Stream Introducing Rails.
HTML. Principle of Programming  Interface with PC 2 English Japanese Chinese Machine Code Compiler / Interpreter C++ Perl Assembler Machine Code.
Apache Struts RIFE Ruby on Rails Harry R. Erwin, PhD University of Sunderland CIT304/CSE301.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
1 Another group of Patterns Architectural Patterns.
Fall CIS 764 Database Systems Design L8. Web ….
Kingdom of Saudi Arabia Ministry of Higher Education Al-Imam Muhammad Ibn Saud Islamic University College of Computer and Information Sciences Chapter.
1 After completing this lesson, you will be able to: Transfer your files to the Internet. Choose a method for posting your Web pages. Use Microsoft’s My.
HTML Basics BCIS 3680 Enterprise Programming. Web Client/Server Architecture 2  Your browser (the client) requests a Web page from a remote computer.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Introduction to PHP Development with IDS Jean Georges Perrin IIUG I13 Tuesday, October 4 th :15 – 17:15. Platform: IDS, PHP.
WEP Presentation for non-IT Steps and roles in software development 2. Skills developed in 1 st year 3. What can do a student in 1 st internship.
Model View Controller Architecture of Java Web Applications Dr. M V S Peri Sastry, Ph.D.[BITS-Pilani]
1 WWW. 2 World Wide Web Major application protocol used on the Internet Simple interface Two concepts –Point –Click.
JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the page is HTML –Dynamic portion is Java Easy way to develop.
IS-907 Java EE World Wide Web - Overview. World Wide Web - History Tim Berners-Lee, CERN, 1990 Enable researchers to share information: Remote Access.
Markus Hjort Reaktor Innovations Java Web Development T WWW-palvelun HUT
HTML Concepts and Techniques Fifth Edition Chapter 4 Creating Tables in a Web Site.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
CS 4720 Model-View-Controller CS 4720 – Web & Mobile Systems.
SEA Side – Extreme Programming 1 SEA Side Software Engineering Annotations Architectural Patterns Professor Sara Stoecklin Director of Software Engineering-
SWAZoo - AIDA A Smalltalk Web Application Server Janko Mivsek Eranova d.o.o. Ljubljana, Slovenia On the sunny side of the Alps.
AJAX and REST. Slide 2 What is AJAX? It’s an acronym for Asynchronous JavaScript and XML Although requests need not be asynchronous It’s not really a.
Web Technology (NCS-504) Prepared By Mr. Abhishek Kesharwani Assistant Professor,UCER Naini,Allahabad.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
Web Design Terminology Unit 2 STEM. 1. Accessibility – a web page or site that address the users limitations or disabilities 2. Active server page (ASP)
Introduction to Programming the WWW I CMSC Winter 2003 Lecture 5.
1 Chapter 22 World Wide Web (HTTP) Chapter 22 World Wide Web (HTTP) Mi-Jung Choi Dept. of Computer Science and Engineering
Apache Struts Technology A MVC Framework for Java Web Applications.
CS320 Web and Internet Programming Web Application and MVC Chengyu Sun California State University, Los Angeles.
INTRODUCTION ABOUT DIV Most websites have put their content in multiple columns. Multiple columns are created by using or elements. The div element is.
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
AIDA/Scribo a powerful CMS at your fingertips!. Contents ● Yet another CMS? ● Architecture ● History ● Scribo at work ● Future.
1993 version of Mosaic browser.
AJAX and REST.
MVC and other n-tier Architectures
Web Software Model CS 4640 Programming Languages for Web Applications
Haritha Dasari Josue Balandrano Coronel -
Web UI Basics ITM 352.
Objective % Explain concepts used to create websites.
WEB API.
Chapter 27 WWW and HTTP.
JavaServer Faces: The Fundamentals
INFS 230 L Internet Technology
Lesson 5: HTML Tables.
Presentation transcript:

Smalltalk Web frameworks Comparison of Aida/Web and Seaside Janko Mivšek janko.mivsek@eranova.si

Vsebina Definition of Web App server Aida’s ideas and architecture Comparison to Seaside Examples Conclusion

Web application server For web applications Dynamic, on-the-fly built web pages Web pages instead of GUI apps Thin clients instead of fat clients Examples: business apps, portals, ...

Swazoo vs. Aida & Seaside SmallWiki

Methods of building web pages Embedded tags into HTML jsp, asp, php Cincom Web Toolkit Programming Java Servlets Struts AIDA/Web, Seaside

Embedded tags – SSP example <html> <head><title>Toyz Employees</title></head> <body> <table border=1> <% employees := (Toyz new) getEmployees. employees do: [:each | response write: ‘<tr>’. response write: (‘<td>’, each number’, ‘</td>’). response write: (‘<td>’, each name, ‘ ‘, each surname, ‘</td>’). response write: ‘</tr>’]. %> </table> </body> </html>

Enbedded commands Pros Cons Simple for web designers Functional logic get lost among presentation logic (HTML) “spaghetti” code – hard to maintain and extend

Programming – two examples Aida: element := WebElement new. element table width: 500; cell color: (self navigatorColor); cell colspan: 3; addText: self title header: 3; newRow; cell colspan: 3; addRulerSize: 1; newRow; cell addText: 'uptime: '; newCell align: #right; addText: (self printSeconds: self session site uptime); newRow. ^self pageFrameWith: element title: self title . Seaside: renderContentOn: html html form: [ html table: [ html tableRowWithLabel: 'Username‘ column: username. html tableRowWithLabel: 'Password' column: [html passwordInputWithCallback: [:v | password := v]]. html tableRowWithLabel: 'Confirm Password' column: [html passwordInputWithCallback: [:v | confirmation := v]]. html spacerRow. html tableRowWith: [ html submitButtonOn: #changePassword of: self. html space. html submitButtonOn: #cancel of: self ] span: 2] ]

Programming Pros Cons Solution: CSS ! No HTML, just one programming language Separation of presentation from model Comonents, reusability Cons Difficult for web designers Difficult to move design into code Solution: CSS !

Aida’s basic ideas Object system = web of objects ... connected with object references World Wide Web = web of pages ... connected with Url links

Aida’s basic ideas Every object should present itself as web page Object references should map to Url links and vice-versa – automatically!

REST arhitectural principle REpresentational State Transfer Web comprised of resources, addressed with Uniform Resource Locators (Url). Example: http://www.eranova.si/aida As answer to request: presentation of resource Only GET, PUT, POST etc W3C Architecture of the World Wide Web http://www.w3.org/TR/2004/WD-webarch-20040705/ Building Web Services the REST Way http://www.xfront.com/REST-Web-Services.html

MVC on Web Model-View-Controler Strict separation of presentation from domain logic Every domain object has its presentation counterpart domain object a WebApp observee domain object

Aida web application Web server (Swazoo) Support services Presentation Url mappings Support services Presentation framework Presentation Security Sessions Model Statistics Admin

Web request path

Seaside concepts Continuations Control flow easily defined Session like process/thread Components: UI state and logic Subroutine-like calls of another components with results returned

Example – counter with Urls Seaside: WACounter renderContentOn: html html heading: count. html anchorWithAction: [self increase] text: '++'. html space. html anchorWithAction: [self decrease] text: '—'. Aida: CounterApp viewMain self addTextH1: self observee count printString; addLinkTo: self observee text: '++' view: #increase; addSpace; addLinkTo: self observee text: '--' view: #decrease. CounterApp viewIncrease self observee increase. self viewMain CounterApp viewDecrease self observee decrease.

Example – counter with buttons Seaside: WACounter renderContentOn: html html form: [ html heading: count. html submitButtonWithAction: [self increment] text: '++'. html space. html submitButtonWithAction: [self decrease] text: '--']. Aida: CounterApp viewMain self addTextH1: self observee count printString; addButtonText: '++' action: #increase; addSpace; addButtonText: '--' action: #decrease. CounterApp actionMainIncrease self observee increase CounterApp actionMainDecrease self observee decrease

Example – counter with dialog Seaside: WACounter decrease count = 0 ifFalse: [count := count - 1] ifTrue: [(self confirm: 'Do you want to go negative?') ifTrue: [self inform: 'Ok, let''s go negative!'. count := -100]].

Seaside programming Pros Cons Flow control in one place Easy “subroutine pages” with results returned Back button supported (really needed?) Cons Not much OO, more procedural programming Url’s not REST-like Cross-linking pages difficult

Aida programming Pros Cons Every domain object has persistent Url Automatic cross-linking of pages REST principle fully supported Cons GOTO like programming for more complex apps control flow not shown in one place Back button not fully supported

Conclusion Aida/web Seaside http://www.eranova.si/aida janko.mivsek@eranova.si Seaside http://www.beta4.com/seaside2/ Avi Briant avi@beta4.com