Can someone tell me the difference between these VF tags... in brief?
@RemoteAction methods are static, and therefore can't see the current page state directly, while
apex:actionFunction methods are instance methods, and so can see the entire page state.
@RemoteAction methods require less bandwidth, and server processing time, because only the data you submit is visible and the view state is not transferred, while
apex:actionFunction has to transfer the page view state.
apex:actionFunction methods automatically update the Visualforce DOM and can refresh part or all of the page, and can provide a standard interface for showing a loading status through
Because of these polar differences, there is almost always "one right answer" for which method should be used in a given situation. An auto-complete-as-you-type feature would benefit from
@RemoteAction, because less data is used, and so it is faster and more responsive; we don't need to modify the view state, so this is a major bonus for the user. Updating the page's view state to show new Visualforce elements, in contrast, would best be served with
apex:actionFunction; using a
@RemoteAction would force the developer to manage the DOM themselves, which can be more burdensome.
@RemoteAction and update the DOM as a result will generally be incompatible with
apex:actionFunction. There's exceptions to this rule, of course, as long as both uses are isolated from each other or interact only in a carefully designed order of operations.
The difference between these two is briefed at very bottom of this link