Products Under Development This talk includes information about potential future products and/or product enhancements. What I am going to say reflects our current thinking, but some information contained herein is preliminary and subject to change. Any future products we ultimately deliver may be materially different from what is described here. In other words - you can’t believe everything I’m going to say. D 1 I S C L A I M E R © 2002, Progress Software Corporation The Web Services Development Toolkit J. Espen Stokke estokke@progress.com Professional Services Manager, Norway Agenda Integration Introduction OpenEdge, Web Services WSTK Architecture Developing & Deployment with the WSTK Connection Management Open Client Object Model Demo..... That's All Folks… 3 © 2002, Progress Software Corporation Progress OpenEdge : Enkelt, Integrert, Åpent Progress Dynamics™ Actuate WebClient CorVu WebSpeed Progress Report Builder 4GL Open Client Query/Results GUI/ChUI SonicMQ • SonicXQ FathomTM ProVisionTM WebSpeed Workshop Applications Web Services Dev. Toolkit AppServer WebSpeed Transaction Server RDBMS DataServers 4 © 2002, Progress Software Corporation OpenEdge Integration SonicMQ & SonicXQ Web Services Development Toolkit “Using Web services will help reduce costs and improve the efficiency of IT projects by 30 percent.” Daryl Plummer Sr. VP, Gartner Group 5 © 2002, Progress Software Corporation Integration One definition of a Web Service An application that can be accessed over the Web or any network from another application using RPC style calls encoded using SOAP over HTTP where the interface can be described using WSDL. “Web Services is the telephone for applications.” How is the weather in Bedford? 6 © 2002, Progress Software Corporation Web Services Integration “Logical Model” Service Producer (Server) – Develops, publishes & deploys the Web Service Service Registry – Directory of Web Services Service Consumer (Client) – Locates & uses Web Services 7 © 2002, Progress Software Corporation Integration Web Services Standards HTTP Hypertext Transfer Protocol – Protocol for sending data over the Web XML eXtensible Markup Language – Standard way to represent & exchange data SOAP Simple Object Access Protocol – XML based messaging protocol (eg. RPCs) – An extensible message format WSDL Web Service Description Language – XML based language – A Service Description language UDDI – A standard for Web Service registries – A way to discover Web Service providers 8 © 2002, Progress Software Corporation Integration HTTP Hypertext Transfer Protocol Stateless, connectionless, request/reply protocol Use is ubiquitous throughout the internet Most commonly used methods: – GET used for most web pages Client can send some data in URL parameters – POST allows client to send arbitrary body of data HTML forms are a commonly found example Common Web Service usage: – Request/response via POST method – Body contains data (eg. SOAP message) 9 Can pass through most firewalls © 2002, Progress Software Corporation XML Integration eXtensible Markup Language Self-describing Easy to use Structured International Can be validated – DTD, XML Schema Many tools avail for most platforms, languages Not inherently associated with presentation semantics – More flexible than HTML 10 © 2002, Progress Software Corporation XML Example Integration <?xml version="1.0" encoding="UTF-8"?> <Customer type=“partner”> <Custnum>5</Custnum> <Name>Go Fishing Ltd</Name> <Address2>83 Ponders End Rd</Address2> <City>Harrow</City> <State>Middlesex</State> <PostalCode>HA8 3LU</PostalCode> <Balance>14235.14</Balance> </Customer> 11 © 2002, Progress Software Corporation SOAP Integration Simple Object Access Protocol XML based messaging Typically used for RPCs over HTTP Language and platform independent Request/Response W3C Note – defacto standard http://www.w3.org/TR/SOAP 12 © 2002, Progress Software Corporation SOAP Integration Simple Object Access Protocol SOAP Envelope SOAP Header – Mechanism for appspecific extensions SOAP Header App-Specific Header Elements SOAP Body – Main business content – Usually uses SOAP encoding 13 SOAP Envelope SOAP Body App-Specific Body Elements © 2002, Progress Software Corporation Integration SOAP Example Stock Quote Web Service – Request Message <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <getQuote xmlns="http://some-site.com"> <symbol xsi:type="xsd:string">qadi</symbol> </getQuote> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 14 © 2002, Progress Software Corporation SOAP Example Integration Stock Quote Web Service – Reply Message <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <getQuoteResponse "xmlns="http://www.some-site.com/"> <getQuoteResult xsi:type="xsd:float">99.8503</getQuoteResult> </getQuoteResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 15 © 2002, Progress Software Corporation WSDL Integration Web Service Description Language 16 What can it do? How do I invoke it? Where does it reside? © 2002, Progress Software Corporation WSDL Integration Web Service Description Language Specifies interface – Business methods that can be invoked (“operations”) – Message structure for each method Data fields, types – Bindings for the operations 17 eg. SOAP over HTTP Identifies network address of Web Service © 2002, Progress Software Corporation Integration Web Services How is the weather in Bedford? Machine A 1. Web service is built and deployed, ready to be published. GetWeather WS 2. Web service made available to public, by publishing its WSDL to a UDDI registry 5. Client makes info request directly to service UDDI Registry CreditChk 6. Service sends result back to client Machine C Client 18 Machine B 3. Client searches for available weather services GetWeather 4. Client finds access info about GetWeather © 2002, Progress Software Corporation Agenda Integration Web Services WSTK Architecture Developing & Deployment with the WSTK Connection Management Open Client Object Model That's All Folks… 19 © 2002, Progress Software Corporation Integration Web Services Toolkit Roadmap Phase 1 – Web Service-enabled AppServer – Web Service Client is another Open Client Phase 2 – 4GL to a Web Service – It’s just like calling another AppServer, e.g. RUN foo on SERVER web-service-hdl. 20 © 2002, Progress Software Corporation Web Services Toolkit Integration Phase 1 21 Generate a WSDL file for an AppServerbased application based on the Open Client programming model Runtime infrastructure so that an AppServer can be accessed as a Web Service © 2002, Progress Software Corporation Integration Web Services Toolkit Components 22 Web Services Adapter (WSA) WSTK enhanced ProxyGen WSTK enhanced Progress Explorer © 2002, Progress Software Corporation Web Services Toolkit Runtime Architecture Integration POST(Soap) Response(Soap) WSDL Files 23 Web Services Adapter Web Service Client HTTP Listener Web Server (JSE) AppServers WSADs ubroker.properties © 2002, Progress Software Corporation Web Services Adapter 24 Integration Progress provided Java Servlet Can use any Web Server and JSE that supports the JSE V2.2 specification Manages all communications between a Web Service client and an AppServer Converts a SOAP request to an AppServer request using a Web Service Application descriptor (WSAD) One WSAD deployed for each application Configured using Progress Explorer © 2002, Progress Software Corporation WSAD Integration One WSAD per application identified by XML namespace Conceptually similar to Open Client proxies Includes: – Application service to use – 4GL procedure to call for each SOAP request – Parameter and datatype information 25 Deployed to a WSA and maintained persistently © 2002, Progress Software Corporation Agenda Integration Web Services WSTK Architecture Developing & Deployment with the WSTK Connection Management Open Client Object Model That's All Folks… 26 © 2002, Progress Software Corporation Integration Deployment Site ? 4GL ProxyGen WSM ? GET WSDL Development Site Soap Request/Response Deploying an Application HTTP Listener Progress Explorer Web Server Site Web Services Adapter WSM WSM WSDLs 27 WSADs © 2002, Progress Software Corporation Integration Development Site 4GL .r files Business logic ProxyGen Proxies Web Services Mapping File Java classes ActiveX 28 © 2002, Progress Software Corporation Integration Development Site Step 1: Prepare Application For Deployment Using ProxyGen – Create ProxyObjects AppObject (One) SubAppObjects (Optional – many) ProcObjects (Optional – many) – Initiate generation of Web Service Mapping (WSM) file – Specify whether application is session managed or session free – more on this later 29 Package the AppServer application for deployment including the WSM file © 2002, Progress Software Corporation Web Server Site Integration Step 2: Configure WSA for access Install JSE at Web Server as required Install Web Services Adapter (WSA) within JSE Configure WSA by editing ubroker.properties or using Progress Explorer – Log file – URL of WSA instance – Controlling NameServer 30 © 2002, Progress Software Corporation Deployment Site Integration Step 3: Run Progress Explorer to Deploy Application Specify: – WSA instance to use – Location of WSM – WSDL Generation Info Target namespace WSDL Encoding – Application Service of corresponding AppServer Results in: – WSM being sent to WSA instance along with WSDL generation info – WSDL and WSAD being generated by WSA instance – WSAD being loaded so application is available for access 31 © 2002, Progress Software Corporation Integration Web Services Communication Model Web Server Web Service Client App Servers HTTP Post HTTP Response Business Logic .NET Java Perl WSDLs 32 WSADs Database Server © 2002, Progress Software Corporation Integration Web Services Communication Model, cont. 33 Client sends a SOAP request to the WSA The WSA maps the request to a procedure on the AppServer using the WSAD The WSA asks the AppServer to run the procedure The WSA creates a SOAP response or fault and sends it to the client Remember - No Progress code on the client!! © 2002, Progress Software Corporation Agenda Integration Web Services WSTK Architecture Developing & Deployment with the WSTK Connection Management Open Client Object Model That's All Folks… 34 © 2002, Progress Software Corporation Connection Management Integration Specified via ProxyGen Session Managed – State-aware – State-reset – Stateless 35 Session Free © 2002, Progress Software Corporation Integration Stateless AppServer Web Services Client Connect Connect WSA Web Services Client 36 Connect Application Server Application Broker Application Server © 2002, Progress Software Corporation Integration Stateless AppServer Web Services Client RUN cust RUN cust WSA Web Services Client 37 RUN Part RUN cust Application Server Application Broker RUN Part RUN Part Application Server © 2002, Progress Software Corporation Integration Stateless AppServer Web Services Client Application Server WSA Web Services Client 38 Application Broker Application Server © 2002, Progress Software Corporation Integration Session Free AppServer Web Services Client RUN cust RUN cust WSA Web Services Client 39 RUN Part RUN cust Application Server Application Broker RUN Part RUN Part Application Server © 2002, Progress Software Corporation Integration Session Free AppServer Web Services Client Application Server WSA Web Services Client 40 Application Broker Application Server © 2002, Progress Software Corporation Agenda Integration Web Services WSTK Architecture Deploying an Application with the WSTK Connection Management Open Client Object Model That's All Folks… 41 © 2002, Progress Software Corporation Open Client Object Model Integration Object types: – ApplicationObjects (AppObjects) – Sub-ApplicationObjects (Sub-AppObjects) – ProcedureObjects (ProcObjects) Objects are used to: – Provide access to the 4GL logic running on the AppServer – Provide runtime context (if necessary) Application Object 42 Procedure Object SubAppObject © 2002, Progress Software Corporation AppServer Session Model Integration Session Managed – Connection is established by the client – Connection is dedicated by the WSA to the AppServer for that client – AppServers today follow this model (state-aware, state-reset, stateless) Session Free – No connection required – Pool of network resources in the WSA shared by all clients – Web Services design center (state-free) 43 © 2002, Progress Software Corporation Object Relationships at Runtime: Session Managed Procedure Object SubAppObject Integration Proc1 Proc2 FuncX MethodX Application Object Procedure Object Procedure Object Method1 Method2 47 Call Connect on AppObject first to establish connection All objects share single connection Context information must be managed by client Connection maintained until all objects released © 2002, Progress Software Corporation Object Relationships at Runtime: Session Free Procedure Object SubAppObject Integration Proc1 Proc2 FuncX MethodX Application Object Procedure Object Procedure Object Method1 Method2 48 Simply call methods on the AppObject to run nonpersistent procedures No context information for AppObject Warning: ProcObjects and Sub-AppObjects force connection and context management – Not recommended! © 2002, Progress Software Corporation A Look at ProxyGen Integration ProxyGen works the same for Web Services as it does for Java and ActiveX Define the Objects and generate the proxy for the client (WSM/WSDL) New deployment step required in Progress Explorer 49 © 2002, Progress Software Corporation Integration ProxyGen: Select 4GL Procedures Select the 4GL procedures for each object Optionally customize the procedure definition 50 © 2002, Progress Software Corporation ProxyGen: Generate Integration Select Web Services Client Select Session Model 51 © 2002, Progress Software Corporation ProxyGen: Generate Integration Enter initial deployment information: – Namespace – WSA URL – SOAP Action – Test WSDL Generate the “proxy” 52 © 2002, Progress Software Corporation Required Information for Web Services Generation Integration Namespace – Unique identifier for the Web Service – Must be unique at the WSA instance WSA URL – URL identifying the location of the WSA SOAP Action – May be blank, client may need Test WSDL – Supports a single style/use 53 © 2002, Progress Software Corporation Integration Generating the “Proxy” Proxy Generation for Web Services – Uses the 4GL code to generate a Web Services Mapping (WSM) file – Optionally generates a Test WSDL file Deployment Phase – – – – Done in Progress Explorer or wsaman Converts the WSM file to a WSAD Deployer can change ProxyGen settings WSDL available through the WSA http://localhost:8080/wsa/wsa1/wsdl?targetURI=OrderService 54 © 2002, Progress Software Corporation Integration Summary Web Service enabled AppServer based on Open Client model Progress provides the technology you need so you can focus on your business and application requirements Web Services coming to an application near you soon 55 © 2002, Progress Software Corporation Integration Questions 57 © 2002, Progress Software Corporation