Table of Contents

Was ist Aident CentralLink?

Aident CentralLink ermöglicht es Business Central cloud, lokale Hardware, Dateisysteme oder benutzerdefinierte .NET-Komponenten sicher und ohne das Öffnen eingehender Firewall-Ports aufzurufen.

Wie funktioniert es?

Teil Läuft auf Zweck
CentralLink Agent Windows-Host im Kundennetz Windows-Dienst, der Plugin-DLLs lädt und eine ausgehende Hybridverbindung zum Azure Service Bus Relay aufrechterhält.
Azure Service Bus Relay Microsoft Azure (PaaS) Cloud-Relais, das den HTTPS-Verkehr von Business Central zum lokalen Agenten tunneln - kein VPN erforderlich.
CentralLink Connector (BC App) Business Central Online-Mandant AL-Erweiterung, die sich beim Relay authentifiziert und die Plugin-Endpoints des Agents aufruft.

Es verlässt nur ausgehender 443-Verkehr das LAN; der Agent hört nicht auf einem öffentlichen Port.

Architektur auf einen Blick

%% System Architecture - Aident CentralLink
graph TD
    %% ===== SaaS =====
    subgraph BC["Business Central (cloud)"]
        Ext["CentralLink Connector<br/>(AL extension)"]
    end

    %% ===== Azure =====
    subgraph Azure["Microsoft Azure"]
        Relay["Azure Service Bus Relay<br/>(Hybrid Connection)"]
    end

    %% ===== On-prem =====
    subgraph OnPrem["Kundennetz"]
        Agent["CentralLink Agent<br/>(Windows-Dienst)"]
        subgraph Plugins["Plugin-DLLs"]
            NetDrive["drive.dll"]
            NetPrinter["printer.dll"]
            Custom["*.dll"]
        end
    end

    %% Flüsse
    Ext -->|HTTPS| Relay
    Relay <--> |Hybridverbindung.| Agent
    Agent -->|/.netDrive/*| NetDrive
    Agent -->|/.netPrinter/*| NetPrinter
    Agent -->|/&lt;plugin&gt;/*| Custom

Schlüsselfeatures

  • Hybridverbindung - Azure Service Bus Relay schließt eingehende Zugriffe aus; alle Verkehr ist agent-initiiert und TLS-verschlüsselt.
  • Plugin-Modell - Jedes .NET-Assembly einfügen; Methoden mit [PluginMethod] erscheinen sofort als REST-Endpoints.
  • Keine Änderungen am Servercode - Business Central ruft das Relay mit Standard AL HTTP APIs auf; keine zusätzliche Middleware.
  • Kein VPN-Fußabdruck - Funktioniert in gesperrten Netzwerken; nur ausgehender Port 443 ist erforderlich.

Installation

Note

Die private NuGet Feed-URL und Zugangstoken (PAT) werden vom Kundenservice bereitgestellt. Ersetzen Sie <private-feed-url> und <PAT> in den unten stehenden Befehlen.

1. Vorbereiten von Chocolatey

https://chocolatey.org/install

# Installiere Chocolatey (überspringe, wenn vorhanden)
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# Installiere den Azure DevOps Credential Provider
choco install nuget-credentialprovider-vss -y

2. Das private Feed registrieren

choco source add `
    --name=CentralLinkFeed `
    --source="<private-feed-url>" `
    --user="AzureDevOps" `
    --password="<PAT>" `
    --priority=1
choco install CentralLinkAgent --source=CentralLinkFeed

Der Installer:

  1. Installiert CentralLink Agent.
  2. Erstellt den Standard-Plugin-Ordner C:\ProgramData\Aident\CentralLink\Plugins.
  1. Aufrufen: Starten Sie CentralLink über die Desktopverknüpfung.
  2. System Tray: Nach dem Start wird CentralLink im System-Tray für schnellen Zugriff angezeigt.
  3. Autostart: Das Autostart-Verhalten kann in den Anwendungseinstellungen konfiguriert werden.

Protokolle werden in Ereignisanzeige → Anwendungen und Dienste-Protokolle → CentralLink geschrieben.

Sicherheit & Deployment-Notizen

  • Nur ausgehend - Der Agent öffnet einen persistenten, gesicherten WebSocket zum Relay; keine eingehenden Firewall-Öffnungen.
  • Authentifizierung - Shared Access Signature (SAS) Schlüssel für das Relay plus BC Mandanten-Credentials; Rotation nach Bedarf.
  • Beobachtbarkeit - JSON-Protokolle integrieren sich mit dem Ereignisprotokoll, ELK, Splunk oder Azure Monitor.
  • Upgrades - choco upgrade CentralLinkAgent führt ein In-place-Update mit Konfigurationserhaltung durch.

Entwicklung von Plug-ins

using CentralLink;

namespace HelloWorldPlugin
{
    [AgentPlugin("hello")]
    public class HelloWorld : IAgentPlugin
    {
        [PluginMethod("GET")]
        public string SayHello(string name) => $"Hallo, {name}!";

        [PluginMethod("POST")]
        public string Echo(string body) => body;
    }
}
  • Kompiliere die DLL und lege sie in C:\ProgramData\Aident\CentralLink\Plugins.
  • Endpunkt wird https://<relay-namespace>.servicebus.windows.net/hello/SayHello.