We've used two approaches to keeping the dogs out of the cat food:
1) Make a "cage" with a cat-sized hole into it, so dogs can't get to the food. Has to be deep enough that if the dog squeezes his head in the hole, he still can't reach that big sloppy tongue far enough in to lap up the food. We've used wire shelving tied together, those wire grid squares that have connectors so you can make shelves/cubes with them, even a small dog crate with a makeshift front on it with the cat hole in it. Cats prefer not to eat in a box, so using something open makes them happier. Have also put wire grid/shelf pieces around the bottom of a long-legged piece of furniture to make the cat food cage and keep dogs out. Two hints--you can make the hole smaller by putting something, a strip of wood, a couple rulers, etc, across the Bottom of the hole, cats easily step over, but it blocks some of the space for the dog to shove his head in. Another is we got a very long bottle brush (like a dryer vent brush) and formed it around the cat hole, so cats get brushed as they go in and out, helps cut down on the fur around the house and the cats like it, too.
2) Feed the cats up high, on a dresser or sideboard or table, that the dogs cannot get up on. Be sure to put the food near the back side, so dogs can't reach it from the front. If necessary, add some barriers or caging around it.
For cleanliness, we took a large, low, clear storage box and cut down one side of it. Cat bowls go inside this, now a 3-sided tray, so that all the bits and drips are contained and it's easy to take it to the sink to clean it, bowls and all. Keeps the furniture we have the cat food up on clean and dry.
We have grazers, too, and one super piggy. Piggy cat gets fed his measured amount closed in the laundry room (so the others don't take some, since we restrict him because he's fat because he eats everything he can). Piggy cat has arthritis, and can't jump high anymore, so the other three get fed up on a side table in another room. They graze, over several hours. I've found that by taking away the food about 2 hours before the next meal, they are hungrier and eat more initially, then slowly finish off the rest later on. I know you are concerned with your cat getting enough food, but maybe for a few days trying something like this would encourage him to eat more initially, and slowly 'stretch' his stomach so he feels like he can eat more at a time?
Bonita flakes could be a great idea, we call them Stinky Fish because they absolutely reek. But all our cats and dogs love the stuff. Blech.
If he eats more when you put the food right under his face, could it be that his sense of smell is weak, so he doesn't recognize there is food to eat? I have one cat with chronic sinus inflammation, when it flares up she stops eating as much (to the point where she loses weight) because she can't smell the food. (we had to stop using the bonita flakes as another cat is allergic to fish and gets diarrhea.) Our vet has her on a daily claritin, it makes a world of difference. Maybe ask your vet about something like this?