Single Component is not recommanded, better to have 2 independent components:
Having 2 separated parts (Controller/Processor) allows hosts to better handling plugins :
- separating the processing part in an another computer for optimize performance
- separating the processing part in an another process (executable) for security reason (sandboxing).
Having 2 separated parts (Controller/Processor) forces the developer to better :
- organize/program/follow pattern coding (Model(View/Controller),
- avoid him to have locking/Race condition/multithreading issue between Editing and processing.
just some examples…