540 likes | 677 Views
Products Under Development. D I S C L A I M E R. This talk includes information about potential future products and/or product enhancements.
E N D
Products Under Development D I S C L A I M E R • 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.
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…
Progress OpenEdge : Enkelt, Integrert, Åpent Applications Progress Dynamics™ Actuate CorVu Report Builder Query/Results WebClientWebSpeedOpen ClientGUI/ChUI Progress4GL ProVisionTM WebSpeed Workshop FathomTM SonicMQ • SonicXQ Web Services Dev. Toolkit AppServer WebSpeed Transaction Server RDBMSDataServers
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
One definition of a Web Service Integration “Web Services is the telephone for applications.” 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. How is the weather in Bedford?
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
Web Services Standards Integration • HTTPHypertext Transfer Protocol • Protocol for sending data over the Web • XMLeXtensible Markup Language • Standard way to represent & exchange data • SOAPSimple Object Access Protocol • XML based messaging protocol (eg. RPCs) • An extensible message format • WSDLWeb Service Description Language • XML based language • A Service Description language • UDDI • A standard for Web Service registries • A way to discover Web Service providers
HTTP Integration 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) • Can pass through most firewalls
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
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>
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
SOAP SOAP Envelope SOAP Header App-Specific Header Elements SOAP Body App-Specific Body Elements Integration Simple Object Access Protocol • SOAP Envelope • SOAP Header • Mechanism for app-specific extensions • SOAP Body • Main business content • Usually uses SOAP encoding
SOAP Example Integration 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>
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>
WSDL Integration Web Service Description Language • What can it do? • How do I invoke it? • Where does it reside?
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 • eg. SOAP over HTTP • Identifies network address of Web Service
Web Services 1. Web service is built and deployed, ready to be published. 2. Web service made available to public, by publishing its WSDL to a UDDI registry Machine B 5. Client makes info request directly to service UDDI Registry GetWeather WS CreditChk 6. Service sends result back to client 3. Client searches for available weather services Machine C GetWeather 4. Client finds access info about GetWeather Client Integration How is the weather in Bedford? Machine A
Agenda Integration Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model That's All Folks…
Web Services Toolkit Roadmap • RUN foo on SERVER web-service-hdl. Integration • 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.
Web Services Toolkit Integration Phase 1 • Generate a WSDL file for an AppServer-based application based on the Open Client programming model • Runtime infrastructure so that an AppServer can be accessed as a Web Service
Web Services Toolkit Components Integration • Web Services Adapter (WSA) • WSTK enhanced ProxyGen • WSTK enhanced Progress Explorer
Web Services Toolkit Runtime Architecture POST(Soap) Response(Soap) Integration Web Server (JSE) Web Service Client HTTP Listener Web Services Adapter AppServers WSADs WSDLFiles ubroker.properties
Web Services Adapter 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
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 • Deployed to a WSA and maintained persistently
Agenda Integration Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model That's All Folks…
Deploying an Application Integration Development Site Deployment Site Soap Request/Response GET WSDL ? ? 4GL WSM HTTP Listener ProgressExplorer Web Server Site ProxyGen Web Services Adapter WSM WSM WSDLs WSADs
Web Services Mapping File Java classes ActiveX Integration Development Site 4GL .r files Business logic ProxyGen Proxies
Development Site Integration 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 • Package the AppServer application for deployment including the WSM file
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
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
Web Services Communication Model App Servers Business Logic Database Server Integration Web Server WSA Web Service Client HTTP Post “Open Client Runtime” HTTP Listener HTTP Response .NET Java Perl WSDLs WSADs
Web Services Communication Model, cont. Integration • 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!!
Agenda Integration Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model That's All Folks…
Connection Management Integration Specified via ProxyGen • Session Managed • State-aware • State-reset • Stateless • Session Free
Stateless Connect Application Server Connect Connect WSA Application Server Integration AppServer Web Services Client Application Broker Web Services Client
Stateless RUN cust Application Server RUN cust RUN cust WSA Application Server RUN Part RUN Part RUN Part Integration AppServer Web Services Client Application Broker Web Services Client
Stateless Application Server WSA Application Server Integration AppServer Web Services Client Application Broker Web Services Client
Session Free RUN cust Application Server RUN cust RUN cust WSA Application Server RUN Part RUN Part RUN Part Integration AppServer Web Services Client Application Broker Web Services Client
Session Free Application Server WSA Application Server Integration AppServer Web Services Client Application Broker Web Services Client
Agenda Integration Web Services WSTK Architecture Deploying an Application with the WSTK Connection Management Open Client Object Model That's All Folks…
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 Procedure Object Sub- AppObject
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)
Object Relationships at Runtime: Session Managed Integration Procedure Object Proc1 Proc2 FuncX Sub- AppObject • 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 MethodX Procedure Object Application Object Procedure Object Method1 Method2
Object Relationships at Runtime: Session Free Integration Procedure Object Proc1 Proc2 FuncX Sub- AppObject • Simply call methods on the AppObject to run non-persistent procedures • No context information for AppObject • Warning: ProcObjects and Sub-AppObjects force connection and context management – Not recommended! MethodX Procedure Object Application Object Procedure Object Method1 Method2
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
ProxyGen: Select 4GL Procedures Integration Select the 4GL procedures for each object Optionally customize the procedure definition
ProxyGen: Generate Integration Select Web Services Client Select Session Model
ProxyGen: Generate Integration Enter initial deployment information: • Namespace • WSA URL • SOAP Action • Test WSDL Generate the “proxy”
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