¿Por qué necesitamos escribir la lógica de negocios en una capa de servicio separada en lugar de escribir en el controlador? -- spring campo con spring-mvc campo con spring-boot campo con microservices camp Relacionados El problema

Why we need to write business logic in separate service layer instead of writing in controller itself?


-4
vote

problema

Español

¿Cuál es el uso de la creación de una capa diferente es la capa de servicio para la implementación de la lógica empresarial en lugar de implementar esa lógica de negocios en el controlador en sí mismo

Original en ingles

Whats the use of creating different layer i.e. Service layer for business logic implementation instead of implementing that business logic in Controller itself

           
     
     

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Depende de su arquitectura. Si está utilizando algunos de los principios de diseño impulsados ​​por el dominio, habría poco si cualquier lógica en los controladores / API. Los controladores se utilizarían para coordinar / administrar la comunicación entre los servicios de dominio (I.E. Servidor de cuentas), los repositorios (es decir, el AcountTREPO), o los servicios de infraestructura (I.E. EmailService). Toda la lógica estaría en los modelos y servicios. Algunas ventajas son ... 1. Código de prueba unitario 2. El código mejor modela el problema del negocio (los controladores no significan nada para el problema del negocio) 3. Los controladores no se convierten en un lugar para atascarse con mucha lógica de negocios y resultar en un lío enredado 4. y más ...

Por supuesto, todo esto depende de si la mantenibilidad es una prioridad

 

It depends on your architecture. If you're using some of the Domain Driven Design principles, there would be little if any logic in the controllers/api. The controllers would be used to coordinate/ manage the communication between the domain services (i.e. AccountService), repositories (i.e. AccountRepo), and or infrastructure services (i.e. EmailService). All logic would be in the models and services. Some advantages are... 1. Unit testable code 2. The code better models the business problem (controllers mean nothing to the business problem) 3. Controllers don't become a place to jam a lot of business logic into and result into a tangled mess 4. And more...

Of course this all depends on whether maintainability is a priority

 
 
2
 
vote

Se debe a la separación de preocupaciones. En el controlador que está principalmente interesado en manejar la solicitud HTTP entrante y responde a esa solicitud. Estamos preocupados por las cosas relacionadas con el manejo de cosas relacionadas con un canal de comunicación determinado.

Puede exponer una API de reposo, así como API de jabón o puede tener varios formatos INT que desea compartir los datos. BIZ LÓGICA Como tal, no le importa cómo está comunicando estos datos para finalizar a los usuarios. Así que lo sacas y mantente en un lugar común que solo trata con la lógica de BIZ mientras la clase del controlador solo llama a esto. Luego, puede tener un controlador de reposo y un controlador de contestador de jabón a través de la misma pieza de código de lógica de BIZ.

Lo que hace en el controlador es validar la solicitud Llame al servicio y su excepción de manejo de manera que desea que esté expuesta a la persona que llama.

 

It is because of Separation of concerns. In Controller which is primarily interested in handling incoming http request and responding back to that request. We are worried about things related to handling stuff related to a given communication channel.

You can expose an rest api as well soap api or you may have various formats int which you would want to share the data. Biz logic as such does not care about how you are communicating this data to end users. So you take it out and keep in one common place that only deals with biz logic while the controller class just calls this. You can then have a rest controller and soap controller answering request via same piece of biz logic code.

What you do in controller is validate the request call the service and handle exception in way you want it to be exposed to the caller.

 
 
 
 

Relacionados problema

5  ¿Dónde deben colocarse las tablas de búsqueda en una arquitectura de microservicios?  ( Where lookup tables should be placed in a microservices architecture ) 
En una arquitectura de microservicios, cada MicroService tiene su propia base de datos y tablas no debe duplicarse en diferentes bases de datos. Pero hay mesa...

0  Arquitectura del agente de cónsul .. El problema del nodo-ID después de actualizar a 0.8.1 - ¿Asunto conceptual?  ( Consul agent architecture the node id issue after upgrading to 0 8 1 concep ) 
No estoy seguro de dónde viene la raíz de mi problema, así que trato de explicar la imagen más grande. En resumen, el síntoma: después de actualizar el cóns...

1  Diferencia entre Fabrica8, Vert.x, Karaf, Felix, Equinox, Spring DM y Fusible y Docker  ( Difference between fabrica8 vert x karaf felix equinox spring dm and fuse ) 
Estoy planeando convertirme de mi arquitectura del servidor monolítico a una arquitectura de microservice. He estado haciendo alguna investigación basada en m...

204  ¿Transacciones a través de los microservicios de descanso?  ( Transactions across rest microservices ) 
Digamos que tenemos un usuario, los microservicios de descanso de la billetera y una puerta de enlace de API que se pegan juntos. Cuando Bob se registra en nu...

0  Spring Cloud Gateway + Eureka + MicroService en Heroku está colocando el puerto en el resultado de URL es el error 503 a pedido a MicroService a través de la puerta de enlace  ( Spring cloud gateway eureka microservice on heroku is putting the port in th ) 
Tengo 3 servicios desplegados en Heroku. Spring Cloud Gateway eureka un microservicio La puerta de enlace y el microservicio están registrados en Eu...

0  Cuando utilice una arquitectura de microservicios, ¿la base de datos de lectura / escritura subyacente se convierta en un cuello de botella?  ( When utilizing a microservices architecture will the underlying read write data ) 
Como describí en la pregunta, si tuviera que implementar una arquitectura de Microservices, ¿la base de datos de lectura / escritura centralizada se convirtie...

0  Servicios de reinicio automático dentro de Docker en AWS EC2  ( Auto restart services inside docker on aws ec2 ) 
¿Cómo nos reiniciamos automáticamente los servicios y los micro servicios (atracados) dentro de la instancia de EC2? Cloud Watch enviará alertas pero no reini...

4  Cómo actualizar los certificados de actualización X509 para el clúster de tela de servicio en las instalaciones  ( How to update update x509 certificates for on premise service fabric cluster ) 
La documentación para la actualización de los certificados X509 en el tejido de servicio no me está claro con respecto a las instalaciones que no son Azure (O...

-2  Diseño de microservicios  ( Microservices design ) 
Soy nuevo en microservicios y estoy dificultando en entender qué son exactamente. Tomaría una situación de ejemplo, si puedes descomponerlo a la forma en que ...

0  Registro de microservicio basado en la guerra con EUREKA Discovery Server  ( War based microservice registration with eureka discovery server ) 
Una de nuestras aplicaciones de clientes tiene la siguiente arquitectura - Frente a base de Angular aplicación web basada en la bota de primavera para ha...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos