All Products
Search
Document Center

Enterprise Distributed Application Service:How an HSF call works

Last Updated:Mar 11, 2026

In a single High-speed Service Framework (HSF) call, the HSF consumer sends a request to the HSF provider over the network, the provider runs the target method, and the result travels back to the consumer. This process involves multiple threads and several domain objects specific to the HSF protocol.

Understanding this call flow helps you debug latency issues, interpret thread dumps, and pinpoint where failures occur in your Enterprise Distributed Application Service (EDAS) applications.

Call flow overview

An HSF call has three phases:

  1. Client-side preparation (steps 1-3) -- The client thread serializes the request and hands it to the I/O thread for encoding and transmission.

  2. Server-side processing (steps 4-8) -- The provider's I/O thread decodes the incoming data, the HSF server thread runs the target method through reflection, then serializes and encodes the response.

  3. Response return (steps 9-11) -- The encoded response travels back to the consumer, the I/O thread decodes it, and the client thread deserializes the result.

The following diagram shows the complete 11-step process.

One call process in HSF applications in Serverless App Engine (SAE)

Thread model

Three thread types participate in every HSF call:

ThreadRole
Client threadInitiates the call on the consumer side. Serializes request parameters, waits for the response, and deserializes the result.
I/O threadHandles network communication on both sides. Encodes outbound objects into binary content and decodes inbound binary content into communication objects.
HSF server threadProcesses the request on the provider side. Deserializes the request, invokes the target method, and serializes the response.

This separation prevents slow method runs from blocking network I/O for other concurrent calls, and prevents network latency or congestion from starving the business thread pool.

Domain objects

HSF uses two layers of objects to separate user data from protocol metadata:

ObjectPurpose
Request objectContains the request parameters -- the actual method arguments.
Request communication objectAn HSF protocol wrapper around the request object. Includes protocol-level metadata such as the request ID.
Response objectContains the method return value.
Response communication objectAn HSF protocol wrapper around the response object. Includes protocol-level metadata for the return trip.

This two-layer design lets HSF attach routing, tracing, and protocol information without modifying the user's data. When you debug issues, this distinction helps you determine whether a problem lies in the business logic (request/response objects) or the protocol layer (communication objects).

Detailed step-by-step flow

Phase 1: Client-side preparation (steps 1-3)

StepWhat happens
1The client thread serializes the request parameters into a request object, then wraps it in a request communication object. The communication object follows the HSF protocol and includes metadata such as the request ID.
2The client thread submits the request communication object to the I/O thread, which encodes it into binary content.
3The I/O thread transmits the encoded binary content to the HSF provider. The client thread blocks and waits for the response.

Phase 2: Server-side processing (steps 4-8)

StepWhat happens
4The HSF provider's I/O thread receives the binary content and decodes it into a request communication object, then submits the object to the HSF server thread.
5The server thread deserializes the request communication object to restore the original request object.
6The server thread invokes the target method through a reflection call and gets the response object.
7The server thread serializes the response object and wraps it in a response communication object.
8The server thread submits the response communication object to the I/O thread, which encodes it into binary content.

Phase 3: Response return (steps 9-11)

StepWhat happens
9The HSF provider's I/O thread transmits the encoded binary content back to the HSF consumer.
10The HSF consumer's I/O thread receives the binary content, decodes it into a response communication object, and wakes up the blocked client thread.
11The client thread deserializes the response communication object to extract the response object. The caller receives the result, and the remote call completes.

Design rationale

Serialization vs. encoding

HSF applies two separate transformations to outbound data:

  • Serialization converts objects (request or response objects) into a byte-stream format suitable for inclusion in a communication object.

  • Encoding converts the complete communication object -- including protocol metadata -- into binary content for network transmission.

On the receiving side, decoding reconstructs the communication object from binary content, and deserialization extracts the original object from the communication object.

Keeping these steps separate lets HSF swap serialization formats independently of the wire protocol encoding.

Separate I/O and business threads

The I/O thread handles network reads, writes, encoding, and decoding. The HSF server thread handles deserialization and method invocation. This separation provides two benefits:

  • A slow business method does not block network I/O for other concurrent calls.

  • Network latency or congestion does not starve the business thread pool.

Synchronous blocking on the consumer side

During a standard synchronous HSF call, the client thread blocks at step 3 until the I/O thread wakes it at step 10. The total blocking time includes network round-trip latency, server-side processing time, and serialization/encoding overhead on both sides.