More on Transport Channels
As described previously, you have multiple choices when choosing a transport channel. A transport channel is a communication channel which HyperServer uses to send data to and receive data from Nodes.

In the above image transport channels (shown in blue) are used to communicate with Nodes. Based on incoming traffic HyperServer may create one or more transports to communicate with each Node. So at the same time there may be multiple transport channels connected to the same Node. A transport channel is a transparent layer which relays the incoming client requests to the related Node. It carries the client request data from HyperServer to the Node using various inter-process communication technologies.
Currently two types of transport channels are available: HTTP Transport Channel and Named Pipe Transport Channel. Named Pipe is currently available for Windows, but a Linux version will be implemented soon.
HTTP Transport Channel
This channel is implemented based on the HTTP protocol. It is available on both Windows and Linux platforms.
Advantages:
Available on all platforms (Windows and Linux)
Well debugged and widely tested through years
Currently the only option to communicate with ServerNodes in a HyperServer server farm (Inter-server communication)
Disadvantages:
Additional overhead which degrades performance
Inherits TCP/IP protocol limitations such as dynamic port limit
Slower compared to other inter-process communication methods
May lead to TCP port exhaustion under heavy traffic (See: Additional Network Settings)
Requires assigning a unique range of ports to avoid port collision. (Adjusting start_port parameter is mandatory)
Named Pipe Transport Channel
This channel is implemented using the Named Pipe API of the operating system. Using named pipes is a popular method to perform inter-process communication.
Advantages:
Natively implemented using operating system API (No external libraries are used)
Much less overhead (Requests are directly streamed into memory and transferred using named pipe API calls)
Up to two times overall performance increase compared with HTTP transport channel. (Tested using uniGUI stress test tool with 32 Nodes and a basic uniGUI application)
Much better scalable (Maximum number of open pipes is only limited by system resources)
Doesn't require assigning a port or a name. A unique pipe name is acquired from the HyperServer token parameter which is a unique string. (start_port parameter is still used combined with token parameter to create a unique pipe name)
Disadvantages:
Currently implemented for Windows only
Not suitable for inter-server communication. Hence HyperServer will continue using the legacy HTTP transport to communicate with ServerNodes in a HyperServer cluster.
Each pipe channel requires a unique name, so HyperServer can connect to its Nodes by creating a pipe connection using this name. The following formula is used to create a unique name for pipes:
PipeName := PipeNamePrefix + token + '_' + IntToStr(start_port + nodeId)
Default Transport Channel
To keep backward compatibility, the default transport channel remains the HTTP transport channel. A configuration parameter named transport_type chooses the transport channel. The default value is 0, which means HTTP transport channel will be used. Developers who want to choose a Named Pipe channel should change this value to 1.
For HTTP Transport
For Named Pipe Transport
This setting must be done for each HyperServer instance separately. So if you have multiple HyperServer instances in your cluster, this setting must be applied for each HyperServer.
When changing your transport channel from HTTP transport to Named Pipe transport for the first time, it is recommended to perform an extensive test on a local machine before applying it to your production server. You can always revert to HTTP transport if you encounter problems. UniGUI application log files will contain error codes and messages to help diagnose issues.
Below image shows the Transport tab of the HyperServer server monitor page. In this example the instance of HyperServer uses two instances of transport: one for Named Pipe and another for HTTP transport. The Named Pipe channel is used to communicate with local Nodes and the HTTP channel is used to communicate with remote ServerNodes. This HyperServer is configured to use Named Pipes (transport_type=1).

If the transport type is set to HTTP then only one type of transport will be instantiated, as the HTTP channel will be used to communicate with both local Nodes and remote ServerNodes:
