I have an Angular application with a table, and I'm considering having the console application take the name of C# programs that the user can run.
I was thinking of passing the name or code of the console application to a ASP.NET WebAPI controller that will run the console application.
However, I'm not sure if it's the "right" architecture for the controller in the ASP.NET WebApi to call different console applications. Or if I should have a layer between the WebApi and calling the executables.
Please let me know if that's the right way or should I think of a different approach.
-
do you have the code for the c# console apps?Ewan– Ewan2018年12月05日 22:07:56 +00:00Commented Dec 5, 2018 at 22:07
-
No, I haven't created the c# console apps. But the apps will either produce csv files or email files.rds80– rds802018年12月05日 22:09:36 +00:00Commented Dec 5, 2018 at 22:09
-
If you haven’t created the console apps, why not make dll’s (or NuGet packages) instead?Rik D– Rik D2018年12月05日 22:18:20 +00:00Commented Dec 5, 2018 at 22:18
1 Answer 1
Its not a great idea to have a web api call an executable. There are a number of issues you have to consider.
1: Security
We are basically exposing the command line to the web. Any flaw in the way we start the console application might allow a malicious user to run some unexpected command
2: Running out of threads
With a web app we expect each request to be answered promptly, but we dont know how long the console app might run for. We could end up running out of resources
3: Permission issues
By default the console app will run as the same user that the app pool is running as. Will it have enough permissions? will it have too many permissions? you mught need impersonate a different user when you execute the app.
4: Will it close?
Not so much of a problem with a console app, but try firing up something like excel and watch your memory disappear
Your best option is to take the business logic out of the console application and use it directly as a library. But if you dont have the source code this might not be possible.
Look for alternate products which offer an api or library
If you really have to run console apps though, it can be done. Just be extra careful
-
I should've mentioned that this is an intranet website and the website, DB, web services are on 1 VM. However, these are very important points that I'll have to remember for an internet web app.rds80– rds802018年12月06日 14:41:38 +00:00Commented Dec 6, 2018 at 14:41
Explore related questions
See similar questions with these tags.