Você está na página 1de 48

DEV-14:

Understanding and
Programming for the
AppServer
Pat Bonser
Product Readiness

Understanding and
Programming for the AppServer
Agenda

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

2 2005 Progress Software Corporation

Architecture

ER
-ORD
E
T
A
VALID
esult
RU N
return r

Clients

RUN CHECK-CREDIT
RUN

return result
U PD A
TE-IN
V

ENTO
RY
return
res

3 2005 Progress Software Corporation

ult

VALIDATE
ORDER

CHECK
CREDIT

UPDATE
INVENTORY

Data

Architecture
Any client
OpenEdge Application Server

GUI

Character

AppServer

Application
Code
4GL

Web Service
Client

4 2005 Progress Software Corporation

Data
Data

Architecture
Any client
Web Browser

OpenEdge Application Server


WebSpeed
Transaction
Server

GUI

Character

Speed
Script

AppServer

Application
Code
4GL

Web Service
Client

5 2005 Progress Software Corporation

Data
Data

Components
AppServer Architecture
AppServer

Clients

NameServer

Application Server Processes

Application
Broker

6 2005 Progress Software Corporation

4GL
Business
Logic

Data
Data

Components
Application Server Process

Executes OpenEdge
4GL procedures
Application Server
processes are
reused
Determined by
AppServer
operating mode

7 2005 Progress Software Corporation

AppServer
NameServer

Application
Broker

Application
Server
Processes

4GL
Business
Logic

Components
Application Broker

Typically started at
system startup-time
Manages pools of reusable application
server processes
Manages client requests
for 4GL procedure
execution

8 2005 Progress Software Corporation

AppServer
NameServer

Application
Broker

4GL
Business
Logic

Components
NameServer

Location transparency

Machine A

Clients

NameServer

Inventory

70%

70%

Inventory (A and B)

Machine B

30%

Pay
roll
(C)

Inventory

Machine C

Load balancing
9 2005 Progress Software Corporation

Payroll

30%

Understanding and
Programming for the AppServer
Agenda

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

10 2005 Progress Software Corporation

Accessing the AppServer


1.

Create server handle


CREATE SERVER hdl.

2.

Connect to AppServer
Ret = hdl:CONNECT(-S 5353 -H pisces
-AppService Account).

3.

Run procedures
RUN AccountBL.p ON SERVER hdl
(INPUT account-number).

4.

Disconnect

ret = hdl:DISCONNECT().
5.

Delete server handle


DELETE OBJECT hdl.

11 2005 Progress Software Corporation

Connecting to the AppServer


How does it work?
Host=gemini
Port=5162

ry
o
t
en s
v
n
=I =zeu 7
S
A ost 09
H rt=3
Po

NameServer

Client

AS=Inventory
Host=zeus
Port=3097
AS
Ho=Inv
Po st= ent
rt= zeu ory
30 s
97

Connect

Host=zeus
Port=3097

AppServer

hdl:CONNECT(-H gemini -S 5162 -AppService Inventory)

12 2005 Progress Software Corporation

Running AppServer Procedures

Host=gemini
Port=5162

NameServer

AS=Inventory
Host=zeus
Port=3097

Host=zeus
Port=3097
proc a

Run

Client
Connect

RUN proc a on SERVER hdl

13 2005 Progress Software Corporation

AppServer

Understanding and
Programming for the AppServer
Agenda

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

14 2005 Progress Software Corporation

AppServer Operating Mode

Specified when AppServer is configured


Determines how client requests dispatched to
individual Application Server processes
Design time considerations
Design & development of application

Application context

Performance Goals

System resources, network response


Request throughput and response time

15 2005 Progress Software Corporation

Session Models & Operating Modes


Connection management

Session managed model


State-reset
State-aware
Stateless

Session-free model
State-free

16 2005 Progress Software Corporation

Operating Modes
Session Managed Model

State-reset
One client per Application Server process
Session state is reset on disconnect

State-aware
One client per Application Server process
Session state is maintained across connections

Stateless
Connection managed by AppServer Broker

Many clients per application server process

Context must be managed externally


17 2005 Progress Software Corporation

Operating Modes
state-aware & state-reset
Session Managed Model
AppServer
Application Server Processes

Client 2

Client 3

NameServer

Client 1

Client 4

18 2005 Progress Software Corporation

Application
Broker

4GL

Data
Data

Operating Modes
stateless
Session Managed Model
AppServer
Application Server Processes

Client 2

Client 3

NameServer

Client 1

Client 4

19 2005 Progress Software Corporation

Application
Broker

Message
Queue

4GL

Data
Data

Operating Modes
Session-free Model

State-free
No connection maintained between client and
AppServer process
Pooled connections

4GL requests on the server handle


Web service requests on the WSA

Requests dispatched similar to stateless except

Multiple requests from one client run in parallel


Each request runs independently

Context must be managed externally


20 2005 Progress Software Corporation

Operating Modes
state-free
Session-free Model
4GL Clients

AppServer
Application Server Processes

Client 1

Web Service
Client

Client 3

Web Services
Adapter

Client 2

NameServer

Open Clients

21 2005 Progress Software Corporation

Application
Broker

4GL

Data
Data

CONNECT()

Session-free connection

Pool of re-usable socket connections


AppServer handle points to pool
Managed transparently by 4GL client
Connections allocated as needed
Tunable using CONNECT() properties

22 2005 Progress Software Corporation

Session-free

Some applications not inherently connection


oriented
Requests executed regardless of other
requests
i.e. web page request for information

Efficiency and Performance

Parallel execution on any AppServer


Efficient use of resources
Performance gains
Scalability

23 2005 Progress Software Corporation

Session-free

Design considerations
Procedures can execute concurrently
Order of completion not predictable

Persistent procedures
Create a context
Internal procedures execute

On same AppServer
Serially, losing parallel advantage

Reduce scalability
24 2005 Progress Software Corporation

Resource Considerations

System Resources

state-reset
state-aware

stateless
(bound/unbound)
stateless

Throughput

25 2005 Progress Software Corporation

state-free

Server Responsiveness

Programming Considerations
state-aware
state-reset
stateless
(bound/unbound)
stateless
state-free
Development Costs/ Time
26 2005 Progress Software Corporation

Understanding and
Programming for the AppServer
Agenda

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

27 2005 Progress Software Corporation

Managing Context
Configuration procedures

4GL procedures available to you to manage


context
Startup/Shutdown (state-aware & stateless)
Connect/Disconnect (all session managed modes)
Activate/Deactivate (stateless & state-free)

Specified when you configure an AppServer


Called automatically at the right time

28 2005 Progress Software Corporation

Managing Context
Session
Connection
Request

Start Application Server Process


CONNECT
RUN
.
.
END PROCEDURE
DISCONNECT
Stop Application Server Process

29 2005 Progress Software Corporation

Managing Context Session level


Available to state-aware and stateless
Session
Connection
Request

Start Application Server Process


CONNECT
RUN
.
.
.
END PROCEDURE
DISCONNECT
Stop Application Server Process

30 2005 Progress Software Corporation

Startup
Shutdown

Managing Context Connection level


Available to state-aware, state-reset, and stateless
Session
Connection
Request

Start Application Server Process


CONNECT
RUN
.
.
.
END PROCEDURE
DISCONNECT
Stop Application Server Process

31 2005 Progress Software Corporation

Connect
Disconnect

Managing Context Request level


Available to stateless, unbound requests
Session
Connection
Request

Start Application Server Process


CONNECT
RUN
.
.
.
END PROCEDURE
DISCONNECT
Stop Application Server Process

32 2005 Progress Software Corporation

Activate
Deactivate

Managing Context
stateless - bound / unbound

To ensure all requests are directed to the same


AppServer process
Two ways to bind to a stateless AppServer
Automatically

Run a remote persistent procedure

Dynamically

Set
SESSION:SERVER-CONNECTION-BOUND-REQUEST to TRUE

33 2005 Progress Software Corporation

Managing Context
stateless

Application specific context database

Use SESSION:SERVER-CONNECTION-ID attribute


Globally unique ID automatically set
Recommended for an application specific context db
Use Activate/Deactivate configuration procedures to
load/unload application context

Let the Application Broker do it


Use SESSION:SERVER-CONNECTION-CONTEXT attribute
Progress character string
Set to last value assigned in context of
corresponding connection

34 2005 Progress Software Corporation

CLIENT-CONNECTION-ID attribute

Session managed
Character attribute on a server handle
Returns connection ID string for the
AppServer connection

Session-free
Returns unknown-value
Logical connection to AppServer
represented by a pool of connections

35 2005 Progress Software Corporation

Managing Context

Application specific context database using


SESSION:SERVER-CONNECTION-ID
Globally unique ID automatically set
Recommended for application specific context db
Use Activate/Deactivate configuration procedures to
Load/Unload context

Let the Application Broker do it


SESSION:SERVER-CONNECTION-CONTEXT attribute
Progress character string
Set to last value assigned in context of corresponding
connection

36 2005 Progress Software Corporation

Understanding and
Programming for the AppServer
Agenda

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

37 2005 Progress Software Corporation

Running Remote Procedures


Standard AppServer calls - synchronous

Blocks the client during an active call


Request
#1

Synchronous
AppServer

Client

Total Processing Time


38 2005 Progress Software Corporation

Request
#2

Running Remote Procedures


AppServer calls - asynchronous

The client can make multiple calls to


multiple servers
Request
#1

#2

Client

Total Processing Time


39 2005 Progress Software Corporation

RUN proc ON server


ASYNCHRONOUS. . . .

Example
Calling procedure
RUN BL.p ON SERVER hAppSrv ASYNCHRONOUS
SET hRq2
EVENT-PROCEDURE BL-evt-proc IN THIS-PROCEDURE
(INPUT-OUTPUT TABLE order-table,
OUTPUT iCount).

Event procedure
PROCEDURE BL-evt-proc:
DEFINE INPUT PARAMETER TABLE FOR order-table.
DEFINE INPUT PARAMETER iCount as INT NO-UNDO.

40 2005 Progress Software Corporation

ASYNC-REQUEST-COUNT()

Indicates outstanding requests


If hAppSrv:ASYNC-REQUEST-COUNT = 0 THEN
APPLY CLOSE TO THIS-PROCEDURE.

41 2005 Progress Software Corporation

CANCEL-REQUESTS() method

Session managed
Raises STOP for request currently running
Purges send request queue of pending
requests

Session-free
Raises STOP for ALL requests currently
running
Purges queued requests

42 2005 Progress Software Corporation

Understanding and
Programming for the AppServer
Summary & Questions

Architecture
Accessing an Application Server Process
Operating Modes
Managing Context
Parallel Client Requests

43 2005 Progress Software Corporation

Additional Information
Other Exchange Sessions

SOA-03
Open Up Access to your 4GL Applications Using Web
Services
DEV-12
Bridging the Microsoft and Progress Worlds with the .NET
Open Client
DONE-02
Where Did You Go Wrong? Diagnostics and Troubleshooting
in OpenEdge
DONE-04
Best Practices - Designing for Performance:
These are a Few of My Favorite Tricks
DONE-08
Sizing and Performance Tuning N-Tier Applications

44 2005 Progress Software Corporation

Additional Information
Documentation

OpenEdge Documentation
Getting Started:
Application and Integration Services
Application Server:
Administration
Developing AppServer Applications
Development:
Open Client Introduction & Programming
Expert Series:
OpenEdge Revealed: Achieving Server
Control with Fathom Management

45 2005 Progress Software Corporation

Additional Information
Education

www.progress.com/education

46 2005 Progress Software Corporation

Thank you for


your time!

47 2005 Progress Software Corporation

48 2005 Progress Software Corporation

Você também pode gostar