It rather depends on the finish you want to get - just clean, but still stained, clean to bare metal, or clean enough to paint. With steel/cast iron I clean with petrol, then remove rust/old paint with various wire brushes (angle grinder knotted flat wire brush or cup for large areas of steel, smaller wire brushes in an electric drill for the pokey bits), then rinse with brake cleaner or cellulose thinners before priming/painting.
Cast iron (engine block)-
Steam cleaned and then old paint etc removed with various wire brushes-

New core plugs-

Other side, and now ready for engine enamel-

Lick of paint and it's as good as new


Or if you have 'different' tastes

Alloy is different in a few ways. It's softer, so you have to be careful how you clean it - especially gasket faces. Not only does it get oily/dirty, but it oxidises as well, which is only another form of rust, but cleaning it takes more care and therefore more time.
Filthy dirty alloy bit-




I cleaned the parts with petrol, then various brass wire brushes in an electric drill/ by hand to remove dirt and oxidisation, then rinse with brake cleaner or cellulose thinners and paint.







Like I said - it depends on what finish you want. If you just clean something, then you are likely to be promoting faster/more corrosion - so a layer of oily muck would have been preferable if you don't intend to go further than a clean-up.
Cleaning/de-greasing/cleaning again/painting, looks like it takes ages, but that's not the case at all.
I used just petrol to clean internal engine parts and a soft wire brush in an electric drill. Bunging any old chemicals on finely machined surfaces is a really bad idea. Carbon deposits - such as you would find on crankshafts etc, will become dry after being rinsed with petrol and is then easier to remove with soft brushes - by hand or in a drill. Carbon particles are very abrasive, so make sure it's all removed.
Les.