I have a ton of Adam's All Purpose Cleaner, so that's usually my go to. But really any all purpose cleaner should do ok for you.
I have sprayed my engine bay with a hose before, but I try to keep it clean enough that it's not required every time. I have exposed intake filters, so I covered those along with the alternator with some towels. Then I just gave it a nice pre-wash, then APC, then a rinse, and then Super VRT where needed for a perfectly treated finish. I remove all the cowls, too. It's not difficult, and it allows you to clean the crevices much easier