Having an explicit service level has a number of advantages: We can reuse the same service layer to serve multiple public interfaces; for example, a graphical user interface and an API. No duplication of the orchestration logic is required. It improves modularity by gathering all related methods in one place. It further decouples the presentation and business logic layers. It makes it easier to test the business functionality.