Cuándo usar IComparable <T> Vs. IComparer <T>

Estoy tratando de averiguar cuál de estas interfaces necesito implementar. Ambos esencialmente hacen lo mismo. ¿Cuándo usaría uno sobre el