# Client development

> Develop clients with the OPC UA .NET SDK: introduction, getting started, and all topics from reading and writing to configuration and deployment.

> This content was machine translated and may contain errors. [Read in German](https://www.traeger.de/docs/development/opcua/client/)

Develop OPC UA clients with the OPC UA .NET SDK.

This chapter guides you through developing OPC UA clients with the OPC UA .NET SDK. If you are new to the SDK, start with the introduction and getting started. You can read all other pages independently of each other.

## Basics

- [Introduction](https://www.traeger.de/en/docs/development/opcua/client/introduction): The concepts that every client development with the OPC UA .NET SDK builds on: connecting, connection parameters, endpoints, and security.

- [Getting started](https://www.traeger.de/en/docs/development/opcua/client/getting-started): Set up your first client with the OPC UA .NET SDK: import the namespace, connect, and disconnect again, also for OPC Classic servers.

- [Configuration](https://www.traeger.de/en/docs/development/opcua/client/configuration): Configure the client: application, connection monitoring, data transfer limits, certificate, and XML configuration.

## Data

- [Read and write values](https://www.traeger.de/en/docs/development/opcua/client/read-write-values): Read and write the values of single and multiple nodes, access other attributes and parts of arrays, and evaluate the results with their status.

- [Process many values efficiently](https://www.traeger.de/en/docs/development/opcua/client/bulk-access): Read, write, and subscribe to thousands of values with one call: how the SDK adapts large requests to the limits of the server, and what pays off when.

- [Browse nodes](https://www.traeger.de/en/docs/development/opcua/client/browse): Explore the address space of a server: node by node from the ObjectsFolder, or several levels in one pass.

- [Subscriptions](https://www.traeger.de/en/docs/development/opcua/client/subscriptions): Subscribe to value changes and events of nodes, handle notifications, manage subscriptions, and narrow them down with filters.

- [Structured data](https://www.traeger.de/en/docs/development/opcua/client/structured-data): Access structured data types in a simple, name-based, dynamic, or typed way, and generate and define data types.

- [Historical data](https://www.traeger.de/en/docs/development/opcua/client/historical-data): Read the historical values of a node over time ranges, at specific times, and aggregated, modify and delete them, and read the event history.

- [Node types](https://www.traeger.de/en/docs/development/opcua/client/node-types): Work with method, file, data type, variable, and data item nodes, including analog values.

- [Read and write files](https://www.traeger.de/en/docs/development/opcua/client/file-access): Access the file nodes of a server: read and append content, open files as a stream, check permissions, and handle errors.

## Events and alarms

- [Events](https://www.traeger.de/en/docs/development/opcua/client/events): Receive, filter, and evaluate the events of a server, work with event nodes, and receive audit events.

- [Alarms and conditions](https://www.traeger.de/en/docs/development/opcua/client/alarms-conditions): Event nodes with conditions: dialog and acknowledgeable conditions, alarm conditions up to limit alarms.

## Advanced

- [Edit the address space](https://www.traeger.de/en/docs/development/opcua/client/address-space): Create and delete nodes and references in the address space of a server from the client.

- [OPC Classic](https://www.traeger.de/en/docs/development/opcua/client/opc-classic): Access OPC DA, OPC AE, and OPC HDA servers with the same OpcClient: features, nodes, remote servers over DCOM, and server discovery.

## Operation

- [Long-running clients](https://www.traeger.de/en/docs/development/opcua/client/long-running-clients): Clients for continuous operation: how the SDK detects connection breaks, restores sessions and subscriptions, and what the application handles itself.

- [Handle errors](https://www.traeger.de/en/docs/development/opcua/client/error-handling): When the client returns a result with a status and when it throws an OpcException, how to evaluate both, and which status codes are common.

- [Test clients](https://www.traeger.de/en/docs/development/opcua/client/testing): Test client logic in automated tests without a plant: start an OpcServer with test nodes in the same process and test against it.

- [Deploy the application](https://www.traeger.de/en/docs/development/opcua/client/deployment): Deploy a client application: files and dependencies, network, your own application certificate, XML configuration, and licensing.

- [Secure clients](https://www.traeger.de/en/docs/development/opcua/security/client): Secure the client: choose an endpoint, validate server certificates, protect your own certificate, authenticate users, and use a checklist for production.
