+2  A: 

You are correct that you don't want Infrastructure to depend on UI(Web), but I break that rule sometimes.

I would think instead of IViewModelMapping, create IMapper with method Map(). Then, the interface can have implementations that might have to do with view model mapping, or maybe just regular mapping. Either way, that interface can be in Core because it is not semantically bound to any type of model.

Great graphic. I hope I answered the meat of your question. The overall philosophy of the Onion Architecture is to keep your business logic and model in the middle (Core) of your application and push your dependencies as far outward as possible.

Jeffrey Palermo
Thanks Jeffrey. For now I going to re-consider the design, but possibly keep it the way it is until it gives me any major headaches. The most important thing for me is that I don’t commit to any decisions that I cannot reverse later :)
Matt Hidinger