Start here. This is the direct spoken answer to practice first.
Why this question matters
WebJobs and Azure Functions can both run .NET background work, but they differ in lifecycle, triggers, scaling, isolation, deployment, and operational ownership. The workload and its failure behavior should determine the model.
I would use WebJobs when the background work naturally belongs with an App Service app and the team wants a simple worker deployed alongside that environment. I would use Azure Functions when event-driven triggers, timers, queue triggers, or independent scaling are a better fit. In both cases I would avoid hiding long work inside HTTP requests or fire-and-forget tasks from controllers.