Zebra Puma Framework
Services & Plugins pour Windows et .NET
đ Vue d'ensemble
ZebraPuma est un framework d'entreprise conçu pour faciliter le développement d'applications modulaires, de services Windows et d'outils d'analyse de données. Le framework offre une architecture extensible basée sur des plugins, permettant une grande flexibilité et une maintenance simplifiée.
Auteur
Régis SCYEUR - Zebra Puma Services
Copyright
© 2025-2026 Régis SCYEUR - Zebra Puma Services - Tous droits réservés
Licence
Licence Propriétaire - Voir le fichier LICENSE
đïž Architecture de la Solution
La solution ZebraPuma est organisée en plusieurs bibliothÚques réutilisables et applications :
đŠ Composants Principaux
| Composant | Type | Description | Cibles |
|---|---|---|---|
| ZebraPuma.Plugins | BibliothĂšque | SystĂšme de plugins modulaire avec chargement dynamique | .NET 4.8, .NET 10.0 |
| ZebraPuma.System.ServiceProcess | BibliothÚque | Gestion avancée des services Windows avec support plugins | .NET 4.8, .NET 10.0-windows |
đ Documentation DĂ©taillĂ©e
BibliothĂšques Core
ZebraPuma.Plugins - SystĂšme de plugins avec chargement dynamique
- Architecture plugin/host
- Chargement automatique et manuel
- Gestion du cycle de vie
- Résolution des dépendances
ZebraPuma.System.ServiceProcess - Services Windows extensibles
- Services basés sur plugins
- Interface de contrĂŽle WinForms
- Gestion centralisée multi-services
- Support .NET Framework et .NET moderne
đ DĂ©marrage Rapide
Prérequis
- Windows 10 ou supérieur
- .NET Framework 4.8 pour les applications .NET Framework
- .NET 10.0 SDK pour les applications .NET modernes
- Visual Studio 2022 (recommandé) ou Visual Studio Code
Installation via NuGet
# 1. Ajouter le source GitHub Packages
dotnet nuget add source https://nuget.pkg.github.com/ZebraPumaOrg/index.json \
--name ZebraPuma \
--username VOTRE_USERNAME \
--password VOTRE_GITHUB_PAT
# 2. Installer les packages
dotnet add package ZebraPuma.Plugins --version 2.0.6
dotnet add package ZebraPuma.System.ServiceProcess --version 2.0.6
Authentification GitHub Packages :
- Créez un Personal Access Token (PAT) avec le scope
read:packages - Utilisez votre username GitHub et le PAT comme mot de passe
Configuration nuget.config (Optionnel)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="ZebraPuma" value="https://nuget.pkg.github.com/ZebraPumaOrg/index.json" />
</packageSources>
<packageSourceCredentials>
<ZebraPuma>
<add key="Username" value="VOTRE_USERNAME" />
<add key="ClearTextPassword" value="VOTRE_PAT" />
</ZebraPuma>
</packageSourceCredentials>
</configuration>
Utilisation de Base
Créer un Plugin Simple
using ZebraPuma.Plugins;
public class MonPlugin : PluginBase
{
public override string Name => "MonPlugin";
public override string Description => "Un exemple de plugin";
public override void Initialize(IPluginContext context)
{
base.Initialize(context);
// Logique d'initialisation
}
}
Charger des Plugins
var plugins = PluginLoader.LoadPlugins<IPlugin>();
foreach (var plugin in plugins)
{
Console.WriteLine($"Plugin chargé: {plugin.Name} v{plugin.Version}");
}
Créer un Service Windows
using ZebraPuma.System.ServiceProcess;
public class MonService : ServiceBaseExtended
{
public override string Name => "MonService";
protected override void OnStartCore(string[] args)
{
// Logique de démarrage
}
protected override void OnStopCore()
{
// Logique d'arrĂȘt
}
}
đ Structure du Projet
ZebraPuma/
âââ docs/ # Documentation complĂšte
â âââ README.md # Ce fichier
â âââ plugins.md # Doc ZebraPuma.Plugins
â âââ serviceprocess.md # Doc ZebraPuma.System.ServiceProcess
â âââ examples/ # Exemples de code
âââ src/
â âââ dotnet/
â âââ ZebraPuma.sln # Solution Visual Studio
â âââ Directory.Build.props # Configuration partagĂ©e
â âââ ZebraPuma.Plugins/ # BibliothĂšque de plugins
â âââ ZebraPuma.System.ServiceProcess/ # BibliothĂšque de services
â âââ (autres projets internes)
âââ LICENSE # Licence propriĂ©taire
âââ README.md # README principal
đ§ Configuration
Configuration des Plugins (plugins.json)
{
"AutoDiscover": true,
"Plugins": [
{
"Folder": "MonPlugin",
"Assembly": "MonPlugin.dll",
"Type": "MonNamespace.MonPlugin"
}
]
}
Configuration NLog
Chaque bibliothĂšque inclut une configuration NLog pour le logging :
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File"
fileName="${basedir}/logs/${shortdate}.log" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
</rules>
</nlog>
đ DĂ©pendances
Packages NuGet Communs
- Newtonsoft.Json 13.0.4 - Sérialisation JSON
- NLog 6.0.7 - Logging structuré
Packages Spécifiques
ZebraPuma.System.ServiceProcess
- System.ServiceProcess.ServiceController 9.0.0 (.NET 10.0 uniquement)
đ FonctionnalitĂ©s Principales
ZebraPuma.Plugins
- â Chargement dynamique de plugins depuis DLL
- â Auto-dĂ©couverte des plugins dans les dossiers
- â Configuration JSON flexible
- â RĂ©solution automatique des dĂ©pendances d'assemblies
- â Gestion du cycle de vie (Initialize, Dispose)
- â Support multi-frameworks (.NET 4.8 et .NET 10.0)
ZebraPuma.System.ServiceProcess
- â Services Windows Ă©tendus avec interface IServiceExtended
- â Classe de base ServiceBaseExtended thread-safe
- â ServiceManager pour gĂ©rer plusieurs services
- â Interface WinForms de contrĂŽle (ServiceControllerForm)
- â IntĂ©gration avec le systĂšme de plugins
- â Support multi-frameworks avec Windows Forms
đ ïž Compilation et DĂ©ploiement
Compilation en Ligne de Commande
# Compiler toute la solution
dotnet build src\dotnet\ZebraPuma.sln --configuration Release
# Compiler un projet spécifique
dotnet build src\dotnet\ZebraPuma.Plugins\ZebraPuma.Plugins.csproj
# Créer les packages NuGet
dotnet pack src\dotnet\ZebraPuma.Plugins\ZebraPuma.Plugins.csproj --configuration Release
Publication
# Publier pour .NET Framework 4.8
dotnet publish src\dotnet\ZebraPuma.System.ServiceProcess\ZebraPuma.System.ServiceProcess.csproj `
--configuration Release `
--framework net48 `
--output publish\net48
đ Bonnes Pratiques
Développement de Plugins
- Héritage de PluginBase : Utiliser
PluginBasepour bénéficier du pattern Dispose - Nom unique : Chaque plugin doit avoir un nom unique
- Versioning : Suivre le versioning sémantique (SemVer)
- Logging : Utiliser NLog pour tracer les opérations
- Configuration : Utiliser
PluginConfigLoaderpour charger la configuration
Développement de Services
- Thread Safety : Les services doivent ĂȘtre thread-safe
- Gestion d'erreurs : Capturer et logger toutes les exceptions
- Timeout : Implémenter des timeouts pour les opérations longues
- Ătat : Maintenir un Ă©tat cohĂ©rent (IsRunning)
- Cleanup : Libérer toutes les ressources dans OnStopCore
đ Debugging et Troubleshooting
Logs
Les logs sont générés dans le dossier logs/ de chaque application :
{Application}/logs/{date}.log
ProblĂšmes Courants
Le plugin ne se charge pas
- Vérifier que le fichier
plugins.jsonexiste - Vérifier que le chemin Assembly est correct
- Consulter les logs NLog
Service ne démarre pas
- Vérifier les permissions Windows
- Vérifier que OnStartCore ne lÚve pas d'exception
- Consulter l'Event Viewer Windows
Erreur de résolution d'assembly
- Vérifier que toutes les DLL dépendantes sont présentes
- Utiliser Fusion Log Viewer pour diagnostiquer
đ§Ș Tests
Tests Unitaires
# Exécuter tous les tests
dotnet test src\dotnet\ZebraPuma.sln
# Tests avec couverture
dotnet test --collect:"XPlat Code Coverage"
đ Roadmap
Version 2.1 (Q1 2026)
- [ ] Support .NET 11.0
- [ ] Amélioration du hot-reload des plugins
- [ ] Interface de configuration web
Version 2.2 (Q2 2026)
- [ ] Support Linux pour les bibliothĂšques core
- [ ] Plugin manager GUI
- [ ] Métriques et monitoring intégrés
đ€ Contribution
Ce projet est sous licence propriétaire. Les contributions externes ne sont pas acceptées sans accord commercial préalable.
Pour toute question commerciale :
- Email : contact@zebrapuma.services
- GitHub : https://github.com/ZebraPumaOrg
đ Historique des Versions
v2.0.x (Décembre 2025)
- Migration depuis EuroJapan vers ZebraPuma
- Support multi-frameworks (.NET 4.8 et .NET 10.0)
- Refactoring complet de l'architecture
- Documentation complĂšte
v1.0.x (2024)
- Version initiale dans le projet EuroJapan
- Support .NET Framework uniquement
đ Liens Utiles
- đŠ Repository des Packages
- đ Documentation ComplĂšte
- đ Packages NuGet
- đ RĂ©fĂ©rence API
- đ Licence
âčïž Note : Le code source de dĂ©veloppement est dans un repository privĂ©. Seuls les packages NuGet compilĂ©s et la documentation sont publics.
Made with â€ïž by RĂ©gis SCYEUR, Zebra Puma Services