I am attempting to develop a new project from a more domain driven perspective and whilst I mostly understand the principles a few things still allude me.
My domain requires interaction with external devices and therefore I need to define interfaces for device discovery, model creation and to an extent communication.
Does stuff like the above belong in the core domain, or from a domain driven perspective does stuff like this (which aids my domain but is not my domain per se) sit outside the domain entirely and use the behaviour defined within the domain to do work?
To add a little more information, I currently have the architecture modelled similar to as follows:
* Domain (references nothing)
+ IDiscoverDevices (device discovery interface)
- BeginDiscovery: void
- EndDiscovery: void
+ IDeviceProvider (factory for device creation)
- Make: IDevice
+ IDevice
* Framework (references Domain)
+ DiscoverDevices
+ DeviceProvider
* Client (references Domain and Framework)
+ SomeView (takes IDiscoverDevices, IDeviceProvider via ctor)
Using the Dependency Inversion Principle, your interfaces would be defined in the domain, but they would be implemented in the infrastructure layer.