F8: Progress AppServer

36
2001 Exchange PROGRESS WORLDWIDE 2001 Exchange PROGRESS WORLDWIDE Pat Bonser Technical Marketing Manager Progress Software F8: Progress AppServer

description

F8: Progress AppServer. Pat Bonser Technical Marketing Manager Progress Software. Agenda. What is the Progress AppServer ? Architecture Components Running remote procedures Operating Modes Open Client Summary. Progress AppServer. - PowerPoint PPT Presentation

Transcript of F8: Progress AppServer

Page 1: F8: Progress AppServer

2001Exchange

PROGRESS WORLDWIDE

2001Exchange

PROGRESS WORLDWIDE

Pat BonserTechnical Marketing ManagerProgress Software

F8: Progress AppServer

Page 2: 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

Page 3: F8: Progress AppServer

© 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

Page 4: F8: Progress AppServer

© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 4 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 4

Progress AppServerProgress AppServer

DistributedApplication

GUI

Character

Page 5: F8: Progress AppServer

© 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

Page 6: F8: Progress AppServer

© 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

Page 7: F8: Progress AppServer

© 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

Page 8: F8: Progress AppServer

© 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

Page 9: F8: Progress AppServer

© 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

Page 10: F8: Progress AppServer

© 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

Page 11: F8: Progress AppServer

© 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

Page 12: F8: Progress AppServer

© 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

Page 13: F8: Progress 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

Page 14: F8: Progress AppServer

© 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

Page 15: F8: Progress AppServer

© 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

Page 16: F8: Progress AppServer

© 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

Page 17: F8: Progress AppServer

© 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

Page 18: F8: Progress AppServer

© 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

Page 19: F8: Progress AppServer

© 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

Page 20: F8: Progress AppServer

© 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

Page 21: F8: Progress AppServer

© 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

Page 22: F8: Progress AppServer

© 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

Page 23: F8: Progress AppServer

© 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

Page 24: F8: Progress AppServer

© 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

Page 25: F8: Progress AppServer

© 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

Page 26: F8: Progress AppServer

© 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

Page 27: F8: Progress AppServer

© 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

Page 28: F8: Progress AppServer

© 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

Page 29: F8: Progress AppServer

© 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

Page 30: F8: Progress AppServer

© 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.

Page 31: F8: Progress AppServer

© 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);

Page 32: F8: Progress AppServer

© 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)

Page 33: F8: Progress AppServer

© 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

Page 34: F8: Progress AppServer

© 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

Page 35: F8: Progress AppServer

© 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!

Page 36: F8: Progress AppServer

© 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 36 © 2001, Progress Software CorporationExchange 2001, Washington, DC, USA 36

Questions