Dependency Injection Best Practices in a N-tier Modular Application