Architecture: PS vs. PB


Architectural Model

This chapter describes the architecture used by PowerServer and explains how it differs from the traditional PowerBuilder client/server model. Understanding these concepts will help you correctly configure, deploy, and troubleshoot your application.

Traditional PowerBuilder applications follow a two-tier client/server architecture. The client connects directly to the database using a persistent connection, and SQL statements are executed within the client process.

PowerServer introduces a middle-tier architecture. The client application communicates with server-side Web APIs, and all database operations are executed on the server.

Note

Database connectivity in PowerServer differs significantly from traditional client/server applications:

1) In PowerServer architecture, the client does not connect directly to the database.

2) All SQL execution is performed by the PowerServer Web API layer.

3) Database drivers are installed only on the server and are not required on client machines.

4) The database server is not exposed to clients. All communication is routed through the Web API layer.

Item Traditional Client/Server PowerServer
Database access Direct connection from client Access through the middle tier (PowerServer Web APIs)
Database connection model Long-running connection (remains open from CONNECT to DISCONNECT) Short-lived connection (default) (automatically closed and returned to a pool after each transaction)
SQL execution Executed in client Executed on server
Database driver installation Installed on each client Installed on server only
Deployment model EXE + DLL Static files + Web APIs
Network communication Database protocol Standard REST/JSON over HTTP/HTTPS

The PowerServer architecture improves security, simplifies client deployment, and enables modern hosting options such as containers and cloud platforms.

Architectural Components

PowerServer separates application resources into static client files and dynamic server-side components. During deployment, traditional PowerBuilder PBD files are transformed into granular runtime units that support incremental updates.

Static Files (Client Application)

Static resources are deployed to a web server or file server. The server acts only as a file host and does not execute business logic.

  • Cloud App Launcher

  • PowerBuilder runtime files

  • Granular P-code files (e.g., .dwo, .apl, .fun, .win, .udo)

  • Configuration files (e.g., apprun.json)

These files are downloaded to the client during the initial launch. Subsequent launches reuse locally cached files and download only updated resources.

Note

The application is initially installed via an app URL accessed through a web browser. Once installed, it no longer depends on the browser (type, version, or settings) and will run locally using the PowerBuilder runtime environment. It is a desktop application that communicates with server-side APIs.

Build and Update Model

Instead of deploying a monolithic PBD file, PowerBuilder compiles the application into smaller P-code units:

  • .dwo files (DataWindow objects)

  • .apl files (application objects)

  • .fun files (functions)

  • JSON metadata files

  • etc.

This design enables incremental updates. When a new version is deployed, only modified files are downloaded to the client.

Dynamic Contents (PowerServer)

Dynamic components are implemented as ASP.NET Core Web APIs. These services handle business logic, transaction management, and database access.

  • REST API endpoints

  • C# data models generated from DataWindows and embedded SQLs

  • Database drivers

  • Connection and transaction management

Note

During deployment, DataWindow definitions are converted into C# data models. These models are compiled into the Web API project and are responsible for executing SQL statements on the server.

Request and Response Lifecycle

PowerServer uses a standard request-response model based on REST principles.

  1. The client triggers a retrieve, update, or other database operation.

  2. A JSON request is sent to the PowerServer Web API endpoint.

  3. The Web API opens a database connection.

  4. The corresponding SQL statement is executed on the database server.

  5. The database returns the result set.

  6. The result is serialized into JSON format.

  7. The client receives the response and renders the data in the DataWindow control.

Note

By default, each request opens a database connection and closes it after execution. Persistent (long) connection must be explicitly enabled if required by the application design.

Next Steps

After reviewing the architecture overview, you can proceed with: