Grazie serfernet e gian82, mi avete fatto fare un passo avanti!
Ho fatto un po' di prove, che ricapitolo qua:
- MM138CppConsole, DLL caricata da applicazione console in C++Builder: 4,922 s
- MM138CsConsole, DLL caricata da applicazione console in C#: 5,484 s
- MM138CsASPNETCore, DLL caricata da applicazione web ASP.NET Core in C# su Kestrel: 6,042 s
- MM138CsASPNETCore, DLL caricata da applicazione web ASP.NET Core in C# su IIS: 9,445 s
- MM138CsASP, DLL caricata da applicazione web ASP.NET in C# su IIS: 9,551 s
- MM138CsASP, DLL caricata da applicazione web ASP.NET in C# su UltiDev Web Server Pro: 10,039 s
Quindi forse ASP.NET Core in C# su Kestrel è la strada migliore.
Tra l'altro ho bisogno di molteplici istanze di questa webapp per parallelizzare il carico di lavoro, dato che la DLL non consente parallelismo.
Quindi immagino che dovrò lanciare molteplici istanze di Kestrel (comando "dotnet xxx.dll" lanciato da Attività pianificate all'avvio del server?), ognuna che risponde su una porta diversa e davanti dovrò metterci IIS che fa il routing delle richieste verso le istanze giuste (devo garantire che le richieste che riguardano un certo documento vengano servite sempre dalla stessa istanza).
Se avete qualche consiglio sulla strada da seguire, vi ringrazio molto!
Immagino che il mettere IIS davanti non rallenti l'esecuzione, ma, non essendo lui che carica la DLL, immagino che questo non succederà.
Spero di non dover stravolgere la webapp per migrare da ASP.NET Framework a ASP.NET Core...
Grazie ancora