I'm currently trying to design an application and I'm having trouble trying to decide on the architecture to use for it. 

This will be a .net application and essentially what this application will have is a server running some specific software that this application will interact with. On this server there needs to be a provisioning service running that will actually interact with this application, queue requests etc. Then there will be a web front end which provides the user interface and communicates with the service, which then communicates with the software, hope that makes sense. This will mean the web interface can be installed on a different machine to the actual software.

So what i'm trying to establish is:

1. What is the best thing to use on the server running the application, a web service running in IIS, or a Windows Service.
2. If the provisioning service is a windows service, what is the best way for the asp.net web application to communicate with it.
3. Are there any patterns or architectures that deal with this sort of setup.