es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Servicio alojado iniciando al arranque

Estoy trabajando en una API web que se supone que debe manejar algunas tareas de larga duración, como llamar a otra API externa para miles de llamadas y almacenar los datos devueltos. Estoy utilizando DI para inyectar un Servicio en mi controlador para manejar la lógica. Ese servicio es un servicio alojado, ya que es el tipo de servicio más adecuado según mi comprensión.

Mi problema es que el método StartAsync() se llama cada vez que se inicia la API, no solo cuando llamo al método a través de un controlador de API. ¿Alguien sabe cómo desactivar el llamado a ese método por parte del marco? ¿Es necesario o incluso recomendable usar un servicio alojado para mi situación?

Honestamente, solo comprendo la diferencia entre los servicios Singleton, Transient y Scoped, y realmente no entiendo qué se supone que es un servicio alojado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en .NET y ASP.NET-MVC con un enfoque en la inyección de dependencias, sugeriría lo siguiente con respecto al problema que ha encontrado:

    En primer lugar, un servicio alojado es un tipo de servicio en segundo plano que se ejecuta como un proceso en primer plano dentro de una aplicación. Es responsable de operaciones de larga duración, como la comunicación con sistemas externos, el procesamiento de tareas y datos y la actualización de una base de datos. Puede utilizarlo dentro de una aplicación ASP.NET Core agregándolo como un servicio en segundo plano.

    Cuando se utiliza un servicio alojado en una API web, el método StartAsync() se llama cuando se inicia la aplicación, como ha observado. Para evitar este comportamiento, puede utilizar un servicio con ámbito en su lugar. Un servicio con ámbito se crea una vez por solicitud del cliente y se desecha después de que se completa la solicitud. De esta manera, puede controlar cuándo se inicia y detiene el servicio.

    En cuanto a su pregunta sobre si un servicio alojado es necesario o recomendable para su situación, la respuesta depende de las necesidades específicas de su aplicación. Si está manejando tareas de larga duración, como hacer miles de llamadas a una API externa, un servicio alojado puede ser adecuado para sus necesidades. Sin embargo, si solo necesita realizar algunas tareas o si las tareas se pueden completar rápidamente, es posible que no necesite un servicio en segundo plano.

    En resumen, puede desactivar el marco de forma automática para llamar al método StartAsync() utilizando un servicio con ámbito en lugar de un servicio alojado. Además, si debe usar un servicio alojado depende de las necesidades específicas de su aplicación.

Comments are closed.