I am going to develop an application which will process online data (comming through socket) and it does not need any user interaction.
I am thinking of a simple con
In fact, it really depends on the usage of your application, I think.
For example, if you only need to run your processing at a specific time, the usage of the command line can be enough.
The windows service will be really interesting if your process need to run continuously, and silently (no user interaction).
You can also consider the task scheduling in Windows. Basically, it will run your application (through a .bat file for example) at specified times. It can be helpfull if your application needs to be run every day at 02:00 for example... In "Control Panel", you have an option "Scheduled Tasks". Then, you click on "Add Scheduled Task", and follow the wizard...
On the top of my head:
net start <scriptname>
)I can't add anything to VonC's list but I would add that if you're using the usual Microsoft tools (VS & .net) it's easy to do both.
I create a class library that contains all my application logic and a MyServer class which has .Start() and .Stop() methods. You can then create both a console app and winservice app that both reference this. E.g. the console App instantiates a new MyServer, calls Start, waits for a key press and calls Stop.
I use the console app during development and the windows service for deployment.