Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

349
Visualizações
¿Debo usar métodos síncronos o asíncronos del controlador c# mongodb?

En el controlador c# mongodb, ¿hay métodos sincrónicos y asincrónicos disponibles como se muestra a continuación?

 _mongoCollection.InsertOneAsync(entity); _mongoCollection.Insert(entity);

Creo que, en la mayoría de los casos, la cantidad de trabajo realizado de forma asíncrona en la capa de acceso a datos es muy inferior. Así que estoy esperando las llamadas de la base de datos inmediatamente de la siguiente manera:

 await _mongoCollection.InsertOneAsync(entity); await _mongoCollection.DeleteOneAsync(query); await _mongoCollection.Find(query).ToListAsync();

Ahora mi pregunta es: mientras espero las llamadas de db de inmediato, no veo ningún uso de métodos asincrónicos aquí. Entonces, ¿debería usar métodos asíncronos? (o) ¿Debo usar métodos síncronos?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Creo que a las respuestas anteriores les falta un punto importante de asincronía; a saber, que cuando usa los métodos asíncronos **, libera el hilo en el que se encuentra mientras (la mayor parte) se completa la operación de E/S, y está disponible para su uso en otra parte de su aplicación; por ejemplo, atender otras solicitudes.

Supongamos que la base de datos de Mongo está en otro servidor. Incluso con una red rápida y una instancia rápida de Mongo, todavía son quizás 5 ms por comando, que en una CPU de 2 GHz son 10 millones de ciclos de reloj. Si bien no obtendrá todos esos para usar en la ejecución de su código, debido a varios gastos generales, aún obtendrá una ventaja si tiene una aplicación que puede usar los subprocesos adicionales de manera productiva.

Entonces, si su aplicación es, por ejemplo, un sitio web, una API o una interfaz de usuario, usaría los métodos asíncronos. Si se trata de una aplicación de consola de un solo subproceso, probablemente no obtenga ninguno de los beneficios anteriores.

--

** Esto supone que el método asíncrono de Mongo es verdaderamente asíncrono, y no solo envoltorios para los métodos de sincronización.

over 4 years ago · Santiago Trujillo Relatório

0

eso depende de si tiene algún uso de resultado en la siguiente declaración o no.

por ejemplo

 void async myMethod(){ var result = funcAsync(); // do some additional work.. var data = await result; . . }

arriba está el escenario en el que debe usar async await.

Ahora supongamos que tiene un método;

 void async myMethod(){ var result = await funcAsync(); // here result is required before any other logic ahead . . . }

aquí realmente no necesita usar async await, pero qué sucede si en un futuro cercano su sistema cambió y necesita agregar código adicional en el medio, entonces es posible que deba cambiar las firmas del método y la ubicación correspondiente donde se llama ese método.

Así que esto depende totalmente del requisito.

over 4 years ago · Santiago Trujillo Relatório

0

Realmente depende de cuáles son sus requisitos.

Por el código que ha publicado, puedo suponer que no necesita una llamada asíncrona, pero puede ser útil con la última llamada _mongoCollection.Find(...).ToListAsync()

Las llamadas asincrónicas (en mi humilde opinión) deben usarse solo cuando tiene alguna lógica independiente/compleja. En el ejemplo que mostraste, creo que solo puedes await la última llamada para hacerlo:

 _mongoCollection.Insert(entity); _mongoCollection.Find(query).ToListAsync();

De esta manera, simplemente puede hacer algo de lógica adicional mientras espera ToListAsync() :

 _mongoCollection.Insert(entity); Task<List<object>> _task = _mongoCollection.Find(query).ToListAsync(); // my complex logic/calculations and stuff await _task;

Siendo 100% honesto, no veo ninguna otra razón para usar llamadas asincrónicas.

Mi opinión es que, según su ejemplo, el uso de llamadas asincrónicas es simplemente inútil.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda