AngularJS: Serviço x provedor x fábrica

Quais são as diferenças entre um Service, Providere Factoryem