630 likes | 651 Views
This talk provides insights into the architecture transformation in OpenEdge and Web Services WSTK, focusing on developing and deploying with the WSTK, managing connections, and exploring the Open Client Object Model.
E N D
“Products Under Development”Technical Preview 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 Architecture Transformation 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
Architecture Transformation Distributed Client Architecture Evolution AppServer Business Process Business Process Business Process Application development and application architectures have had an interesting and sometimes painful evolution Process-OrientedApplications HostCentric ClientServer • Service-Oriented Architecture (SOA) is the next-generation interoperation methodology • Technologies such as Web services are a means to that end
Development Transformation Distributed Client Interface Drives the Process AppServer Business Process Business Process Business Process • Traditional application development is from “outside in” • Integration and service orientation require process-centric logic Process-OrientedApplications HostCentric ClientCentric Process Drives the Interface • Process-centric applications require new methods of development • Processes (procedures) are services to and from any client, server, or application
The Applications Business Process Business Process Business Process Coarse-grained, loosely-coupled business processes Application Module Too Large Business Process Process-OrientedApplications Just Right Data Update Logic Too Small
An Application Requires Process-centric design 3 Strategic Elements Logic Platform ESBEnabled User Interface Freedom
User Interface Freedom Access to applications User Interface Freedom • to deploy the interface of choice • to construct or define user interfaces • to respond to competitive pressures • to operate without a user interface! .NET Integration Web Services Open Client Tools Progress ChUI, GUI, Web
ESB Enabled Application components as services OpenEdge Application J2EE Application • Support for Web Services • Support for SonicXQ • Fast Development of New Services Dynamics for SOA XQ Service Container .NET Application XML to 4GL / XML to Storage 4GL to Web Services Integration Web Services ToolKit (WSTK)
Business Logic Platform Business Process Logic Transaction Logic Data Logic Faster assembly of new functionality Logic Platform Business Logic Platform Dynamic Business Logic Progress Dynamics Progress 4GL
An Application Requires Process-centric design 3 Strategic Elements Logic Platform ESBEnabled User Interface Freedom
Agenda Introduction OpenEdge, Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model Demo..... That's All Folks…
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 “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 “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 • 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
XML Example <?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 SOAP Envelope SOAP Header App-Specific Header Elements SOAP Body App-Specific Body Elements Simple Object Access Protocol • SOAP Envelope • SOAP Header • Mechanism for app-specific extensions • SOAP Body • Main business content • Usually uses SOAP encoding
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>
SOAP Example 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 Web Service Description Language • What can it do? • How do I invoke it? • Where does it reside?
WSDL 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 How is the weather in Bedford? Machine A
Agenda 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. • 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 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 • Web Services Adapter (WSA) • WSTK enhanced ProxyGen • WSTK enhanced Progress Explorer
Web Services Toolkit Runtime Architecture POST(Soap) Response(Soap) Web Server (JSE) Web Service Client HTTP Listener Web Services Adapter AppServers WSADs WSDLFiles ubroker.properties
Web Services Adapter • 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 • 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 Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model That's All Folks…
Deploying an Application 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 Development Site 4GL .r files Business logic ProxyGen Proxies
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 • Package the AppServer application for deployment including the WSM file
Web Server Site 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 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 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. • 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 Web Services WSTK Architecture Developing&Deployment with the WSTK Connection Management Open Client Object Model That's All Folks…
Connection Management Specified via ProxyGen • Session Managed • State-aware • State-reset • Stateless • Session Free
Stateless Connect Application Server Connect Connect WSA Application Server 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 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 AppServer Web Services Client Application Broker Web Services Client
Session Free Application Server WSA Application Server AppServer Web Services Client Application Broker Web Services Client
Agenda Web Services WSTK Architecture Deploying an Application with the WSTK Connection Management Open Client Object Model That's All Folks…
Open Client Object Model • 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 • 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)