Het uitvoeren van een console-app van asp.net

Ik begrijp dat ik een Process.Start kan uitvoeren om een ​​console-app vanuit een webtoepassing uit te voeren, maar ik zou graag willen weten hoe dit project correct moet worden ontworpen.

Geverifieerde gebruikers kunnen aanvragen indienen waarvoor een console-app moet worden uitgevoerd die back-endwerk doet (kan al dan niet lang duren) en de resultaten van de console-app moeten aan de gebruiker worden getoond.

Voert de Process.Start de consoleapp uit in dezelfde thread als het asp.net-proces? Zo ja, blokkeert dit de browser van de gebruiker? Moet ik dit asynchroon doen? Zo ja, hoe wordt dit aanbevolen? Hoe krijg ik resultaten terug van de console-app?

Is deze aanpak ook schaalbaar voor meerdere honderden gebruikers die een aanvraag indienen?

Nog meer reacties?

1
@YuriyRozhovetskiy Helaas is deze console-app al gemaakt en kan deze niet worden omgezet in een webservice
toegevoegd de auteur Nick, de bron
Overweeg om WCF of webservice te gebruiken in plaats van consoletoepassing
toegevoegd de auteur Yuriy Rozhovetskiy, de bron

2 antwoord

Process.Start is a non-blocking call. You can use the Process object and handle its events and read from or write to its streams.

Als het schaalbaar is, hebt u mogelijk veel krachtige servers nodig. Het hangt af van het feitelijke proces.

1
toegevoegd

De gebruikelijke oplossing is om een ​​databasetabel te hebben waarin de achtergrondbewerkingswachtrij is opgeslagen. Dus wanneer de gebruiker een aanvraag indient, wordt een nieuwe record aan de wachtrijtabel toegevoegd. De consoletoepassing wordt periodiek uitgevoerd (bijvoorbeeld gepland met Cron), controleert de wachtlijst in de database, voert de taken op de achtergrond uit en schrijft de resultaten naar de database.

Een dergelijke aanpak is zeer schaalbaar en wordt veel gebruikt.

1
toegevoegd