Implementar HttpClient y HttpClientFactory de forma correcta en C#

Поделиться
HTML-код
  • Опубликовано: 11 янв 2025

Комментарии • 33

  • @NetMentor
    @NetMentor  4 года назад +6

    Blog: www.netmentor.es/Entrada/implementar-httpclient
    twitter: twitter.com/NetMentorTW

  • @andrescamperos
    @andrescamperos 3 года назад +3

    Muchas gracias por compartir la solución a tu error, hay muchos videos de solicitudes http en 5 minutos pero pocos se detienen a explicar el como hacerlo mejor y lo que podría pasar de no hacerlo correctamente

  • @hectorluiscontrerasdigirol7540
    @hectorluiscontrerasdigirol7540 3 года назад +1

    wo wo wooooo tenia el mismo problema, y tenia que andar escribiendo mil cosas, ahora ya con esto se soluciono a medidas gigantes!!!
    Gracias Realmente genial!!

  • @marcelodalmau7909
    @marcelodalmau7909 Год назад

    Excelente video! No se si va a solucionar mi problema, pero aprendí algo nuevo!

  • @ramirorocha519
    @ramirorocha519 3 года назад +1

    excelente aporte. ya había enfrentado este tipo de problemas en el pasado y lo habíamos solucionado con una clase que se encargaba de hacer todos los llamados http usando un único httpclient como indicas. pero este explicación es la mejor que he visto. httpclientFactory es la solución definitiva.

  • @freddycancino1
    @freddycancino1 3 года назад +1

    Buen dia, muchas gracias por compartir tan valiosa informacion.

  • @pablogarnica6608
    @pablogarnica6608 2 года назад +1

    realmente bueno... gracias por m compartir...

  • @PabloHelal
    @PabloHelal 4 года назад +2

    Excelente tip. Muchas gracias!!!

  • @jlitodelcid326
    @jlitodelcid326 4 года назад +1

    Excelente vídeo. Me será muy útil.

  • @gustavorodriguez6098
    @gustavorodriguez6098 3 года назад +1

    que buena explicacion eres un crack

  • @randybenjamincastro9027
    @randybenjamincastro9027 3 года назад +2

    Excelente, ojalá utilizaras el tema oscuro, para los vides resalta mejor.

    • @NetMentor
      @NetMentor  3 года назад

      Gracias 😊.
      Respecto al tema oscuro imposible, no estoy nada cómodo con el :/

    • @rsarubbi3671
      @rsarubbi3671 3 года назад

      Sí, la verdad que con el contraste del tema oscuro se ve mucho mejor el código.

  • @javival6352
    @javival6352 3 года назад

    genial, muy instructivo, como siempre

  • @willyeruiz15
    @willyeruiz15 Год назад

    Muy bueno, gracias!

  • @user-cc2tu8jw5l
    @user-cc2tu8jw5l 4 месяца назад

    Buenisimo, gracias

  • @ivancalisaya4218
    @ivancalisaya4218 3 года назад +2

    Buen vídeo, me quedó la intriga del cuadro por lado del servidor con httpClientFactory, ya que solo lo mostraste para httpClient

  • @hdfpimentel
    @hdfpimentel 4 года назад +1

    Excelente. Gracias.

  • @garyjo3229
    @garyjo3229 6 месяцев назад

    Hola, Con que comando ves los puertos abiertos con el httpclient?

  • @lasociedaddeldinero
    @lasociedaddeldinero 2 года назад

    Tengo una duda, como se usaría en una solución con .net framework 4.0 wcf? Ya que no veo la interfaz para crear el cliente

    • @NetMentor
      @NetMentor  2 года назад

      en .net framework no tengo ni idea de como funciona el tema, no he trabajado nunca en el.

  • @michaelacevedo172
    @michaelacevedo172 2 года назад

    Hola Net excelente tu video quisiera saber con httpclient podria mandar el token generado en mi login? O cual seria la funcion para esto ya que posterior a loguearme no se como enviar automaticamente mi token hacia los demas endpoints

    • @NetMentor
      @NetMentor  2 года назад

      lo que tienes que hacer es añadir el token a los headers de la request (el header Authorization) y con eso pues ya puedes llamar al resto de endponts.

  • @fernandopoveda5485
    @fernandopoveda5485 3 года назад

    Pensar que llegué aquí, partiendo de un problema con WebClient!!...no se preocupen, yo mismo me di un jalón de orejas. XD
    Pienso que es una propuesta muy asertiva por parte de los ingenieros de Microsoft:
    - Regularmente, lo que haría es crear una instancia con HttpClient por cada intento de conexión al otro aplicativo; creando múltiples instancias y reduciendo el Performance a razón del costo de re-conexión al otro cliente por cada instancia. En cierta forma, en mi viejo aplicativo se pensó un poco en ello, no creando de forma directa una instancia de WebClient si no creando una clase adicional, que hereda desde WebClient y se refactoriza con las características del servicio...entiéndase, que estaríamos sobre-escribiendo y adicionando características a nuestra implementación de al WebClient para posteriormente reutilizar.
    - "Ante casos de estrés y un alto volumen de peticiones", la creación de una instancia por cada petición requiere un Socket... y por tanto, podría llegar a agotar el número de Sockets disponibles. En ese orden de ideas, debería funcionar algo así como el popular Pool de Conexiones en JAVA. Una vez terminada una conexión, mi instancia debería ser liberada y volver a mi Pool esperando ser reutilizada (Suena bonito en palabras, pero esto no es tan sencillo y menos con el viejo WebClient, o incluso HttpClient podrían llegar a mantener conexiones persistentes que entraría en conflicto sin una buena gestión "Que puede lograrse claro..pero sería delicado y regresaríamos al viejo abrir y cerrar conexiones".... y la re-utilización como cura sería peor que la enfermedad).
    - Que sea IDisposable, no necesariamente quiere decir que debo invocarlo...no puedo garantizar con certeza que siempre este disponible...porque el Garbage Collector tiene mente propia.
    - Pero, no me gusta el punto de inyectar services.AddHttpClient("ClienteNombre", Cliente >= { ...BaseAddress...} ); en el ConfigureServices "Debería tener una clase independiente en la cual se defina que debo inyectar...y mantener mi Starup lo mas limpio posible y únicamente utilizarlo para temas generales o independientes del negocio o cliente...Puedo crear una clase adicional a la cual delego esta responsabilidad , y esta inyectarla en mi ConfigureServices....
    Este es un buen ejemplo que algo que debe mantenerse en mi ConfigureServices: services.AddMvc().SetCompatibilityVersion(...);
    Por todo lo demás...muy buena practica, y buen canal!! Un Abrazo.

  • @freddycancino1
    @freddycancino1 3 года назад

    Buen dia, de favor me podria decir con que aplicacion se puede ver del lado del servidor las conexiones que siguen abiertas de mi Proyecto realizado en C#?, gracias anticipadas

    • @NetMentor
      @NetMentor  3 года назад

      Hola! Es utilizando el comando netstat, en mi caso en Linux, pero creo que también está para Windows si tienes un servidor Windows. Un saludo !

  • @batman4523
    @batman4523 2 года назад

    Si mi aplicacion se conecta a n servicios/API diferentes y quisiera especificar el baseAddres tendria que agregar n veces services.AddHttpClient("servicioUno", client => cliente.BaseAddress .... ), services.AddHttpClient("servicioDos", client => cliente.BaseAddress .... ) y asi respectivamente?

    • @NetMentor
      @NetMentor  2 года назад +1

      exactamente esa es la forma de hacerlo.

  • @RubenSilva-gh8gh
    @RubenSilva-gh8gh Год назад

    Me gustaría saber cómo te diste cuenta que uno de tus servidores se habían quedado sin sockets? Alguna excepción en particular que lanza la aplicación o algo que resulte fácil de detectar qué está sucediendo tal cosa?

  • @adri123161
    @adri123161 2 года назад

    Hola Net, es posible crear interfaz en la cual se pueda utilizar httpClientFactory? si es posible, como lo harías? Gracias

    • @NetMentor
      @NetMentor  2 года назад +1

      a que te refieres exactamente? para inyectarla en un servicio? puedes utilizar IHttpClientFactory; y luego desde netcore3.1 puedes inyectar en el contenedor de dependencias un httplicent por servicio que tengas, royo services.addhttpclient(x=>...) y cuando inyectas httpclient en dicho servicio cogeras dicha configuración.
      no se si te refieres a eso, un saludo.