# OpcApplicationInstance&lt;TTransport, TSecurity&gt; Class

<span class="api-meta">abstract · since v2.6</span>

<dl class="api-definition">
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx">Opc.UaFx</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
<dt>Members</dt>
<dd><a href="./members">OpcApplicationInstance&lt;TTransport, TSecurity&gt; Members</a></dd>
<dt>Also in</dt>
<dd>Opc.UaFx.Client</dd>
</dl>

Represents the base class of an OPC UA application instance (e.g. a client or a server) using the transport and security settings of the types specified.

## Syntax

<div class="api-signature" data-lang="csharp">

```csharp
public abstract class OpcApplicationInstance<TTransport, TSecurity>
    where TTransport : OpcTransport
    where TSecurity : OpcSecurity
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public MustInherit Class OpcApplicationInstance(Of TTransport As OpcTransport, TSecurity As OpcSecurity)
```

</div>

## Type parameters

| Name | Description |
|---|---|
| `TTransport` | The type of the transport settings (see [Transport](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#transport)). |
| `TSecurity` | The type of the security settings (see [Security](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#security)). |

## Inheritance

[Object](https://learn.microsoft.com/dotnet/api/system.object) → **OpcApplicationInstance&lt;TTransport, TSecurity&gt;**

## Implements

<ul class="api-implements">
<li><a href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></li>
<li><a href="../opc.uafx.iopcapplicationinstance/">IOpcApplicationInstance</a></li>
</ul>

## Derived types

- [OpcClient](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.client.opcclient/)
- [OpcServerBase](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/)

## Constructors

| Name | Description |
|---|---|
| [OpcApplicationInstance](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#opcapplicationinstance)<span class="api-meta">protected</span> | Initializes a new instance of the OpcApplicationInstance&lt;TTransport, TSecurity&gt; class for an application of the type specified. |

## Properties

| Name | Description |
|---|---|
| [ApplicationName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#applicationname)<span class="api-meta">virtual</span> | Gets or sets the name of the application. |
| [ApplicationUri](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#applicationuri) | Gets or sets the URI of the application. |
| [Certificate](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificate) | Gets or sets the application certificate representing the applications identity. |
| [CertificateStores](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificatestores) | Gets the [OpcCertificateStores](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccertificatestores/) instance used to maintain the different certificate stores used by the server application. |
| [Configuration](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#configuration)<span class="api-meta">virtual</span> | Gets or sets an instance of the [OpcApplicationConfiguration](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationconfiguration/) class which is used as a low-level representation of the code/file based application configuration. |
| [Namespaces](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#namespaces)<span class="api-meta">abstract · since v2.12</span> | Gets a read-only collection of namespaces used by the application instance. |
| [ProductUri](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#producturi)<span class="api-meta">since v2.10</span> | Gets or sets the URI of the product. |
| [Security](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#security) | Gets the `TSecurity` instance used to maintain the different security options used by the application instance. |
| [SystemContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#systemcontext)<span class="api-meta">abstract · since v2.11</span> | Gets the [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) which is used to store the context sensitive data and configuration used by the current application instance. |
| [Transport](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#transport) | Gets the `TTransport` instance used to maintain the different transport options used by the application instance. |

## Methods

| Name | Description |
|---|---|
| [ChangeApplicationState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#changeapplicationstate)<span class="api-meta">protected · since v2.50</span> | Changes the [ApplicationState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcapplicationinstance/members#applicationstate) of this instance. |
| [CreateSecurity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#createsecurity)<span class="api-meta">protected · abstract</span> | When implemented in a derived class; creates and initializes a new instance of the `TSecurity` which is used for the [Security](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#security) property. |
| [CreateTransport](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#createtransport)<span class="api-meta">protected · abstract</span> | When implemented in a derived class; creates and initializes a new instance of the `TTransport` which is used for the [Transport](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#transport) property. |
| [DenyIfIsDisposed](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#denyifisdisposed)<span class="api-meta">protected</span> | Verifies whether the current [IOpcApplicationInstance](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcapplicationinstance/) instance has been already disposed of. |
| [Dispose](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#dispose)<span class="api-meta">2 overloads</span> | Releases all resources used by the [IOpcApplicationInstance](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcapplicationinstance/). |
| [IsAddressSupported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#isaddresssupported)<span class="api-meta">static · 2 overloads</span> | Determines if the `address` specified is supported. |
| [OnCertificateRequested](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#oncertificaterequested)<span class="api-meta">protected · virtual</span> | Raises the [CertificateRequested](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificaterequested) event of the application instance. |
| [OnCertificateValidationFailed](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#oncertificatevalidationfailed)<span class="api-meta">protected · virtual</span> | Raises the [CertificateValidationFailed](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificatevalidationfailed) event of the application instance. |
| [Setup](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#setup)<span class="api-meta">protected · virtual</span> | Prepares the `configuration` specified before the application connects to a server or starts: updates the application certificate (see [CertificateRequested](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificaterequested)) and validates the configuration. |

## Events

| Name | Description |
|---|---|
| [CertificateRequested](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificaterequested) | Occurs when the certificate of this application instance could not automatically determined using the information of this application instance. |
| [CertificateValidationFailed](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcapplicationinstance-2/members#certificatevalidationfailed) | Occurs when the validation of a opponent application instance certificate does not fulfill the requirements for valid and trusted certificates. |

## Applies to

| Package | Versions |
|---|---|
| Opc.UaFx.Advanced | v2.6–v2.59 |
