Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Nota:
Este contenido se reimprime con permiso de Pearson Education, Inc. de Directrices de diseño de frameworks: Convenciones, expresiones y patrones para bibliotecas reutilizables de .NET, 2ª edición. Esa edición fue publicada en 2008, y el libro ha sido totalmente revisado en la tercera edición. Parte de la información de esta página puede estar obsoleta.
Las devoluciones de llamada son puntos de extensibilidad que permiten a un marco volver a llamar al código de usuario a través de un delegado. Estos delegados se pasan normalmente al marco a través de un parámetro de un método.
Los eventos son un caso especial de devoluciones de llamada que admiten una sintaxis adecuada y coherente para proporcionar el delegado (un controlador de eventos). Además, los diseñadores y la finalización de instrucciones de Visual Studio proporcionan ayuda para utilizar las API basadas en eventos. (Consulte Diseño de eventos).
✔️ CONSIDERE la posibilidad de usar callbacks para permitir que los usuarios proporcionen código personalizado que sea ejecutado por el marco.
✔️ CONSIDERE la posibilidad de usar eventos para permitir a los usuarios personalizar el comportamiento de un marco sin necesidad de comprender el diseño orientado a objetos.
✔️ OPTE por eventos en lugar de devoluciones de llamada sin formato, porque son más familiares para una gama más amplia de desarrolladores y están integrados con la finalización de declaraciones de Visual Studio.
❌ EVITE usar devoluciones de llamada en las API sensibles al rendimiento.
✔️ DEBE usar los nuevos tipos de Func<...>, Action<...> o Expression<...> en lugar de los delegados personalizados al definir las API con devoluciones de llamada.
Func<...> y Action<...> representan delegados genéricos.
Expression<...> representa definiciones de función que se pueden compilar y invocar posteriormente en tiempo de ejecución, pero también se pueden serializar y pasar a procesos remotos.
✔️ DEBE medir y comprender las implicaciones de rendimiento que supone usar Expression<...>, en lugar de usar los delegados Func<...> y Action<...>.
En la mayoría de los casos, los tipos Expression<...> son lógicamente equivalentes a los delegados Func<...> y Action<...>. La principal diferencia entre ellos es que los delegados están diseñados para usarse en escenarios de procesos locales; las expresiones están pensadas para casos en los que resulta beneficioso y posible evaluar la expresión en un proceso o una máquina remota.
✔️ Tenga en cuenta que, al llamar a un delegado, está ejecutando código arbitrario y que podría tener repercusiones en la seguridad, corrección y compatibilidad.
© Partes 2005, 2009 de Microsoft Corporation. Todos los derechos reservados.
Reimpreso con permiso de Pearson Education, Inc. de Framework Design Guidelines: Convenciones, Idiomas y Patrones para Bibliotecas .NET Reusables, 2ª Edición por Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la Serie Desarrollo de Microsoft Windows.