Qual é a diferença entre implementar FilterAttribute, IActionFilter e herdando de ActionFilterAttribute em asp.net mvc 3?

Eu vejo que em uma situação podemos ignorarOnActionExecuting ouOnActionExecuted métodos herdados deActionFilterAttribute classe assim:

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    { // bla bla }
}

E em outra situação também podemos implementarIActionFilter eFilterAttribute como isso:

public class MySecondFilterAttribute : FilterAttribute, IActionFilter 
{ 
    public void OnActionExecuted(ActionExecutingContext filterContext) {}
}

Então, há alguma diferença entre essas duas abordagens, talvez qualquer situação em particular, onde seria preferível usar uma delas sobre a outra?

Desde já, obrigado.