Oi José, tudo bem?
No exemplo do prof. Daniel Portugal, ele substitui um acesso direto ao banco de dados (via repository pattern) por um acesso a um serviço HTTP especializado que fornece os detalhes do livro. E para isso ele usa um objeto HttpClient
.
A vantagem disso é que você pode ter um serviço HTTP especializado e centralizado para o acesso aos livros, e ao mesmo tempo mantém outros componentes do sistema "livres" da responsabilidade de acesso a dados diretamente no banco de dados. Isso diminui o acoplamento entre serviços e banco de dados. Note que você também pode ter componentes escritos em linguagens e plataformas diferentes (um cliente Java ou Android ou ASP.NET Core no Linux podem acessar o mesmo serviço HTTP criado com C#, por exemplo).
A desvantagem é justamente o outro lado da moeda deste tipo de arquitetura: como o acesso é via HttpClient, agora você precisa se preocupar com a "assincronicidade" das chamadas HTTP, tratar exceções, detalhar mensagens de erro, logar e registrar as exceções e eventuais problemas que possam surgir, pois desse jeito você está aumentando a complexidade do seu sistema.