Originally Posted by dagfinn
I'm convinced that the terminology is important. The better we understand what the words mean, the greater our ability to create a design that's easy to understand because it's intuitive.
A command is a message expressing the user's intent. An action is either 1) what the user did (a user interface event such as clicking a button), 2) what the application does in response or even (in our context) 3) the code that generates the response.
Now the problem is that "command" is not used for just the message, but also for the code that responds to the message (the third meaning of "action" above). So this is still ambiguous, but at least it's conventional, since it's been used in that particular ambiguous way for decades in computing.
The word "request" means approximately the same as "command", but the HTTP request typically doesn't express the user's intent clearly enough for the purposes of a Web application. Lots of Web apps are full of code that basically tries to guess what's going on and what's supposed to happen based on a haphazard selection of request variables. Yes, that's Controller code, but making the HTTP request communicate more clearly is even more important than extracting the code into a separate Controller.