It depends on what you are trying to clean.
Pine Sol undiluted works for small assemblies - carburetor bodies, brake calipers, and so forth.
Varsol is good for greasy parts provided that you have somewhere to store both the solvent and the cleaning tank itself. I don't have one.
An ultrasonic cleaner is a great thing to have ... and I don't have one. (Would be nice.) Plain water, or water and dish soap, should be good enough for most jobs.
For engines ... in the absence of large pieces of equipment to do this professionally ... here is what I have done.
Alternate cleaning and disassembly. Clean the bike before you take anything apart, just a normal bike wash. Then when you have bodywork and trim parts off so that you can get to the engine directly, spray really nasty spots (like behind the countershaft sprocket and the oil pan and areas around that) with WD40, let that soak, spray the whole area with degreaser, let it soak, and hose it off with a strong spray from a garden hose. Then take the engine out of the bike ... cleaning as you go makes this a less messy job. Plug intake and exhaust openings (may not be necessary if you plan to have it completely apart) and repeat that process with the engine out of the bike.
With the engine disassembled to individual parts - I do crankcases in a plastic tote filled with hot water and Simple Green. Spray greasy spots with WD40, use an old plastic brush to work it in, soak it in the Simple Green solution for a few minutes, take it out and use a strong stream from the hose to rinse them off. Repeated a couple of times, you can get all of the dirt out of them like this.
You can test crankcase oil passages by aiming the strong stream of water from the hose into the threaded fitting that the oil filter screws onto. It should come out all the crankcase oil jets when you do this.
Blow the parts off with compressed air to dry them off. For steel parts, after any water-based cleaning, dry them off and spray them with WD40 promptly. Crankshafts, con-rods, wrist-pins, cylinder wall surfaces, transmission parts.
If you have gasket residue to remove, first step is gasket remover solvent, second step is a plastic scraping tool. A plastic knife can work, a plastic brush, a windshield ice scraper blade can work, or you can make one. Don't use abrasives or metal scrapers or knives. Then repeat the cleaning process.
If you refinish cylinder walls, you have to remove all honing debris. Spray cylinder walls with WD40 then wipe them down with a clean white paper towel. If there is any hint of grey, the honing debris is not all gone - do it again. It may have to be done several times before the paper towel comes out wetted from the WD40 but without a grey tinge from honing debris. Then do it once or twice more just to make sure.
Taking an engine out of a bike is typically a dirty job. Putting it back together and back into the bike, should be a clean job.