Alternative for #20170. It introduces a component specific class which actually defines what for services it provides instead of having a generic component class. To make the life easier for extension devs a trit is provided.
This pr converts the association service to it's own interface which is implemented by the component class.
Closing in favor of #20217.