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
- Eine absichtlich nicht erreichbare API-URL konfigurieren.
- Mehrere Testaktionen auslösen.
- Unter
App_Data/MES.Inside/spool/readydie geschlossenen JSONL-Segmente prüfen. - Die korrekte API-URL und das Credential bereitstellen.
- Anwendung beziehungsweise Application Pool neu starten.
- 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_Dataund Spool gehören nicht in Git und nicht in öffentliche Webverzeichnisse;- für jede Anwendung und Umgebung ein eigenes Credential verwenden.
Produkt und Dokumentation
- Produktwebsite: inside.mes.wien
- Testsystem: insidetest.mes.wien
- NuGet-Dokumentation: inside.mes.wien/Documentation
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.