Ho sviluppato una WEB API 2 riposante (C #, .NET 4.7) per un progetto di integrazione interna. Nel backend della mia API, ho bisogno di utilizzare la DLL di un venditore per elaborare l'input fornito.
La dll del venditore è scritta in C, e ha una limitazione che, non ci possono essere più di 8 istanze inizializzate allo stesso tempo.
Poiché la mia API REST può essere chiamata più volte contemporaneamente, c'è il rischio che possa raggiungere il limite di 8 istanze durante un periodo di occupato. (La mia API non è pubblica. C'è una piccola possibilità che ciò possa accadere, ma devo comunque stare al sicuro.)
Per evitare ciò, stavo pianificando di mantenere il conteggio corrente delle istanze in esecuzione su una variabile Singleton thread-safe. E se posso mantenere la logica di incremento / decremento in cui inizializzo la DLL C, posso stare al sicuro.
Poiché un'API REST è senza stato, è buona norma utilizzare un approccio statico thread-safe per implementarlo? Oppure potrebbero esserci approcci migliori come l'uso della cache del server, lo stato dell'applicazione (applicazione ["VariableName"]="Valore") o persino un file flat.
E devo aggiungere che, un database non è un'opzione nella mia situazione.