Projetar a camada de aplicativos de microsserviço e a API WebDesign the microservice application layer and Web API

Usar princípios SOLID e Injeção de DependênciaUse SOLID principles and Dependency Injection

Os princípios SOLID são técnicas críticas para serem usadas em qualquer aplicativo moderno e crítico, como desenvolver um microsserviço com padrões DDD.SOLID principles are critical techniques to be used in any modern and mission-critical application, such as developing a microservice with DDD patterns. SOLID é um acrônimo que agrupa cinco princípios fundamentais:SOLID is an acronym that groups five fundamental principles:

  • Princípio da Responsabilidade únicaSingle Responsibility principle

  • Princípio do aberto/fechadoOpen/closed principle

  • Princípio da Substituição de LiskovLiskov substitution principle

  • Princípio da Segregação de interfaceInterface Segregation principle

  • Princípio da Inversão de dependênciaDependency Inversion principle

SOLID trata-se da maneira como você cria as camadas internas do microsserviço ou do aplicativo e do desacoplamento das dependências entre eles.SOLID is more about how you design your application or microservice internal layers and about decoupling dependencies between them. Ele não está relacionado ao domínio, mas ao design técnico do aplicativo.It is not related to the domain, but to the application’s technical design. O princípio final, o princípio de Inversão de dependência, permite a você desacoplar a camada de infraestrutura do restante das camadas, que permite uma melhor implementação desacoplada das camadas DDD.The final principle, the Dependency Inversion principle, allows you to decouple the infrastructure layer from the rest of the layers, which allows a better decoupled implementation of the DDD layers.

DI (Injeção de Dependência) é uma maneira de implementar o princípio de Inversão de Dependência.Dependency Injection (DI) is one way to implement the Dependency Inversion principle. É uma técnica para obter um acoplamento flexível entre objetos e suas dependências.It is a technique for achieving loose coupling between objects and their dependencies. Em vez de criar uma instância de colaboradores diretamente ou usar referências estáticas (ou seja, usar novos...), os objetos de que uma classe precisa para executar suas ações são fornecidos (ou "injetados") na classe.Rather than directly instantiating collaborators, or using static references (that is, using new…), the objects that a class needs in order to perform its actions are provided to (or "injected into") the class. Geralmente, as classes declararão suas dependências por meio de seu construtor, possibilitando que elas sigam o princípio de Dependências Explícitas.Most often, classes will declare their dependencies via their constructor, allowing them to follow the Explicit Dependencies principle. Geralmente, a Injeção de Dependência baseia-se em contêineres IoC (Inversão de Controle) específicos.Dependency Injection is usually based on specific Inversion of Control (IoC) containers. O ASP.NET Core fornece um contêiner IoC interno simples, mas também é possível usar seu contêiner IoC favorito, como Autofac ou Ninject.ASP.NET Core provides a simple built-in IoC container, but you can also use your favorite IoC container, like Autofac or Ninject.

Seguindo os princípios SOLID, as classes naturalmente tenderão a ser pequenas, bem fatoradas e facilmente testadas.By following the SOLID principles, your classes will tend naturally to be small, well-factored, and easily tested. Mas como é possível saber se muitas dependências estão sendo injetadas suas classes?But how can you know if too many dependencies are being injected into your classes? Se você usar a DI por meio do construtor, será fácil detectar isso apenas observando o número de parâmetros para o construtor.If you use DI through the constructor, it will be easy to detect that by just looking at the number of parameters for your constructor. Se houver mais dependências, isso geralmente será um sinal (um code smell) de que sua classe está tentando fazer muito mais e está provavelmente violando o princípio de Responsabilidade única.If there are too many dependencies, this is generally a sign (a code smell) that your class is trying to do too much, and is probably violating the Single Responsibility principle.

Seria preciso outro guia para abordar o SOLID em detalhes.It would take another guide to cover SOLID in detail. Portanto, este guia exige que você tenha apenas um conhecimento mínimo sobre estes tópicos.Therefore, this guide requires you to have only a minimum knowledge of these topics.

Recursos adicionaisAdditional resources