Quelle est la différence entre la mise en œuvre FilterAttribute, IActionFilter et héritant de ActionFilterAttribute dans asp.net mvc 3?

Je vois que dans une situation que nous pouvons remplacer OnActionExecuting ou OnActionExecuted méthodes d'hériter de ActionFilterAttribute classe comme ceci:

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

Et dans d'autres situations, nous pouvons également mettre en œuvre IActionFilter et FilterAttribute comme ceci:

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

Alors, est-t-il des différences entre ces deux approches, peut-être tout particulièrement les situations où il serait préférable d'utiliser l'un d'eux sur l'autre??

Merci d'avance.