¿Cuál es la diferencia entre la implementación de FilterAttribute, IActionFilter y la herencia de ActionFilterAttribute en asp.net mvc 3?

Veo que en una situación podemos anularOnActionExecuting oOnActionExecuted métodos heredados deActionFilterAttribute clase como esta:

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

Y en otra situación también podemos implementar.IActionFilter yFilterAttribute Me gusta esto:

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

Entonces, ¿hay alguna diferencia entre estos dos enfoques, tal vez alguna situación particular donde sería preferible usar uno de ellos sobre el otro?

Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta