If you need to have high responsiveness, the HttpListener will not scale very well (you cannot accept more than one connection at a time). But for little use, trying to be careful to get the context and write the response asynchronously, it may work.
EDIT: It appears that I misunderstood the HttpListener ability to accept connections. You can accept multiple connections at the same time (see Comment). However, other IIS objects for code placement will avoid wheel reuse. Therefore, if there are no special requirements that exclude IIS, why not take a simple path?
For serious use, use IIS by creating an Http handler (a class that implements IHttpHandler or IHttpHandlerFactory or even IHttpAsyncHandler) to process requests (this is the base type that implements .aspx and others).
The correct decision really depends on what you mean by "description of about 500 clients": one at a time or immediately?
Based on the response to the comment: 500 while noting that the processing in step 3 includes another HTTP call, I doubt that the HttpListner will be able to handle the load without guaranteeing that each operation is asynchronous (receiving context and request by performing subsequent HTTP -query, and then sending a response) ... which will lead to even more complex coding.
If I have no reason to prevent IIS, using IIS will be easier because it is designed to support large-scale client requests with rich functionality, while the HttpListener "Provides a simple, programmatically controlled HTTP protocol listener."
EDIT: expanded based on more detailed download information.
source share