The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.

Slides:



Advertisements
Similar presentations
DOCUMENT TYPES. Digital Documents Converting documents to an electronic format will preserve those documents, but how would such a process be organized?
Advertisements

JavaScript FaaDoOEngineers.com FaaDoOEngineers.com.
Apache Struts Technology
ARCH-13 Developing WebSpeed  Applications Chris Skeldon Principal Consultant.
ARCH-13: Multiple "Views" with WebSpeed® Chris Skeldon Principal Consultant.
Using EWD to re-purpose a UI Rob Tweed. The Concept You have an existing well-designed and functional web user interface You want to re-purpose it to.
Ps:eScript Framework for Developing Browser-based Applications Matt Verrinder Progress Software UK Internet & Integration Technologies.
DEV-04 Building OpenEdge® Reference Architecture Applications with WebSpeed® Chris Skeldon Principal Consultant.
1 CS 502: Computing Methods for Digital Libraries Lecture 22 Web browsers.
Performed by:Gidi Getter Svetlana Klinovsky Supervised by:Viktor Kulikov 08/03/2009.
Does Ajax suck? CS575 Spring 2007 Chanwit Suebsureekul.
Software Architecture Patterns (2). what is architecture? (recap) o an overall blueprint/model describing the structures and properties of a "system"
DEV-14: Understanding and Programming for the AppServer™
Chapter 10 Publishing and Maintaining Your Web Site.
What’s new in Progress Developer Studio for OpenEdge 11.0?
UNIT-V The MVC architecture and Struts Framework.
Ruby on Rails. What is Ruby on Rails? Ruby on Rails is an open source full-stack web framework. It is an alternative to PHP/MySQL. It can render templates,
Writing All Your Code In OpenEdge Architect Peter van Dam.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
How Progress uses Progress Jordi Sastre IT Architect, Progress Software Corporation 10 June 2014.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
JavaScript & jQuery the missing manual Chapter 11
Introduction to ASP.NET. Prehistory of ASP.NET Original Internet – text based WWW – static graphical content  HTML (client-side) Need for interactive.
Copyright © cs-tutorial.com. Introduction to Web Development In 1990 and 1991,Tim Berners-Lee created the World Wide Web at the European Laboratory for.
Ruth Betcher Ruth Christie
CIS 285 ROBINSON WINTER 2005 CIS 285 Web Application Development with Java CIS 285 Sinclair Community College Instructor: Mary Robinson.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
Chapter 17 - Deploying Java Applications on the Web1 Chapter 17 Deploying Java Applications on the Web.
10 Adding Interactivity to a Web Site Section 10.1 Define scripting Summarize interactivity design guidelines Identify scripting languages Compare common.
Web Programming: Client/Server Applications Server sends the web pages to the client. –built into Visual Studio for development purposes Client displays.
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
1 Accelerated Web Development Course JavaScript and Client side programming Day 2 Rich Roth On The Net
Design and Construction of Accessible Web Sites Michael Burks Chairman Internet Society SIG For Internet Accessibility for People with Disabilities June.
DEV-25: From Box to Development for WSA/AIA/WebSpeed ™ using Tomcat Matt Harrison Senior Software Engineer, Progress OpenEdge.
DEV-5: Introduction to WebSpeed ® Stephen Ferguson Sr. Training Program Manager.
Agenda Architecture Overview Web Security Templates Templates and Style Sheets Details Configuring an Application Demo Summary.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Navigation Framework using CF Architecture for a Client-Server Application using the open standards of the web Kedar Desai presented by.
DEV-16: Leveraging the Power of Advanced GUI Power is nothing without control Erwin in ‘t VeldCCS Tony VertentenIntris Eric DebeijProgress Roland de PijperProgress.
INTRODUCTION TO WEB APPLICATION Chapter 1. In this chapter, you will learn about:  The evolution of the Internet  The beginning of the World Wide Web,
ARCH-11: Building your Presentation with Classes John Sadd Fellow and OpenEdge Evangelist Sasha Kraljevic Principal TSE.
INNOV-7: Building a Richer UI for the Browser Chris Skeldon Senior Solution Consultant.
IS-907 Java EE World Wide Web - Overview. World Wide Web - History Tim Berners-Lee, CERN, 1990 Enable researchers to share information: Remote Access.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Introduction to HTML. _______________________________________________________________________________________________________________ 2 Outline Key issues.
1 Copyright © 2004, Oracle. All rights reserved. Oracle Application Development Framework.
Date : 3/04/2010 Web Technology Solutions Class: PHP Web Application Frameworks.
Asstt. Prof Sonia Sharma Computer Dept 1 HTML ( Hypertext MarkUP Language ) HTML is the lingua franca for publishing hypertext on the World Wide Web.
ARCH-5: Service Interfaces in Practice Christian Stiller Technical Architect.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
Navigation Framework using CF Architecture for a Client-Server Application using the open standards of the Web presented by Kedar Desai Differential Technologies,
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 ASP.NET development. Background ASP released in 1996 ASP supported for a minimum 10 years from Windows 8 release ASP.Net 1.0 released.
Apache Struts Technology A MVC Framework for Java Web Applications.
HTML III (Forms) Robin Burke ECT 270. Outline Where we are in this class Web applications HTML Forms Break Forms lab.
G046 – Lecture 2A Recognising Web-Technologies Mr C Johnston ICT Teacher
Edsel Garcia Shelley Chase Fantastic Web Apps in 11.6 WebSpeed in the Pacific AppServer for OpenEdge.
Case Study: Application Modernization June 27, 2016 Rob Marshall.
INNOV-16: Rich User Interface for the Web???? AJAX to the Rescue Ken Wilner VP of Technology Progress Software.
Teaching slides Chapter 6. Chapter 6 Software user interface design & construction Contents Introduction Graphical user interface – Rich window based.
J2EE Platform Overview (Application Architecture)
Google Web Toolkit Tutorial
PHP Training at GoLogica in Bangalore
PHP + Oracle = Data-Driven Websites
ARCH-13 Developing WebSpeed Applications
ARCH-1: Application Architecture made Simple
Objective Understand web-based digital media production methods, software, and hardware. Course Weight : 10%
Client-Server Model: Requesting a Web Page
Web Client Side Technologies Raneem Qaddoura
Web Application Development Using PHP
Presentation transcript:

The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012

© 2012 Progress Software Corporation. All rights reserved. 2 Introduction  Methodology to write simple but powerful web applications  Based on a true story  It’s not about what my code does, but what your code will do when you write it

© 2012 Progress Software Corporation. All rights reserved. 3 Agenda  Background  Technical Concepts  WebSpeed Best Practice  Demos  Summary

© 2012 Progress Software Corporation. All rights reserved. 4 Background: Once upon a time in PSC-IT…  Numerous WebSpeed applications  Quick to develop and deploy  Different teams, people and coding techniques  Challenging to support and enhance

© 2012 Progress Software Corporation. All rights reserved. 5 Background: Requirements  Single web development methodology  AppServer as a preferred choice for accessing data  Separation of HTML and ABL  No recompilation after HTML change  Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 6 Background: Web Technologies  WebSpeed: CGI wrapper, ABL with embedded HTML SpeedScript, HTML with embedded ABL Mapped Objects, separates ABL and HTML, but at a price They all require recompilation after any ABL or HTML change  Non WebSpeed: New architectures Mixed technologies Low level programming Give up the benefits of OpenEdge ABL Constrained by the framework itself

© 2012 Progress Software Corporation. All rights reserved. 7 Agenda  Background  Technical Concepts  WebSpeed Best Practice  Demos  Summary

© 2012 Progress Software Corporation. All rights reserved. 8 Technical Concepts: OpenEdge Reference Architecture

© 2012 Progress Software Corporation. All rights reserved. 9 Technical Concepts: Service Oriented Architecture

© 2012 Progress Software Corporation. All rights reserved. 10 Technical Concepts: Model-View-Controller (MVC) “Model-View-Controller is the concept introduced by Smalltalk's inventors (Trygve Reenskaug and others) of encapsulating some data together with its processing (the model) and isolate it from the manipulation (the controller) and presentation (the view) part that has to be done on a User Interface.”

© 2012 Progress Software Corporation. All rights reserved. 11 Technical Concepts: Business Logic Separation Client Logic Client Logic Client Logic Client Logic Data Users

© 2012 Progress Software Corporation. All rights reserved. 12 Technical Concepts: Business Logic Separation Client Logic Client Logic Client Logic Client Logic Server Logic Server Logic Client Logic Client Logic Data Users

© 2012 Progress Software Corporation. All rights reserved. 13 Client Logic Client Logic Technical Concepts: Business Logic Separation  Robust data integrity protected from the clients  Server logic in only one place  Server logic is simple (no UI distractions)  Server logic available to multiple clients  Client logic deals with visual elements only  Client logic is simple (no SL distractions) Client Logic Client Logic Server Logic Server Logic Client Logic Client Logic Data Users

© 2012 Progress Software Corporation. All rights reserved. 14 Technical Concepts: Presentation Logic Separation Server Logic Server Logic Client Logic Client Logic Data HTML CSS JS HTML CSS JS Users

© 2012 Progress Software Corporation. All rights reserved. 15 Technical Concepts: Presentation Logic Separation  ABL and HTML might be coded by different developers  No ABL recompilation on HTML changes  ABL is simple (mainly data mapping and front end validation)  HTML is simple (just a page layout) Server Logic Server Logic Client Logic Client Logic Data HTML CSS JS HTML CSS JS Users

© 2012 Progress Software Corporation. All rights reserved. 16 Technical Concepts: Can WebSpeed do it?  How to separate client and server logic? WebSpeed (.w) for client logic, no database access ABL backend (.p) for server logic and data access, available from AppServer or different directory  How can the HTML and ABL be separate? Perl’s lwp-request or ABL gets the HTML from a CMS URL ABL reads HTML and streams it to the WebSpeed output  How can the HTML and ABL exchange data? Tags embedded in the HTML HTML conventions for ABL parsing

© 2012 Progress Software Corporation. All rights reserved. 17 Requirements Review  Single web development methodology  AppServer as a preferred choice for accessing data  Separation of HTML and ABL  No recompilation after HTML change  Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 18 Requirements Review  Single web development methodology WebSpeed CGI wrapper with tags to map data fields  AppServer as a preferred choice for accessing data  Separation of HTML and ABL  No recompilation after HTML change  Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 19 Requirements Review  Single web development methodology WebSpeed CGI wrapper with tags to map data fields  AppServer as a preferred choice for accessing data OpenEdge AppServer  Separation of HTML and ABL  No recompilation after HTML change  Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 20 Requirements Review  Single web development methodology WebSpeed CGI wrapper with tags to map data fields  AppServer as a preferred choice for accessing data OpenEdge AppServer  Separation of HTML and ABL  No recompilation after HTML change ABL streaming and parsing HTML files  Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 21 Requirements Review  Single web development methodology WebSpeed CGI wrapper with tags to map data fields  AppServer as a preferred choice for accessing data OpenEdge AppServer  Separation of HTML and ABL  No recompilation after HTML change ABL streaming and parsing HTML files  Ability to get the HTML from a Content Management System With Perl or ABL  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 22 Requirements Review Single web development methodology AppServer as a preferred choice for accessing data Separation of HTML and ABL No recompilation after HTML change Ability to get the HTML from a Content Management System  Easy to support and maintain

© 2012 Progress Software Corporation. All rights reserved. 23 Additional Decisions  Technologies Cascading Style Sheets (CSS) for consistent look & feel JavaScript for front-end validation and advanced client functionality OpenEdge technology (Database, WebSpeed, AppServer and ABL) HTML independency  Industry standards Separation of code (OERA & MVC) Structured and reusable code (SOA)

© 2012 Progress Software Corporation. All rights reserved. 24 Agenda  Background  Technical Concepts  WebSpeed Best Practice  Demos  Summary

© 2012 Progress Software Corporation. All rights reserved. 25 Architecture WebSpeed.w.html CMS Static web css js gif Static web css js gif Web Browser Web Server AppServer.p PresentationControlData GETPOST Data

© 2012 Progress Software Corporation. All rights reserved. 26 Build include file with WebSpeed flow GetHTML RedirectPage Start End GetFields METHOD Redirect? N N Y Y GetPageProperties DisplayHTML GET POST

© 2012 Progress Software Corporation. All rights reserved. 27 Build include file with WebSpeed flow GetHTML RedirectPage Start End GetFields METHOD Redirect? N N Y Y GetPageProperties DisplayHTML GET POST.w.html.ini

© 2012 Progress Software Corporation. All rights reserved. 28 Build include file with WebSpeed flow GetHTML DisplayPage MergeHTML ProcessPost RedirectPage Start End GetFields METHOD Redirect? N N Y Y GetPageProperties DisplayHTML Initialize.w.html.ini GET POST

© 2012 Progress Software Corporation. All rights reserved. 29 Build include file with WebSpeed flow /* wsbp.i */ {src/web2/wrap-cgi.i} RUN GetPageProperties. PROCEDURE ProcessWebRequest: cPageMessage = "". RUN GetFields. /* Get form fields and cookies */ RUN Initialize. /* Connect AppServer, manage form fields,... */ cPageMessage = RETURN-VALUE. IF cPageMessage = "" THEN DO: IF REQUEST_METHOD = "POST" THEN DO: RUN ProcessPost. /* App logic to validate and process data */ cPageMessage = RETURN-VALUE. IF cPageMessage = "" AND cRedirectUrl <> "" THEN RUN RedirectPage. /* Redirect to next page */ END. IF cPageMessage = "" THEN DO: RUN DisplayPage. /* App logic to display data */ cPageMessage = RETURN-VALUE. END. RUN GetHTML. /* Get HTML from Content Management or file */ RUN DisplayHTML. /* Insert data in HTML and display web page */ QUIT. END PROCEDURE.

© 2012 Progress Software Corporation. All rights reserved. 30 Build the program for my web page /* webpage.w */ CREATE WIDGET-POOL. {wsbp.i "webpage.ini"} RUN ProcessWebRequest. PROCEDURE Initialize: /* App logic always peformed */ RETURN "". END PROCEDURE. PROCEDURE ProcessPost: /* App logic on page submit */ RETURN "". END PROCEDURE. PROCEDURE DisplayPage: /* App logic on display page */ RETURN "": END PROCEDURE. PROCEDURE MergeHTML: /* App logic on HTML lines */ RETURN "". END PROCEDURE.

© 2012 Progress Software Corporation. All rights reserved. 31 Agenda  Background  Technical Concepts  WebSpeed Best Practice  Demos  Summary

© 2012 Progress Software Corporation. All rights reserved. 32 Demo  Demo 1 Minimum HTML file Empty webpage.w WSBP tags  Demo 2 Form fields

© 2012 Progress Software Corporation. All rights reserved. 33 Demo 1 & 2

© 2012 Progress Software Corporation. All rights reserved. 34 Demo 1 & 2  WSBP Tags [[WSBP-MESSAGE]]  Form fields HTML – ABL – GetFieldValue("Login") – SetFieldValue("Login","guest")

© 2012 Progress Software Corporation. All rights reserved. 35 Build include file with WebSpeed flow GetHTML DisplayPage MergeHTML ProcessPost RedirectPage Start End GetFields METHOD Redirect? N N Y Y GetPageProperties DisplayHTML Initialize.w.html.ini GET POST

© 2012 Progress Software Corporation. All rights reserved. 36 wsbp.i Internal Procedures: GetPageProperties CM-URL=C:/_WORK/WSBP/.html APPSERVER=MyAppSrv DATABASE=-db..\WSBP\Database\sports LOGFILE=C:/_WORK/OE110/WSBP.log LOGLEVEL=TRACE CM-URL=C:/_WORK/WSBP/.html APPSERVER=MyAppSrv DATABASE=-db..\WSBP\Database\sports LOGFILE=C:/_WORK/OE110/WSBP.log LOGLEVEL=TRACE.ini wsbp.i DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR. DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR. GetProp() SetProp() GetProp() SetProp().w PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML: PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML:

© 2012 Progress Software Corporation. All rights reserved. 37 wsbp.i Internal Procedures: GetFields [[WSBP-MESSAGE]] [[WSBP-MESSAGE]].html wsbp.i DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR. DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR. GetFieldValue() SetFieldValue() GetFieldValue() SetFieldValue().w PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML: PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML: GET-VALUE

© 2012 Progress Software Corporation. All rights reserved. 38 wsbp.i Internal Procedures: GetHTML [[WSBP-MESSAGE]] [[WSBP-MESSAGE]].html wsbp.i DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR GetFieldValue() SetFieldValue() GetFieldValue() SetFieldValue().w PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML: PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML:

© 2012 Progress Software Corporation. All rights reserved. 39 wsbp.i Internal Procedures: DisplayHTML [[WSBP-MESSAGE]] [[WSBP-MESSAGE]].html wsbp.i DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR DEF TEMP-TABLE ttProp NO-UNDO FIELD ttKey AS CHAR FIELD ttValue AS CHAR. DEF TEMP-TABLE ttWSBPHtml FIELD ttHtmlLine AS CHAR. DEF TEMP-TABLE ttWSBPField FIELD ttFieldName AS CHAR FIELD ttFieldValue AS CHAR GetFieldValue() SetFieldValue() GetFieldValue() SetFieldValue().w PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML: PROCEDURE GetPageProperties: PROCEDURE GetFields: PROCEDURE GetHTML: PROCEDURE DisplayHTML:

© 2012 Progress Software Corporation. All rights reserved. 40 Demo  Demo 3 Access to data logic Automatic tables  Demo 4 CSS and images  Demo 5 HTML low level manipulation

© 2012 Progress Software Corporation. All rights reserved. 41 Demo 3

© 2012 Progress Software Corporation. All rights reserved. 42 Demo 4

© 2012 Progress Software Corporation. All rights reserved. 43 Demo 5

© 2012 Progress Software Corporation. All rights reserved. 44 Demo 3, 4, 5 .w does not deal with database tables  TEMP-TABLE to transfer data between.w and.p  Automatic tables with [[WSBP-TABLE]]  CSS and images  HTML line level manipulation

© 2012 Progress Software Corporation. All rights reserved. 45 Demo  Demo 6 Include files AJAX Web Services

© 2012 Progress Software Corporation. All rights reserved. 46 Demo 6 

© 2012 Progress Software Corporation. All rights reserved. 47 AJAX WebSpeed demo6.w demo6.html Static web css js gif Static web css js gif Web Browser Web Server GetOanda Rate.w PresentationControl & ManagementData GETPOST Oanda Web Service AJAX TopLogo.html 8 8

© 2012 Progress Software Corporation. All rights reserved. 48 AJAX  Small change to the architecture  No POST  Asynchronous mechanism improves presentation  JavaScript coding

© 2012 Progress Software Corporation. All rights reserved. 49 Demo  Demo 7 Mashup

© 2012 Progress Software Corporation. All rights reserved. 50 Demo 7

© 2012 Progress Software Corporation. All rights reserved. 51 Google Maps  JavaScript provided by Google  Display or hide HTML blocks  Enable links in HTML table

© 2012 Progress Software Corporation. All rights reserved. 52 Agenda  Background  Technical Concepts  WebSpeed Best Practice  Demos  Summary

© 2012 Progress Software Corporation. All rights reserved. 53 Summary  WebSpeed is easy if you design it easy  Bring order to the chaotic web world  Think OERA, SOA, MVC: Separate code  Hide low level code and provide higher level functions, in libraries or include files  Load libraries as persistent procedures  Keep it simple