I've been studying and implementing the pattern refered to as Onion Architecture (http://jeffreypalermo.com/blog/the-onion-architecture-part-3/).
One thing that makes me question if I understand correctly is the following:
All interfaces are defined in the Core assembly. Implementations may be implemented in other assemblies and will be linked up with an IOC container.
Since all interfaces are defined in the Core, and all assemblies reference Core, does this imply that every assembly has access to every interface?
I.e. you could theoretically import a UI service into the DAL since the DAL has access to the UI service interface and will have it resolved by the IOC container.
Doesn't this break the purpose of layered design a bit? In a traditional model this would not be possible since the DAL assembly does not reference the UI assembly.
Am I missunderstanding something or is this sort of "abuse" possible in the Onion architecture as opposed to a normal N-tier architecture?