© 2002, progress software corporation 1 d i s c l a i m e r products under development n this talk...
TRANSCRIPT
© 2002, Progress Software Corporation1
D I S C L A I M E R
Products Under DevelopmentProducts 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.
The Web Services Development ToolkitThe Web Services Development Toolkit
J. Espen [email protected] Services Manager, Norway
© 2002, Progress Software Corporation3
AgendaAgenda
Introduction OpenEdge, Web Services
WSTK Architecture
Developing & Deployment with the WSTK
Connection Management
Open Client Object Model
Demo.....
That's All Folks…
Integration
© 2002, Progress Software Corporation4
Progress OpenEdge : Enkelt, Integrert, ÅpentProgress OpenEdge : Enkelt, Integrert, Åpent
Progress Dynamics™
SonicMQ • SonicXQ
Web Services Dev. Toolkit
AppServer
WebSpeed Transaction Server
RDBMSDataServers
WebClient
WebSpeed
Open ClientGUI/ChUI
Progress4GL
ActuateCorVu
Report BuilderQuery/Results
Fa
tho
mT
M
Pro
Vis
ion
TM
Web
Sp
eed
W
ork
sho
p
Applications
© 2002, Progress Software Corporation5
OpenEdge IntegrationOpenEdge 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
© 2002, Progress Software Corporation6
One definition of a Web ServiceOne 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?
Integration
© 2002, Progress Software Corporation7
Web ServicesWeb Services
Service Producer (Server)– Develops, publishes & deploys the Web Service
Service Registry – Directory of Web Services
Service Consumer (Client)– Locates & uses Web Services
“Logical Model”
Integration
© 2002, Progress Software Corporation8
Web Services StandardsWeb 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
Integration
© 2002, Progress Software Corporation9
HTTPHTTP
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
Hypertext Transfer Protocol
Integration
© 2002, Progress Software Corporation10
XMLXML
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
eXtensible Markup Language
Integration
© 2002, Progress Software Corporation11
XML ExampleXML 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>
Integration
© 2002, Progress Software Corporation12
SOAPSOAP
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
Simple Object Access Protocol
Integration
© 2002, Progress Software Corporation13
SOAPSOAP
SOAP Envelope SOAP Header
– Mechanism for app-specific extensions
SOAP Body– Main business
content– Usually uses SOAP
encoding
SOAP Envelope
SOAP Header
SOAP Body
App-SpecificBody Elements
App-SpecificHeader Elements
Simple Object Access Protocol
Integration
© 2002, Progress Software Corporation14
<?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 ExampleSOAP ExampleStock Quote Web Service – Request Message
Integration
© 2002, Progress Software Corporation15
<?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>
SOAP ExampleSOAP ExampleStock Quote Web Service – Reply Message
Integration
© 2002, Progress Software Corporation16
WSDLWSDL
What can it do? How do I invoke it? Where does it reside?
Web Service Description Language
Integration
© 2002, Progress Software Corporation17
WSDLWSDL
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 Service Description Language
Integration
© 2002, Progress Software Corporation18
Machine B
CreditChk
UDDI Registry
GetWeather
2. Web service made available to public, by publishing its WSDL to a UDDI registry
Web ServicesWeb Services
How is the weather in Bedford?Machine A
GetWeatherWS
GetWeatherWS
1. Web service is built and deployed, ready to be published.
Machine C
Client
3. Client searches for available weather services
4. Client finds access info about GetWeather
5. Client makes info request directly to service
6. Service sends result back to client
Integration
© 2002, Progress Software Corporation19
AgendaAgenda
Web Services
WSTK Architecture
Developing & Deployment with the WSTK
Connection Management
Open Client Object Model
That's All Folks…
Integration
© 2002, Progress Software Corporation20
Web Services Toolkit RoadmapWeb 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.
Integration
© 2002, Progress Software Corporation21
Web Services ToolkitWeb Services Toolkit
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
Phase 1
Integration
© 2002, Progress Software Corporation22
Web Services Toolkit ComponentsWeb Services Toolkit Components
Web Services Adapter (WSA) WSTK enhanced ProxyGen WSTK enhanced Progress Explorer
Integration
© 2002, Progress Software Corporation23
Web Services Toolkit Runtime ArchitectureWeb Services Toolkit Runtime Architecture
HT
TP
L
iste
ner
Web
Ser
vice
s A
dap
ter
Web Server (JSE)
AppServers
WSDLFiles
WSADs
ubroker.properties
POST(Soap)Web
Service Client Response(Soap)
Integration
© 2002, Progress Software Corporation24
Web Services AdapterWeb 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
Integration
© 2002, Progress Software Corporation25
WSADWSAD
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
Integration
© 2002, Progress Software Corporation26
AgendaAgenda
Web Services
WSTK Architecture
Developing & Deployment with the WSTK
Connection Management
Open Client Object Model
That's All Folks…
Integration
© 2002, Progress Software Corporation27
Development Site
Deployment Site
WSM
ProxyGen
4GL
ProgressExplorer
WSM
Web Server Site
WSM
WSDLs
Web Services Adapter
WSADs
HTTP Listener
Soa
p
Req
ues
t/R
esp
onse
GE
T W
SD
L
? ?
Deploying an ApplicationDeploying an Application Integration
© 2002, Progress Software Corporation28
ProxyGen
Development Site
Business logic
Proxies
4GL .r files
Java classes
ActiveX
Web Services Mapping File
Integration
© 2002, Progress Software Corporation29
Development SiteDevelopment Site
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
Step 1: Prepare Application For Deployment
Integration
© 2002, Progress Software Corporation30
Web Server SiteWeb Server Site
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
Step 2: Configure WSA for access
Integration
© 2002, Progress Software Corporation31
Deployment SiteDeployment Site
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
Step 3: Run Progress Explorer to Deploy Application
Integration
© 2002, Progress Software Corporation32
Web Services Communication ModelWeb Services Communication Model
Web Web Service Service ClientClient
BusinessBusinessLogicLogic
AppAppServersServers
Web Server
DatabaseDatabaseServerServer
.NETJavaPerl
WSADs
WS
AW
SA
HT
TP
Lis
ten
erH
TT
P L
iste
ne r
““ Op
en C
lien
t
Op
en C
lien
t
Ru
nt i
me ”
Ru
nt i
me”
WSDLs
HTTP PostHTTP Post
HTTP ResponseHTTP Response
Integration
© 2002, Progress Software Corporation33
Web Services Communication Model, cont.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!!
Integration
© 2002, Progress Software Corporation34
AgendaAgenda
Web Services
WSTK Architecture
Developing & Deployment with the WSTK
Connection Management
Open Client Object Model
That's All Folks…
Integration
© 2002, Progress Software Corporation35
Connection ManagementConnection Management
Session Managed– State-aware
– State-reset
– Stateless Session Free
Specified via ProxyGen
Integration
© 2002, Progress Software Corporation36
ApplicationApplicationServerServer
ApplicationApplicationServerServer
StatelessStateless
Application Application BrokerBroker
AppServer
WSAWSAWSAWSA
Web Web ServicesServices
ClientClientConnect
ConnectConnect
Web Web ServicesServices
ClientClient
Integration
© 2002, Progress Software Corporation37
ApplicationApplicationServerServer
ApplicationApplicationServerServer
StatelessStateless
Application Application BrokerBroker
AppServer
WSAWSAWSAWSA
Web Web ServicesServices
ClientClient
Web Web ServicesServices
ClientClientRUN PartRUN Part RUN Part
RUN cust
RUN cust
RUN cust
Integration
© 2002, Progress Software Corporation38
ApplicationApplicationServerServer
ApplicationApplicationServerServer
StatelessStateless
Application Application BrokerBroker
AppServer
WSAWSAWSAWSA
Web Web ServicesServices
ClientClient
Web Web ServicesServices
ClientClient
Integration
© 2002, Progress Software Corporation39
ApplicationApplicationServerServer
ApplicationApplicationServerServer
Session FreeSession Free
Application Application BrokerBroker
AppServer
WSAWSAWSAWSA
Web Web ServicesServices
ClientClient
Web Web ServicesServices
ClientClientRUN PartRUN Part RUN Part
RUN cust
RUN cust
RUN cust
Integration
© 2002, Progress Software Corporation40
ApplicationApplicationServerServer
ApplicationApplicationServerServer
Session FreeSession Free
Application Application BrokerBroker
AppServer
WSAWSAWSAWSA
Web Web ServicesServices
ClientClient
Web Web ServicesServices
ClientClient
Integration
© 2002, Progress Software Corporation41
AgendaAgenda
Web Services
WSTK Architecture
Deploying an Application with the WSTK
Connection Management
Open Client Object Model
That's All Folks…
Integration
© 2002, Progress Software Corporation42
Open Client Object ModelOpen 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)
ApplicationApplicationObjectObject
ProcedureProcedureObjectObject
Sub-Sub-AppObjectAppObject
Integration
© 2002, Progress Software Corporation43
AppServer Session ModelAppServer 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)
Integration
© 2002, Progress Software Corporation47
Object Relationships at Runtime: Session ManagedObject Relationships at Runtime: Session Managed
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
ApplicationApplicationObjectObject
ProcedureProcedureObjectObject
ProcedureProcedureObjectObject
Sub-Sub-AppObjectAppObject
ProcedureProcedureObjectObject
Method1Method1Method2Method2Method1Method1Method2Method2
MethodXMethodXMethodXMethodX
Proc1Proc1Proc2Proc2FuncXFuncX
Proc1Proc1Proc2Proc2FuncXFuncX
Integration
© 2002, Progress Software Corporation48
Object Relationships at Runtime: Session FreeObject Relationships at Runtime: Session Free
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!
ApplicationApplicationObjectObject
ProcedureProcedureObjectObject
ProcedureProcedureObjectObject
Sub-Sub-AppObjectAppObject
ProcedureProcedureObjectObject
Method1Method1Method2Method2Method1Method1Method2Method2
MethodXMethodXMethodXMethodX
Proc1Proc1Proc2Proc2FuncXFuncX
Proc1Proc1Proc2Proc2FuncXFuncX
Integration
© 2002, Progress Software Corporation49
A Look at ProxyGenA Look at ProxyGen
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
Integration
© 2002, Progress Software Corporation50
ProxyGen: Select 4GL ProceduresProxyGen: Select 4GL ProceduresSelect the 4GL
procedures for each object
Optionally customize the procedure definition
Integration
© 2002, Progress Software Corporation51
ProxyGen: GenerateProxyGen: Generate
Select Web Services Client
Select Session Model
Integration
© 2002, Progress Software Corporation52
ProxyGen: GenerateProxyGen: GenerateEnter initial
deployment information:
– Namespace– WSA URL– SOAP Action– Test WSDL
Generate the “proxy”
Integration
© 2002, Progress Software Corporation53
Required Information for Web Services GenerationRequired Information for Web Services Generation
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
Integration
© 2002, Progress Software Corporation54
Generating the “Proxy”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 WSAhttp://localhost:8080/wsa/wsa1/wsdl?targetURI=OrderService
Integration
© 2002, Progress Software Corporation55
SummarySummary
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
Web Services coming to an application
near you soon
Integration