Server Access The REST of the Story David Cleary

Slides:



Advertisements
Similar presentations
Pierre-Johan CHARTRE Java EE - JAX-RS - Pierre-Johan CHARTRE
Advertisements

1. XP 2 * The Web is a collection of files that reside on computers, called Web servers. * Web servers are connected to each other through the Internet.
1 Senn, Information Technology, 3 rd Edition © 2004 Pearson Prentice Hall James A. Senns Information Technology, 3 rd Edition Chapter 7 Enterprise Databases.
C2: Introduction to OpenEdge® Integration Technologies
Give it a REST already Arnon Rotem-Gal-Oz VP R&D xsights
Copyright © 2003 Pearson Education, Inc. Slide 1 Computer Systems Organization & Architecture Chapters 8-12 John D. Carpinelli.
Chapter 1 The Study of Body Function Image PowerPoint
1 Copyright © 2013 Elsevier Inc. All rights reserved. Chapter 1 Embedded Computing.
Copyright © 2011, Elsevier Inc. All rights reserved. Chapter 6 Author: Julia Richards and R. Scott Hawley.
Author: Julia Richards and R. Scott Hawley
1 Copyright © 2013 Elsevier Inc. All rights reserved. Appendix 01.
Properties Use, share, or modify this drill on mathematic properties. There is too much material for a single class, so you’ll have to select for your.
Document #07-2I RXQ Customer Enrollment Using a Registration Agent (RA) Process Flow Diagram (Move-In) (mod 7/25 & clean-up 8/20) Customer Supplier.
1 Hyades Command Routing Message flow and data translation.
19 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Developing Web Services.
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
4 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: Servlets.
11 Copyright © 2005, Oracle. All rights reserved. Creating the Business Tier: Enterprise JavaBeans.
System Wide Information Management (SWIM)
Introduction to HTML, XHTML, and CSS
Exit a Customer Chapter 8. Exit a Customer 8-2 Objectives Perform exit summary process consisting of the following steps: Review service records Close.
Excel Functions. Part 1. Introduction 2 An Excel function is a formula or a procedure that is performed in the Visual Basic environment, outside the.
INTERNET PROTOCOLS Class 9 CSCI 6433 David C. Roberts Entire contents copyright 2011, David C. Roberts, all rights reserved.
Representational State Transfer (REST): Representing Information in Web 2.0 Applications this is the presentation Emilio F Zegarra CS 2650.
Service Oriented Architecture
Introduction to Web Services
Web Service Testing RESTful Web Services Snejina Lazarova Dimo Mitev
Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be.
CS 4720 RESTfulness CS 4720 – Web & Mobile Systems.
22 мая 2013, Киев Построение Windows 8 приложений для доступа к SharePoint 2013 Бельский Сергей.
RESTful Web Services Senthil Chinnaiyan, Senior Architect
REVIEW: Arthropod ID. 1. Name the subphylum. 2. Name the subphylum. 3. Name the order.
© Telcordia Technologies 2004 – All Rights Reserved AETG Web Service Tutorial AETG is a service mark of Telcordia Technologies. Telcordia Technologies.
1 The phone in the cloud Utilizing resources hosted anywhere Claes Nilsson.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 31 Slide 1 Service-centric Software Engineering.
© 2011 TIBCO Software Inc. All Rights Reserved. Confidential and Proprietary. Towards a Model-Based Characterization of Data and Services Integration Paul.
Vanderbilt Business Objects Users Group 1 Reporting Techniques & Formatting Beginning & Advanced.
Copyright 2007, Information Builders. Slide 1 Introduction to Web Services Efrem Litwin Director, WebFOCUS Integration Products Information Builders.
IP Multicast Information management 2 Groep T Leuven – Information department 2/14 Agenda •Why IP Multicast ? •Multicast fundamentals •Intradomain.
VOORBLAD.
IONA Technologies Position Paper Constraints and Capabilities for Web Services
Factor P 16 8(8-5ab) 4(d² + 4) 3rs(2r – s) 15cd(1 + 2cd) 8(4a² + 3b²)
Basel-ICU-Journal Challenge18/20/ Basel-ICU-Journal Challenge8/20/2014.
31242/32549 Advanced Internet Programming Advanced Java Programming
© 2012 National Heart Foundation of Australia. Slide 2.
Executional Architecture
Template v5 October 12, Copyright © Infor. All Rights Reserved. 1 Learn LN User interface concepts Bram Vijfhuizen Principal.
Macromedia Dreamweaver MX 2004 – Design Professional Dreamweaver GETTING STARTED WITH.
XP New Perspectives on Browser and Basics Tutorial 1 1 Browser and Basics Tutorial 1.
Presentation 7 part 2: SOAP & WSDL.
©Brooks/Cole, 2001 Chapter 12 Derived Types-- Enumerated, Structure and Union.
Chapter 12 Working with Forms Principles of Web Design, 4 th Edition.
Intracellular Compartments and Transport
PSSA Preparation.
Essential Cell Biology
Introduction Peter Dolog dolog [at] cs [dot] aau [dot] dk Intelligent Web and Information Systems September 9, 2010.
REST support for B2B access to your AppServer PUG Challenge Americas Michael Jacobs : Senior Software Architect Edsel Garcia : Principal Software.
Scale Up Access to your 4GL Application using Web Services
A New Object Model for WebSpeed and HTTP
1 Seminar on Service Oriented Architecture Principles of REST.
INT-9: Implementing ESB Processes with OpenEdge ® and Sonic ™ David Cleary Principal Software Engineer.
A New Object Model for WebSpeed and HTTP
RESTful Web Services What is RESTful?
Web Technologies Lecture 10 Web services. From W3C – A software system designed to support interoperable machine-to-machine interaction over a network.
REST- Representational State Transfer Enn Õunapuu
Ashish Pandit IT Architect, Middleware & Integration Services
WEB API.
WCF Data Services and Silverlight
Presentation transcript:

Server Access The REST of the Story David Cleary Principal Software Engineer June 12, 2013

OE Mobile Tooling

Rest Adapter Tooling

OE Mobile Tooling

Rest Adapter Tooling

Agenda Why REST? REST Architectural Overview What is RESTful in the Progress World RESTing your Progress Servers Demo

Key Takeaways Understanding of RESTful Application Principals Knowing when to REST or not What OpenEdge provides in 11.2 and later to REST

Architecture or Protocol? HTTP HyperText Transfer Protocol Defines text-based message format and exchange protocol Foundation for communications in the cloud SOAP Simple Object Access Protocol Defines an XML-based message format and exchange protocol Specifies bindings to HTTP and other transports REST Representational State Transfer Style of software architecture for distributed systems Describes the architecture of HTTP Predominate web API design model

REST Architecture There is no REST Specification REST does not define a message format REST does not define a message exchange protocol REST is stateless Each client request contains all the information to service the request REST is resource-based Resources are identified by URI (Uniform Resource Identifier) Server provides a representation of resource to client Client can manipulate resource on server through the representation CRUD Model Create, Read, Update and Delete

What is a Resource?

REST Web Services Uses HTTP as its protocol Resource identification through URI Uniform interface (GET, PUT, POST, DELETE) Typically uses JSON or XML as message format Every interaction with a resource is stateless

RESTful Web Services vs. SOAP Resource based Lighter weight Can use JSON or XML Contract via documentation Procedural Contains more details Uses XML Contract via WSDL When to use SOAP Intranet applications – More mature tooling B2B applications – Strong contract Exposing existing applications When to use REST Cloud-based and mobile applications Creating highly scalable stateless applications For Progress, the decision to add support for REST Web services in OpenEdge was made based on industry trends. For example, REST is the most common way to make Web service calls to cloud based applications. The obvious question is why has REST become the protocol of choice when sending and receiving data be between clients and cloud based services. One answer is low overhead and simplicity. Just to focus on a few areas …. The SOAP protocol provides an interface that can be though of as procedural and utilizes XML to send and receive information. Data types can be defined in SOAP indicating how to interpret the data. REST, on the other hand, - is resource based, relying in a URI to locate a resource. OpenEdge REST utilizes - the JSON format to transmit data. JSON uses name and value pairs for all data. This simpler protocol - reduces the amount of data that needs to be sent over the wire, resulting in improved network performance. Note: The difference: SOAP is transport neutral, while REST is tied tightly to HTTP.    SOAP is only XML, and REST can be any media type. SOAP uses formal interface definitions (WSDL) while REST does not (WADL is not enough yet to qualify) The choice:  Use SOAP for B2B where an agreed contract (WSDL) is versioned and must be met by all parties.    Use REST where agreement is less firm between clients and the provider.

Scientific Approach to Choosing REST Rules The Cloud 21 Decisions and 64 alternatives WWW2008 ©2008 Cesare Pautasso

Scientific Approach to Choosing REST Rules The Cloud 21 Decisions and 64 alternatives WWW2008 ©2008 Cesare Pautasso

Agenda Why REST? REST Architectural Overview What is RESTful in the Progress World RESTing your Progress Servers Demo

Progress REST Support WebSpeed OpenEdge Reference Architecture (OERA) Supporting RESTful applications since 1997 No tooling support specific to REST – Developer must do everything OpenEdge Reference Architecture (OERA) Business Entities are resources AutoEdge a RESTful application OpenEdge REST Adapter Delivered as part of OpenEdge 11.2 Progress DataDirect Cloud

OpenEdge Reference Architecture Presentation Enterprise Services Business Components Data Access Data Sources Common Infrastructure Workflow Task Entity Speaking of the OERA …. What is it? The OpenEdge Reference Architecture (OERA) defines the general functional categories of components that comprise an application. It can be used as a high-level blueprint for developing OpenEdge service-oriented business applications. Each layer of the OERA consists of distinct components, each with specific characteristics, roles and responsibilities. In addition, the OERA provides guidelines as to how each of the architectural components interacts. The diagram shows these, and while it may seem complicated, the purpose of it is to simplify things: how the investment of breaking up the operation into different functional layers can benefit and simplify your application development. In addition, one of the nice things about using a layered approach is that you can make a slow transformation to a layered application, and once there, change parts out without requiring wholesale changes to your application.

OpenEdge Reference Architecture Presentation Enterprise Services Business Components Data Access Data Sources Common Infrastructure Workflow Task Entity Speaking of the OERA …. What is it? The OpenEdge Reference Architecture (OERA) defines the general functional categories of components that comprise an application. It can be used as a high-level blueprint for developing OpenEdge service-oriented business applications. Each layer of the OERA consists of distinct components, each with specific characteristics, roles and responsibilities. In addition, the OERA provides guidelines as to how each of the architectural components interacts. The diagram shows these, and while it may seem complicated, the purpose of it is to simplify things: how the investment of breaking up the operation into different functional layers can benefit and simplify your application development. In addition, one of the nice things about using a layered approach is that you can make a slow transformation to a layered application, and once there, change parts out without requiring wholesale changes to your application.

AutoEdge

OpenEdge REST Adapter Machine B Progress Developer Studio for OpenEdge Machine A HTTP Web Server OpenEdge Explorer / OpenEdge Management Java container RESTMAN /command line REST Management Agent Machine C REST Client #1 REST Application #1 OpenEdge AppServer REST Client #2 REST Application #2 OpenEdge AppServer REST Client #3 REST Application #3 OpenEdge AppServer

Agenda Why REST? REST Architectural Overview What is RESTful in the Progress World RESTing your Progress Servers Demo

Applications and Services Service - A collection of operations on a set of resources Create – Create a new resource Read – Retrieve an existing resource Update – Update an existing resource Delete – Delete an existing resource An OpenEdge REST Application supports one or more services Compiled into a Java WAR file

The URL Space http://api-public.netflix.com/catalog/titles?term=Ironman Protocol: HTTP DNS System Name: api-public.netflix.com Service Name: catalog Resource Name: titles URL Parameters: term=Ironman http://localhost:8980/Application/rest/Service/Resource Additional information required HTTP Verb (GET, PUT, POST, and DELETE) Optional body Media type

HTTP GET Retrieves a resource or resource locators identified by a URL Client identifies what media type[s] it wants via Accept header application/json only type supported currently by OpenEdge Input parameters specified in URL Path parameters URL Parameters Additional parameter support HTTP Headers Additional metadata from request context Does not support sending a body

HTTP POST Creates a new resource on server Typically uses URL of parent resource Requires a body that represents resource OpenEdge limited to application/json Can support path and URL parameters OpenEdge supports mapping individual parameters extracted from a JSON body Returns representation of new resource if accepted by the server

HTTP PUT Updates an existing resource on server Uses URL of resource, unlike POST Can create new resource at location specified by client, but not recommended Idempotent – Identical requests have same effect as a single request

HTTP DELETE Deletes the resource identified on the server Also Idempotent

Message Bodies Bodies must be JSON Map TempTables and Datasets directly to bodies Map CHARACTER and LONGCHARS to bodies Custom JSON objects Multiple parameters in body supported by request and response objects Input parameters extracted and passed to AppServer Output parameters added to response object Only one level deep

HTTP DELETE Deletes the resource identified on the server Also Idempotent

Message Bodies Bodies must be JSON Map TempTables and Datasets directly to bodies Map CHARACTER and LONGCHARS to bodies Custom JSON objects Multiple parameters in body supported by request and response objects Input parameters extracted and passed to AppServer Output parameters added to response object Only one level deep

Service Interfaces Identify the entities you want to expose Map these entities to your URL space Determine what CRUD operations are applicable to what resources Document the representation of your resources Avoid verbs, but not at the cost of complexity

Sessions and Identity Management Authentication, Authorization, and Session Management done at Web Server Uses Spring Security Framework 3.1 Supports internal and external authentication providers For production, you want stateful sessions Web Server sessions, not AppServer Done through JSESSIONID cookie Must use AppServer SSO if you want identity on AppServer Spring creates sealed ClientPrincipal

Agenda Why REST? REST Architectural Overview What is RESTful in the Progress World RESTing your Progress Servers Demo

CRM Application Resources Techniques used Customers Orders CustomerOrders Techniques used Hyperlinks (Locators) HTTP Response Code Multiple parameter bodies

CRM Application Resources Techniques used Customers Orders CustomerOrders Techniques used Hyperlinks (Locators) HTTP Response Code Multiple parameter bodies

www.progress.com/exchange-pug October 6–9, 2013 • Boston #PRGS13 Special low rate of $495 for PUG Challenge attendees with the code PUGAM And visit the Progress booth to learn more about the Progress App Dev Challenge!

Change color