F8: Progress AppServer
description
Transcript of F8: Progress AppServer
2001Exchange
PROGRESS WORLDWIDE
2001Exchange
PROGRESS WORLDWIDE
Pat BonserTechnical Marketing ManagerProgress Software
F8: Progress AppServer
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 2 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 2
What is the Progress AppServer ? Architecture Components Running remote procedures Operating Modes Open Client Summary
AgendaAgenda
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 3 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 3
Progress AppServerProgress AppServer
Foundation for Progress’ distributed computing strategy
The framework for developing and deploying 4GL procedures as distributed application components
Business logic encapsulated into components that can be deployed across the enterprise
RPC for the 4GL
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 4 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 4
Progress AppServerProgress AppServer
DistributedApplication
GUI
Character
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 5 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 5
Progress AppServer ArchitectureProgress AppServer Architecture
4GL 4GL BusinessBusiness
LogicLogicApplicationApplication
Broker Broker
Application ServersAppServer
Nam
eSer
ver
Clients
GUI
Character
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 6 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 6
Progress AppServer ComponentsProgress AppServer Components
NameServer Application Broker Application Server Process AppServer Internet Adapter - AIA & AIA/S Clients
– Progress GUI, Character, WebClient, WebSpeed Agents
– Open Clients Java, ActiveX
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 7 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 7
NameServerNameServer
Location Transparency– Client requests an Application Service not a
connection to a specific AppServer Load Balancing
– Multiple AppServers can register to support the same Application Service
– Connection requests can be balanced across AppServers
– Weight factor determines distribution – A “hot stand-by” using a weight factor of 0
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 8 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 8
NameServerNameServer
AppServer registers with NameServer the Application Service(s) it supports
Client requests an Application Service from the NameServer
Communication with NameServer UDP Fault-tolerance for NameServer
– NameServer Replication– NameServer Neighbors
Application Service – logical name, eg:Inventory, Parts, Account, com.progress.orders
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 9 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 9
Application BrokerApplication Broker
Typically started at system startup-time
Manages pools of re-usable application
server processes
Manages client requests for 4GL
procedure execution
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 10 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 10
Application Server ProcessApplication Server Process
Executes Progress 4GL procedures
Application Server Processes are reused
– Determined by AppServer Operating Mode
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 11 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 11
AppServer Internet AdapterAppServer Internet Adapter
Extends the AppServer to the Internet HTTP & HTTPS Tunneling Java Servlet ALL Progress 4GL Clients
AppServer
Web Server
AIA
JSEINTERNETINTERNET
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 12 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 12
Running Remote ProceduresRunning Remote Procedures
3. RUN procedures
5. Delete server handle
4. Disconnect
1. Create server handle AppServer
4GL Business Logic
procedure a
procedurecprocedured
procedure b
2. Connect to AppServer
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 13 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 13
Running Remote ProceduresRunning Remote Procedures
CREATE SERVER handle handle:CONNECT(connection_parameters,
userid,
password,
appserver_info) RUN procedureA ON SERVER handle handle:DISCONNECT() DELETE OBJECT handle
4GL Client
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 14 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 14
Running Remote ProceduresRunning Remote Procedures
-HIP address or TCP/IP host name of NameServer
-SPort Number or UDP service name of NameServer
-AppServiceApplication Service registered with NameServer
or -URL
To connect to AppServer using the AIA or AIA/S
Connection Parameters
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 15 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 15
Running Remote ProceduresRunning Remote Procedures
DEFINE VARIABLE hdl AS HANDLE.DEFINE VARIABLE ret AS LOGICAL.DEFINE VARIABLE account-number AS INTEGER.
CREATE SERVER hdl.ret = hdl:CONNECT(“-S 5555 -H zeus -AppService Account”).
RUN AccountInfo.p ON SERVER hdl (INPUT account-number).
ret = hdl:DISCONNECT().
DELETE OBJECT hdl.
4GL Client
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 16 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 16
Asynchronous CallsAsynchronous Calls
RUN proc ON server ASYNCHRONOUS. . . . . . . .
Client Server1
. .
. .
. .
. .
.
.
. .
. .
. .
.T
ime
Server2
Standard AppServer Calls are synchronous, blocking the client during active call
With Asynchronous calls the client can make multiple calls to multiple servers
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 17 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 17
Connecting to an AppServerConnecting to an AppServerHow does it work?
NameServer
AppServer
Host=Gemini
Port=5162
Host=zeusPort=3097
AS=Inventory
Host=zeus Port=3097
AS=InventoryAS=Inventory
Host=zeus
Port==3097
Host=zeus
Port=3097
Client
handle:CONNECT(“-H Gemini -S 5162 -AppService Inventory”)
Connect
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 18 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 18
Running Remote ProceduresRunning Remote Procedures
NameServer
AppServer
Host=Gemini
Port=5162
Host=zeusPort=3097
Client
RUN foo.r on SERVER handle
Procedure foo
Connect
Run
How does it work?
AS=Inventory
Host=zeus Port=3097
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 19 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 19
AS=Inventory
AS=Inventory
Replicated AppServersReplicated AppServersHow does it work?
NameServer
AppServerHost=Gemini
Port=5162
Host=zeusPort=3097Weight=70
Client
handle:CONNECT(“-H Gemini -S 5162 -AppService Inventory”)
Connect
AS=Inventory
zeus, 3097, 70
Host=hertaPort=7394Weight=30
AppServerClient
Connect
Host=zeusPort=3097
Host=herta
Port=7394
herta, 7394, 30
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 20 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 20
Replicated NameServersReplicated NameServersHow does it work?
NameServerHost=172.20.0.7
Port=5162
NameServer Host=172.20.6.4
Port=5162
Client AppServer
Host=zeusPort=3097
AS=InventoryHost=zeusPort==3097
Connect(“-H 172.20.255.255 -S 5162 -AppService Inventory”)
AS=Inventory
AS=Inventory
Host=zeus
Port=3097
Host=zeus
Port=3097
Connect & Run
AS=Inventory
Host=zeus Port=3097
AS=Inventory
Host=zeus Port=3097
NameServer.NS1 portNumber=5162 hostName=172.20.255.255
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 21 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 21
AppServer Operating ModesAppServer Operating Modes
Specified when an AppServer is configured
Determines how client requests are dispatched to individual Application Server processes
Will have significant impact on the design and performance of your application
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 22 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 22
AppServer Operating ModesAppServer Operating Modes
State-Aware– One client per application server process– Application server session objects maintained
across connections State-Reset
– One client per application server process– Application server session automatically reset
Stateless– Many clients per application server process– Context must be managed externally
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 23 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 23
Choosing an Operating ModeChoosing an Operating Mode
Design-time Decision Factors Affecting Decision
– Design Complexity
– Resource Consumption
– Performance Request Throughput Response Time
– Application Context
State-Aware State-Reset Stateless
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 24 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 24
Sys
tem
R
esou
rces
Throughput
State-reset
Stateless (Bound/Unbound)
Stateless
Resource Considerations
State-aware
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 25 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 25
Res
pon
se T
ime
Development Costs
State-reset
Stateless (Bound/Unbound)
Stateless
Resource Considerations
State-aware
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 26 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 26
Open Client access to ProgressOpen Client access to Progress
AppServer
4GL Business Logic
PROXY
PROXY
GUI
Character
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 27 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 27
Open Client InterfaceOpen Client Interface
Maps 4GL concepts to Open Client concepts Server handle is an application object Persistent procedure handle is a procedure
object Non-persistent procedures, internal
procedures and user defined functions map to object methods
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 28 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 28
Open Client Model
App Object: Account
Proc getPaymentsInfo
Function getStartDateremove.p
ProcObject:
AcctInfo
add.p update.p
AcctInfo.p
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 29 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 29
Proxy Generation
4GL .r files
ProxyGen
Java classes Automation Object (DLL)
Business logic
Proxies
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 30 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 30
4GL Example to be run by Open Client4GL Example to be run by Open Client
/* AccountInfo.p Procedure */
DEFINE INPUT PARAM account-num AS INTEGER.
/* … AccountInfo.p code … */
/* AccountInfo.p Internal Procedures *//* getPaymentsInfo returns payment records. */
PROCEDURE getPaymentsInfo: DEFINE INPUT PARAM from-date AS DATE. DEFINE INPUT PARAM TABLE FOR payee-list. DEFINE OUTPUT PARAM payments-num AS INTEGER. DEFINE OUTPUT PARAM TABLE FOR payments-info. /* ... getPaymentsInfo Code ... */END PROCEDURE.
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 31 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 31
Java Client access to 4GL ExampleJava Client access to 4GL Example
Account account = new Account(“AppServer://zeus:5162”,“wilner”,“futureproof”,null);
AccountInfo info = account.createPO_AccountInfo(777);
java.util.Date fromDate;java.sql.ResultSet payeeList;COM.progress.o4gl.IntegerHolder paymentsNum;COM.progress.o4gl.ResultSetHolder paymentsInfo;
info.getPaymentsInfo(fromDate, payeeList, paymentsNum, paymentsInfo);
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 32 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 32
VB Client access to 4GL ExampleVB Client access to 4GL Example
Dim acct As AccountLib.CAccount Set acct = new CAccount acct.OC_Connect("AppServer://zeus:5162", "wilner", "futureproof")
Dim info As AccountLib.CPO_AccountInfo set info = acct.createPO_AcctInfo(777)
Dim payeeList As ADODB.RecordsetDim payees As ProO4glActiveXLib.CProTempTable Dim payments As ProO4glActiveXLib.CProTempTable
Set payees = new CProTempTable ' input Temp-Table Set payments = new CProTempTable ' output Temp-Table payees.DataSource = payeeList
Dim paymentsNum as Long Dim fromDate as double
Call info.getPaymentsInfo(fromDate, payees, paymentsNum, payments)
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 33 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 33
Configuration FlexibilityConfiguration Flexibility
Multiple AppServers per machine Multiple AppServers to support one
Application Service NameServer on the AppServer machine NameServer on it’s own machine NameServer on the client machine Multiple NameServers
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 34 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 34
Scalability & AvailabilityScalability & Availability
Re-useable Servers Replicated Servers Stateless Servers Message Queuing Load Balancing Location Transparency
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 35 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 35
SummarySummary
Open Interfaces
Highly Scalable
Location transparency, fault-tolerance, load balancing
Easy-to-use GUI-based configuration
“Internet-ready”
AppServer in a nutshell!AppServer in a nutshell!
© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 36 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 36
Questions