One common method of cross module communication is through shared services. Let's say our application is composed of a shell application and various module assemblies. Our shell app provides several core services such as logging, authentication, and service