# Sample applications

> Reference: Fully runnable clients and servers with the OPC UA .NET SDK in C# and VB.NET, filterable by kind and language, with links to GitHub.

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

The sample applications in the [opcuanet-samples](https://github.com/Traeger-GmbH/opcuanet-samples) repository on GitHub are complete programs that you can clone, run, and use as a starting point for your own applications. Most clients have a matching server in the same area. In that case, start the server first and then the client.

To run a sample, for example the client `Basic/Client`:

```sh
git clone https://github.com/Traeger-GmbH/opcuanet-samples.git
cd opcuanet-samples
dotnet run --project cs/Basic/Server -f net8.0
dotnet run --project cs/Basic/Client -f net8.0
```

Run the server and the client in two separate consoles. The samples use the SDK in evaluation mode, that is, without a license key.

## Basics

- Client (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client)): This sample demonstrates how to implement a primitive OPC UA client.
- Server (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server)): This sample demonstrates how to implement a primitive OPC UA server.
- Client.AE (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.AE), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.AE)): This sample demonstrates how to perform handling of Alarm + Events (AE) on the nodes provided by the OPC UA server.
- Server.AE (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.AE), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.AE)): This sample demonstrates how to setup an OPC UA server to provide AE to its nodes provided.
- Client.Authentication (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.Authentication), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.Authentication)): This sample demonstrates how to authenticate at an OPC UA server using user name and password.
- Server.Authentication (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.Authentication), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.Authentication)): This sample demonstrates how to setup an OPC UA server with a UserName policy using the UserName ACL for custom user name and password authentication.
- Client.Browsing (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.Browsing), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.Browsing)): This sample demonstrates how to browse nodes and their attributes provided by the OPC UA server.
- Client.DataTypes (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.DataTypes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.DataTypes)): This sample demonstrates how to consume structured data types defined and used by the OPC UA server.
- Server.DataTypes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.DataTypes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.DataTypes)): This sample demonstrates how to setup an OPC UA server to provide nodes with custom data types.
- Server.DataTypes.Complex (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.DataTypes.Complex), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.DataTypes.Complex)): This sample demonstrates how to setup an OPC UA server to provide nodes with custom data types which are supplied using subtrees there appropriate.
- Client.EventTypes (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.EventTypes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.EventTypes)): This sample demonstrates how to subscribe to events of a custom event type and how to access their structured event data through an own event class.
- Server.EventTypes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.EventTypes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.EventTypes)): This sample demonstrates how to setup an OPC UA server to provide a custom event type defined in a nodeset. Its events carry structured data and are raised when a client calls the StartJob method.
- Client.HDA (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.HDA), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.HDA)): This sample demonstrates how to perform history data access (HDA) on the data provided by the OPC UA server.
- Server.HDA (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.HDA), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.HDA)): This sample demonstrates how to setup an OPC UA server to provide HDA to its nodes provided.
- Server.HDA.Sql (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.HDA.Sql), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.HDA.Sql)): This sample demonstrates how to setup an OPC UA server to provide HDA via SQL to its nodes provided.
- Client.Methods (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Client.Methods), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Client.Methods)): This sample demonstrates how to perform method calls using the OPC UA server provided method nodes.
- Server.Methods (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.Methods), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.Methods)): This sample demonstrates how to setup an OPC UA server to provide method nodes.
- Server.NodeTypes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Basic/Server.NodeTypes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Basic/Server.NodeTypes)): This use case demonstrates how to import and implement custom node types using a nodeset.

## Configuration

- Client.ConfiguredViaCode (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Configuration/Client.ConfiguredViaCode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Configuration/Client.ConfiguredViaCode)): This sample demonstrates how to configure an OPC UA client using in code configuration.
- Server.ConfiguredViaCode (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Configuration/Server.ConfiguredViaCode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Configuration/Server.ConfiguredViaCode)): This sample demonstrates how to configure an OPC UA server using in code configuration.
- Client.ConfiguredViaXml (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Configuration/Client.ConfiguredViaXml), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Configuration/Client.ConfiguredViaXml)): This sample demonstrates how to configure an OPC UA client using a XML configuration file.
- Server.ConfiguredViaXml (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Configuration/Server.ConfiguredViaXml), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Configuration/Server.ConfiguredViaXml)): This sample demonstrates how to configure an OPC UA server using a XML configuration file.

## Node types

- Client.AnalogItemNode (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Client.AnalogItemNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Client.AnalogItemNode)): This sample demonstrates how to access and work with nodes of the AnalogItemType.
- Server.AnalogItemNode (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Server.AnalogItemNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Server.AnalogItemNode)): This sample demonstrates how to setup an OPC UA server to provide nodes of the AnalogItemType.
- Client.DataTypeNode (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Client.DataTypeNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Client.DataTypeNode)): This sample demonstrates how to access and work with nodes which use custom data types.
- Server.DataTypeNode (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Server.DataTypeNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Server.DataTypeNode)): This sample demonstrates how to setup an OPC UA server to provide DataTypeNode nodes.
- Client.MethodNode (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Client.MethodNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Client.MethodNode)): This sample demonstrates how to access and work with method nodes.
- Server.MethodNode (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Nodes/Server.MethodNode), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Nodes/Server.MethodNode)): This sample demonstrates how to setup an OPC UA server to provide MethodNode nodes.

## Subscriptions

- Client.BulkChanges (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Client.BulkChanges), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Client.BulkChanges)): This sample demonstrates how to subscribe to a large number of nodes and process their data changes in a separate consumer thread.
- Server.BulkChanges (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Server.BulkChanges), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Server.BulkChanges)): This sample demonstrates how to setup an OPC UA server that changes the values of a large number of nodes at once in a fixed interval.
- Client.BulkChanges.HiRes (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Client.BulkChanges.HiRes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Client.BulkChanges.HiRes)): This sample demonstrates how to receive data changes of a large number of nodes with minimal latency, using a publishing interval of zero and a callback for each data set.
- Server.BulkChanges.HiRes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Server.BulkChanges.HiRes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Server.BulkChanges.HiRes)): This sample demonstrates how to configure an OPC UA server for high resolution publishing, to deliver changes of a large number of nodes in intervals of a few milliseconds.
- Client.HandshakeChanges (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Client.HandshakeChanges), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Client.HandshakeChanges)): This sample demonstrates how a client reads a block of data as soon as the server signals it as available and confirms its processing through a handshake node.
- Server.HandshakeChanges (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Subscriptions/Server.HandshakeChanges), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Subscriptions/Server.HandshakeChanges)): This sample demonstrates how to setup an OPC UA server that provides blocks of data using a handshake: it signals new data and waits until a client confirms their processing.

## Scenarios

- App.LicenseUsage (App; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/App.LicenseUsage), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/App.LicenseUsage)): This sample demonstrates how to apply the license keys of the SDK and how to protect them by string encryption when the application is obfuscated, here using Eazfuscator.NET.
- Client.Blazor (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.Blazor)): This sample demonstrates how to connect to an OPC UA server and read node values from a Blazor Server application.
- Client.ClientAddedNodesWithHistory (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.ClientAddedNodesWithHistory), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.ClientAddedNodesWithHistory)): This use case demonstrates how a client adds a variable node with history access to the server and writes values that the server records as history.
- Server.ClientAddedNodesWithHistory (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.ClientAddedNodesWithHistory), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.ClientAddedNodesWithHistory)): This use case implementes the necessary logic required to support nodes which are added through a client application which wants the server to enable historical data.
- Server.CustomFile (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.CustomFile), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.CustomFile)): This use case represents in which way the IOpcFileInfo interface can be used to implement "custom file sources" for a OpcFileNode.
- Client.DynamicNamespaces (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.DynamicNamespaces), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.DynamicNamespaces)): This use case demonstrates how a client addresses nodes by namespace URI instead of namespace index and renews its subscriptions after each reconnect, so it copes with namespaces that change on the server.
- Server.DynamicNamespaces (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.DynamicNamespaces), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.DynamicNamespaces)): This use case demonstrates how to provide each namespace through its own node manager and how to restart the server with a different selection of node managers.
- Server.DynamicNodes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.DynamicNodes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.DynamicNodes)): This use case realizes dynamic nodes which are created on-demand by the server depending on the underlying system needs.
- Client.GenericEvents (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.GenericEvents), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.GenericEvents)): This use case demonstrates how to receive events of a custom event type without an own class for its fields, using a generic event class that exposes all selected event fields.
- Server.LightweightEvents (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.LightweightEvents), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.LightweightEvents)): This use case demonstrates in which way a server can "re-use" a single event node to represent events from different event sources without to define for each source another event node.
- Client.Localization (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.Localization), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.Localization)): This use case demonstrates how a client requests localized display names and descriptions by specifying its preferred locales.
- Server.Localization (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.Localization), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.Localization)): This use case demonstrates how to provide display names and descriptions of nodes in several languages using the globalization resources of the server.
- Server.NodeAccess (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.NodeAccess), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.NodeAccess)): This use case realizes restricted node access using built-in ACL functionality And subclassing for user dependent node metadata.
- Client.NodeExplorer (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.NodeExplorer), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.NodeExplorer)): This sample demonstrates how to browse the address space of an OPC UA server and show it as a tree in a Windows Forms application.
- Server.NodeSet.PackML (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.NodeSet.PackML), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.NodeSet.PackML)): This use case demonstrates how to import and implement an alarm from a nodeset using the companion specification from PackML.
- Server.NodeSet.Umati.Legacy (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.NodeSet.Umati.Legacy), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.NodeSet.Umati.Legacy)): This use case demonstrates how to import and implement an alarm from a nodeset using the companion specification from UMATI.
- Server.NodeSet.Umati.MachineTool (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.NodeSet.Umati.MachineTool), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.NodeSet.Umati.MachineTool)): This use case demonstrates how to import and implement an alarm from a nodeset using the companion specifications from UMATI: In this case 'MachineTool'.
- Client.PackML (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.PackML), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.PackML)): This use case demonstrates how to call a method of the PackML companion specification with structured arguments, using data types generated from the PackML nodeset.
- Server.Playground (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.Playground), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.Playground)): This use case realizes a server which offers different kinds of nodes to easily test client applications against different possible use cases.
- Client.RecursiveSubscription (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.RecursiveSubscription), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.RecursiveSubscription)): This use case demonstrates how a client adds job nodes below a monitored node and receives the events the server raises for each added node.
- Server.RecursiveSubscription (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.RecursiveSubscription), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.RecursiveSubscription)): This use case represents in which way a server can monitor newly added nodes, work with them and notify clients about changes on these nodes.
- Client.SignalR (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.SignalR)): This use case demonstrates how to forward data changes of OPC UA nodes to a web browser using an ASP.NET Core SignalR hub.
- Server.SignalR (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.SignalR), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.SignalR)): This use case demonstrates how to setup an OPC UA server whose node values change periodically. It provides the nodes that the Client.SignalR sample forwards to the web browser.
- Server.SimaticNodes (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.SimaticNodes), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.SimaticNodes)): This use case demonstrates how to define a custom factory for node identifiers to define / use node identifiers using the "SIEMENS SIMATIC" style of dot separated and quoted node names to construct the node identifier of a node.
- Server.SimaticNodeSet (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.SimaticNodeSet), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.SimaticNodeSet)): This use case demonstrates how to setup an OPC UA server that imports the nodeset of a SIMATIC S7-1500 controller and identifies itself like the server of the controller, e.g. to test clients without the hardware.
- Client.StateMachine (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.StateMachine), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.StateMachine)): This use case demonstrates how a client monitors the current state of a state machine provided by the server.
- Server.StateMachine (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.StateMachine), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.StateMachine)): This use case demonstrates how to implement a finite state machine node with custom states and how the server changes its state.
- Client.Temperature (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.Temperature), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.Temperature)): This sample demonstrates how to connect to an OPC UA server and read the value of a node once per second.
- Server.Temperature (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.Temperature), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.Temperature)): This sample demonstrates how to setup an OPC UA server that provides a temperature node and updates its value once per second.
- Client.Umati.Legacy (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.Umati.Legacy), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.Umati.Legacy)): This use case demonstrates how to subscribe to the alarms of a machine tool according to the legacy umati information model and read their specific fields.
- Client.Umati.MachineTool (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Client.Umati.MachineTool), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Client.Umati.MachineTool)): This use case demonstrates how to receive and confirm alerts of a machine tool according to the OPC UA companion specification for machine tools (umati).
- Server.UserIdentities (Server; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Scenarios/Server.UserIdentities), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Scenarios/Server.UserIdentities)): This use case demonstrates how generic user identities could be implemented using built-in ACL functionality and how subclassing can be used to define the generic user identities.

## Platforms

- Client.Uwp (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Platforms/Client.Uwp)): This sample demonstrates how to implement a simple OPC UA client in an UWP Application.
- Client.Wpf (Client; [C#](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/cs/Platforms/Client.Wpf), [VB.NET](https://github.com/Traeger-GmbH/opcuanet-samples/tree/master/vb/Platforms/Client.Wpf)): This sample demonstrates how to use the OPC UA client in a WPF application to subscribe to a node and show its value.
