# Communicating with Natural Access

By providing core functions and service functions, Natural Access creates an operating environment that enables applications to interact with system resources (for example, the boards). A wide range of programming models is available to suit most application requirements.

An application can access Natural Access functionality in one of the following ways:

- In-process

- Client-server

## In-process approach

By using the in-process approach shown in the following illustration, each application maintains an independent Natural Access programming environment. An application uses the Natural Access functionality to create, manage, and destroy resources. This approach provides the most efficient processing.

## Client-server approach

The client-server architecture of Natural Access enables applications to share resources and distribute processing tasks. Natural Access Server (ctdaemon) creates and manages processing contexts on behalf of the applications. This section provides three examples of the client-server approach, based on the location of the application in relation to Natural Access Server (ctdaemon).

### Example 1: local host

In the configuration shown in the following illustration, multiple applications share a common resource locally. The applications and Natural Access Server (ctdaemon) are running in the same host. For example, in an IVR system, one application can establish connections to and from the PSTN, while another plays voice files over this connection.

In addition, applications can perform a task and then relinquish control of the shared resource to another application. For example, one application can answer an incoming call. Then, based on an established criteria, the application can route call processing to another application. The first application can then return to waiting for incoming calls.

### Example 2: remote host

In the configuration shown in the following illustration, applications share resources through a remote Natural Access Server (ctdaemon). The applications and Natural Access Server (ctdaemon) are running in separate hosts. This approach is an efficient method of performing multiple tasks utilizing a remote Natural Access Server (ctdaemon) over a network connection.

### Example 3: multiple hosts

In the configuration shown in the following illustration, an application simultaneously uses an independent Natural Access programming environment to manage local resources, and a local instance and multiple remote instances of Natural Access Server (ctdaemon) to manage shared resources. This application utilizes all the methods of communicating with Natural Access.