Uncategorized

Hazina Plugins: AI-gestuurde Runtime Codegeneratie met Roslyn

Wat als je applicatie zijn eigen extensies kon schrijven tijdens runtime? Hazina’s Dynamic Plugin System gebruikt Roslyn om C#-code on-the-fly te compileren, waardoor AI nieuwe mogelijkheden kan creëren zonder herimplementatie. Dit is geen sciencefiction – het is een productieklare aanpak.

Hoe Het Werkt

  1. AI (of een gebruiker) schrijft C#-code voor een nieuwe functionaliteit
  2. Hazina compileert het tijdens runtime met behulp van Roslyn
  3. De gecompileerde plugin draait in een sandbox-omgeving
  4. Resultaten worden teruggestuurd naar de aanroeper

Een Plugin Maken

var pluginManager = serviceProvider.GetRequiredService<IPluginManager>();

var plugin = await pluginManager.CreatePluginAsync(new PluginDefinition {
    Name = "WelcomeEmailPlugin",
    Description = "Sends welcome email to new customers",
    Code = @"
        var customer = context.GetParameter<Customer>( - customer - );
        var emailService = context.GetService<IEmailService>();

        await emailService.SendTemplateAsync(
            to: customer.Email,
            template:  - welcome - ,
            data: new { CustomerName = customer.Name }
        );

        return PluginResult.Success( - Email sent - );
    "
});

Een Plugin Uitvoeren

var result = await pluginManager.ExecuteAsync("WelcomeEmailPlugin",
    new Dictionary<string, object> {
        ["customer"] = newCustomer
    });

if (result.IsSuccess)
    Console.WriteLine(result.Output);

Beveiliging: De Sandbox

Elke plugin draait in een gecontroleerde omgeving:

var securitySettings = new PluginSecuritySettings {
    AllowedNamespaces = new[] {
        "System", "System.Linq", "System.Collections.Generic"
    },
    BlockedTypes = new[] {
        "System.IO.File", "System.Net.Http.HttpClient"
    },
    MaxExecutionTime = TimeSpan.FromSeconds(30),
    MaxMemoryMB = 128
};

Versiebeheer

// Update een plugin (nieuwe versie wordt automatisch aangemaakt)
await pluginManager.UpdatePluginAsync("WelcomeEmailPlugin", newCode);

// Bekijk versiegeschiedenis
var versions = await pluginManager.GetVersionHistoryAsync("WelcomeEmailPlugin");

// Terugrollen als er iets misgaat
await pluginManager.RollbackAsync("WelcomeEmailPlugin", previousVersion);

Praktijkvoorbeelden

  • Aangepaste bedrijfsregels – Laat AI validatielogica genereren vanuit natuurlijke taal
  • Datatransformaties – Dynamische ETL-pijplijnen die zich aanpassen aan nieuwe dataformaten
  • Automatiseringsworkflows – Creëer nieuwe automatiseringsstappen zonder code te implementeren
  • Rapportgeneratoren – AI schrijft de gegevensverwerkingslogica voor aangepaste rapporten

In de volgende post gaan we dieper in op pluginbeveiliging – hoe je dynamische code veilig houdt.

Veelgestelde Vragen

Hoe werkt Hazina’s Dynamic Plugin System met Roslyn?

Hazina’s Dynamic Plugin System maakt gebruik van Roslyn om C#-code tijdens runtime te compileren. Dit stelt AI of gebruikers in staat om on-the-fly nieuwe plugins te creëren, die vervolgens in een sandbox-omgeving worden uitgevoerd om veiligheid en stabiliteit te waarborgen.

Wat zijn enkele praktijkvoorbeelden voor Hazina-plugins?

Hazina-plugins kunnen worden gebruikt voor verschillende toepassingen, waaronder het genereren van aangepaste bedrijfsregels, het creëren van dynamische ETL-pijplijnen, het automatiseren van workflows en het genereren van rapporten. Deze flexibiliteit stelt bedrijven in staat snel aan te passen aan veranderende eisen zonder code opnieuw te implementeren.

Hoe zorgt Hazina voor de beveiliging van runtime-gegenereerde plugins?

Hazina voert elke plugin uit in een gecontroleerde sandbox-omgeving, waarbij toegang tot specifieke namespaces en typen wordt beperkt. Extra beveiligingsinstellingen, zoals uitvoeringstijdlimieten en geheugengrenzen, verbeteren de veiligheid van het uitvoeren van dynamische code verder.

Kunnen Hazina-plugins eenvoudig worden bijgewerkt of teruggerold?

Ja, Hazina biedt ingebouwde functionaliteit voor het bijwerken van plugins, waarbij automatisch een nieuwe versie wordt aangemaakt. Gebruikers kunnen ook de versiegeschiedenis bekijken en indien nodig terugrollen naar eerdere versies, wat flexibiliteit en controle over pluginbeheer garandeert.

Terug naar overzicht
ENNL