MES Inside Samples

Öffentliche, neutrale Beispielanwendungen für die Integration von MES Inside. Die .NET-Beispiele verwenden die veröffentlichten NuGet-Pakete; Python und PHP sprechen den dokumentierten HTTP-Batchvertrag direkt an.

Dieses Repository enthält keinen MES-Inside-Servercode und keine Projektreferenzen auf das private Produktrepository.

Beispiele

Projekt Plattform NuGet-Paket
MES.Inside.Sample.AspNetCore8 ASP.NET Core / .NET 8 MES.Inside.Client.AspNetCore
MES.Inside.Sample.AspNetFramework48 ASP.NET WebForms / .NET Framework 4.8 MES.Inside.Client.AspNetFramework
MES.Inside.Sample.WinForms.CSharp8 C# WinForms / .NET 8 MES.Inside.Client
MES.Inside.Sample.WinForms.VbNet48 VB.NET WinForms / .NET Framework 4.8 MES.Inside.Client
python Python 3.9 oder neuer Standardbibliothek
php PHP 8.1 oder neuer cURL-Erweiterung

Die .NET-Beispiele erzeugen:

  • ein strukturiertes Log;
  • eine Zeitmessung;
  • einen Counter und eine Gauge;
  • eine abgefangene Division durch null mit Exception und Stacktrace;
  • ein Ereignis für den jeweiligen HTTP-Aufruf.

Voraussetzungen

  • .NET 8 SDK;
  • für das WebForms-Beispiel .NET Framework 4.8 beziehungsweise die Reference-Assemblies;
  • MES-Inside-API-URL;
  • eigener API-Key für Anwendung und Umgebung;
  • für .NET: Zugriff auf den öffentlichen MES-Gitea-NuGet-Feed.

Der Feed ist in NuGet.Config ohne Zugangsdaten eingetragen:

https://git.mes.wien/api/packages/MES-Public/nuget/index.json

Lesen und Wiederherstellen ist anonym möglich. Zugangsdaten werden nur für das Veröffentlichen neuer Pakete benötigt und gehören nie in dieses Repository.

Konfiguration

In jedem Projekt liegt eine neutrale mesinside.json. Vor dem Start werden mindestens angepasst:

{
  "identity": {
    "tenant": "YourTenant",
    "project": "YourProject",
    "application": "YourApplication",
    "environment": "Development"
  },
  "transport": {
    "apiUrl": "https://inside.example.test/api/v1",
    "credentialReference": "sample-web"
  }
}

identity.instance wird absichtlich nicht vorgegeben. Der .NET-Client erzeugt beim ersten Start eine stabile technische ID und speichert sie neben der Spool in installation.id. Dadurch bleiben mehrere Installationen derselben Anwendung getrennt erkennbar. Diese Datei darf nicht in ein Deployment- oder VM-Template kopiert werden. Ein ausdrücklich konfigurierter Wert ist nur dann sinnvoll, wenn der Betreiber dessen Eindeutigkeit selbst sicherstellt.

Alle .NET-Beispiele verwenden 0.4.0-preview.1. Dieses M4-Paket meldet außerdem seine Clientversion automatisch an das Installationsregister.

Der API-Key steht nicht in dieser Datei. Für credentialReference: "sample-web" wird folgende Umgebungsvariable verwendet:

MES_INSIDE_CREDENTIAL_SAMPLE_WEB

PowerShell:

$env:MES_INSIDE_CREDENTIAL_SAMPLE_WEB="<API-Key nur lokal einsetzen>"

Die WinForms-Beispiele verwenden eigene Credential-Referenzen und damit:

$env:MES_INSIDE_CREDENTIAL_SAMPLE_WINFORMS_CSHARP="<API-Key nur lokal einsetzen>"
$env:MES_INSIDE_CREDENTIAL_SAMPLE_WINFORMS_VB="<API-Key nur lokal einsetzen>"

ASP.NET Core starten

dotnet restore .\src\MES.Inside.Sample.AspNetCore8
dotnet run --project .\src\MES.Inside.Sample.AspNetCore8

Anschließend die ausgegebene lokale URL im Browser öffnen.

ASP.NET Framework bauen

dotnet restore .\src\MES.Inside.Sample.AspNetFramework48
dotnet build .\src\MES.Inside.Sample.AspNetFramework48

Die WebForms-Anwendung wird danach über IIS oder IIS Express mit .NET CLR 4 und Integrated Pipeline gestartet.

C# WinForms starten

dotnet restore .\src\MES.Inside.Sample.WinForms.CSharp8
dotnet run --project .\src\MES.Inside.Sample.WinForms.CSharp8

Das .NET-8-Beispiel zeigt Meldung, Zeitmessung, Counter/Gauge, Exception und einen kombinierten Testlauf. Die Statusfläche zeigt lokale Batches, Transportdiagnose und die Diagnose der begrenzten Spool.

VB.NET WinForms starten

dotnet restore .\src\MES.Inside.Sample.WinForms.VbNet48
dotnet build .\src\MES.Inside.Sample.WinForms.VbNet48
.\src\MES.Inside.Sample.WinForms.VbNet48\bin\Debug\net48\MES.Inside.Sample.WinForms.VbNet48.exe

Das VB.NET-Beispiel verwendet .NET Framework 4.8 und dieselbe MES.Inside.Client-API. Damit dient es als Vorlage für bestehende Desktopanwendungen, ohne Projektreferenz auf den privaten Quellcode.

Python starten

$env:MES_INSIDE_API_URL="https://insidetest.mes.wien/api/v1"
$env:MES_INSIDE_API_KEY="<projektspezifischer API-Key>"
python .\src\python\app.py

Das Beispiel benötigt keine externen Python-Pakete. Es schreibt zunächst lokal nach src/python/spool/ready und löscht einen Batch erst nach einer erfolgreichen API-Antwort. Seine stabile Instanz-ID liegt in src/python/installation.id.

PHP starten

$env:MES_INSIDE_API_URL="https://insidetest.mes.wien/api/v1"
$env:MES_INSIDE_API_KEY="<projektspezifischer API-Key>"
php .\src\php\index.php

Das Beispiel benötigt PHP 8.1 oder neuer und die cURL-Erweiterung. Der lokale Spool liegt unter src/php/spool/ready; die stabile Instanz-ID in src/php/installation.id.

Ausfalltest

  1. Eine absichtlich nicht erreichbare API-URL konfigurieren.
  2. Mehrere Testaktionen auslösen.
  3. Unter App_Data/MES.Inside/spool/ready die geschlossenen JSONL-Segmente prüfen.
  4. Die korrekte API-URL und das Credential bereitstellen.
  5. Anwendung beziehungsweise Application Pool neu starten.
  6. Prüfen, dass die Ereignisse übertragen und erst nach erfolgreicher Bestätigung aus der Ready-Spool entfernt wurden.

MES Inside darf die Beispielanwendung bei einem API-Ausfall nicht blockieren.

Sicherheit

  • keine API-Keys, Passwörter oder Connection Strings committen;
  • keine vollständigen Formulare, Sessions oder Request-Dumps protokollieren;
  • IP- und Benutzererfassung bleibt in den Beispielen deaktiviert;
  • App_Data und Spool gehören nicht in Git und nicht in öffentliche Webverzeichnisse;
  • für jede Anwendung und Umgebung ein eigenes Credential verwenden.

Produkt und Dokumentation

Lizenz

Für dieses öffentliche Beispielrepository ist noch keine Nutzungslizenz festgelegt. Bis zur Ergänzung einer Lizenz gelten die gesetzlichen Urheberrechte. Vor einer Weiterverwendung außerhalb eines Integrationstests ist die Lizenzfrage mit Mayer EDV Services zu klären.

S
Description
No description provided
Readme 77 KiB
Languages
C# 44.3%
Visual Basic .NET 19.8%
PHP 16.3%
Python 14.1%
ASP.NET 5.5%