Volver

Hoja Resumen Examen 70-315: Desarrollo e Implementación de Aplicaciones Web con Visual C#® .NET y Visual Studio® .NET

Traducido desde el libro Developing and Implementing Web Applications with Visual C#® .NET and Visual Studio® .NET Exam Cram™ 2 (Exam 70-315) de Amit Kalani y Priti Kalani
por Hernaldo González C. - Development Team Leader
http://darknromhacking.com
hernaldog@gmail.com
(* Notas del traductor)

Esta hoja contiene el resumen, claves acerca del desarrollo e implementación de aplicaciones Web con Microsoft Visual C# .NET y Microsoft Visual Studio .NET. Mirar esta información es lo último que debes hacer antes de entrar al lugar donde darás el examen, poniendo más atención a esas partes donde sientas que necesitas repasar. Puedes poner cualquier cosa que esté en tu mente en una hoja resumen en blanco y repasarla justo antes de comenzar el examen.

  • Cada página ASPX es convertida dinámicamente a una clase que deriva su funcionalidad básica desde la clase System.Web.UI.Page class.

  • La directiva Page es usada para especificar atributos relacionados con la página que ayudan al compilador a saber como la página ASP.NET será compilada y ejecutada.

  • El atributo Inherits de la directiva Page especifica la clase que tiene código embebido para la página ASPX. El atributo Src de la directiva Page indica la ruta del archivo con código embebido. Si has precompilado el archivo con código embebido, no necesitas especificar el atributo Src.

  • Para hacer que un HTML control corra como un server control, usa el atributo runat="server" en el HTML control.

  • Solo algunos HTML server controls permiten tomar eventos en el lado del servidor; un HTML control puede solo ejecutar el evento ServerClick o ServerChange.

  • Cuando la propiedad AutoPostBack del Web server control de ASP.NET es true, causa un inmediato postback y permite al Web server inmediatamente responder a los cambios de eventos sin esperar por el un evento de clic que genera un page postback.

  • La mejor forma de agregar código de manejo de eventos en el lado del cliente para Web server controls es por las propiedades de los Attributes de los Web server controls.

  • Para setear propiedades a un control en tiempo de ejecución, usa la sintaxis control.property = value.

  • Para cargar controles dinámicamente sobre un Web form, crea los controles y agrégalos al Controls collection de un control contenedor, como una Page, Panel, o Placeholder.

  • El control Repeater y el DataList usan plantillas para formatear datos de una colección. El método DataBinder.Eval es usado para manejar casts y formatear data de un control que esta en plantilla.

  • Puedes importar un ActiveX control a un proyecto Visual Studio .NET agregándolo al Toolbox.

  • Los controles ActiveX son instanciados en el cliente y no en el servidor. Cualquier manejador del evento para el control debe estar escrito en un lenguaje de script y se ejecutará en el cliente. Los Controles ActiveX tienen menos rendimiento y otras desventajas.

  • El método Response.Redirect() puede ser usado para conectar cualquier URL que se especifique. El URL puede apuntar a cualquier recurso que contenga string. El uso de Response.Redirect() causa una vuelta (round trip) adicional al server.

  • El método Server.Transfer() realiza una redirección en el lado del server de un página y evita una vuelta (round trip) extra.

  • El método Server.Execute() ejecuta el archivo ASPX especificado y luego retorna la ejecución a la página ASPX que realiza la llamada.

  • El archivo especificado como argumento en Server.Execute() o en Server.Transfer() debe ser un archivo ASPX que esté en el mismo Web server, y el argumento no debe contener un query string.

  • Debes activar el atributo EnableViewStateMac de la directiva Page a false para la página destino, en caso de llamar la página vía método Server.Execute() o Server.Transfer() con el segundo argumento seteado en true.

  • ASP.NET usa un control escondido de entrada llamado __VIEWSTATE para mantener el estado de todos los controles no-postback modificados en el código.

  • Puedes usar la propiedad ViewState de la clase Page para guardar los valores page-level. La propiedad ViewState permite almacenar datos estructurados tan largos como la data este serializada.

  • Puedes usar la propiedad Page.IsPostBack para determinar si una página está siendo cargada por primera vez o en respuesta a un postback.

  • ASP.NET tiene una característica llamada "smart navigation" que permite gran mejora para los usuarios, como la eliminación del flash y mantener el foco de un control al hacer un postback de una Web page para los usuarios de Internet Explorer 5.0 hacia arriba.

  • Las variables de Session te permiten guardar información a través de múltiples navegadores. Por defecto la ubicación de almacenamiento del estado de la sesión es en la memoria del proceso ASP.NET en si. El estado de la sesión puede ser soportado por varios Web servers en un Web farm al almacenar el estado en un proceso separado o en una BD SQL Server.

  • ASP.NET provee 2 formas de almacenar datos globales: Application state (Estado de Aplicación) y application data cache (Datos de Cache de la Aplicación). La application data cache provee cualidades avanzadas como la política de expiración del cache.

  • Controles de Validación proveen sofisticadas validaciones tanto en el lado del cliente como en el servidor, dependiendo de la configuración de la validación y las capacidades del navegador.

  • La clase BaseValidator sirve como la clase base de todos los controles validadores. Esta clase provee la implementación básica de los controles validadores.

  • El control RequiredFieldValidator puede ser usado para chequear si un control contiene una entrada.

  • El control RegularExpressionValidator se asegura que el valor de entrada del control coincida con una expresión regular especificada.

  • El control RangeValidator es usado para chequear si el control de entrada contiene un valor en un rango especificado.

  • El control CompareValidator es usado para comparar el valor entrante en el server control contra un tipo de dato, con un valor fijo, u otro control de entrada.

  • El control CustomValidator permite especificar un código personalizado de validación para ser ejecutado durante la validación.

  • El control ValidationSummary es usado para mostrar un resumen de todos los errores de validación de una página Web.

  • Para iterar a través de elementos de un string en una aplicación instalada (world-ready application), debes usar el método GetTextElementEnumerator de la clase StringInfo.

  • SystemException representa las excepciones enviadas por el CLR, mientras que ApplicationException representa las excepciones enviadas por los programas del usuario.

  • El bloque try consiste en código que puede generar alguna excepción. Un bloque try debe ser seguido inmediatamente de uno o más bloques catch o de un bloque finally.

  • Si múltiples bloques catch están asociados con un bloque try, el bloque catch debería estar ordenados de arriba hacia abajo. Si el tipo de excepción es específica va mas arriba y si es general va más abajo.

  • La clausula throw es usada para lanzar una excepción adrede. Lanzar excepciones es una operación costosa. No uses excepciones para administrar el flujo normal de un programa.

  • El bloque finally es usado para encerrar el código que necesita correr protegido o si se alcanza una excepción. (*Es decir que corre siempre, haya o no errores, útil para cerrar conexiones abiertas o limpiar el garbage collector si lo necesitas.)

  • Las páginas Custom error pueden ser configuradas para usar elementos customErrors del archivo web.config.

  • Puedes setear una página con un error personalizado para páginas individuales en tu aplicación usando el atributo ErrorPage de la directiva Page.

  • Puedes manejar cualquier error que ocurra en una página al usar el Manejador de Eventos Error.

  • Excepciones no manejadas para una completa aplicación puede ser atrapada en el manejador Application_Error en el archivo global.asax.

  • El método Server.CreateObject() es usado para crear componentes COM. Sin embargo, no todos los componentes COM pueden ser instanciados con Server.CreateObject(). En particular, los componentes que usan modelo de hilos STA (Single Threaded Apartment) no funcionan bien en páginas ASP.NET a menos que agregues la directiva de compatibilidad a la página, como <%@Page aspcompat="true"%>.

  • Usar componentes COM o COM+ de código administrado .NET requiere la creación de una rutina llamada wrapper (RCW). Runtime Callable Wrapper (RCWs) tienen una deficiencia en performance sobre el código COM.

  • Puedes crear un RCW para un componente COM usando el Type Library Importer o directamente referenciando el componente COM del código .NET.

  • Para usar componentes COM que no sea tuya, debes obtener un primary interop assembly (PIA) del creador del componente.

  • Puedes usar PInvoke para llamar funciones de librerías no manejadas. El atributo DllImport le dice al CLR donde encontrar la implementación del método extern al especificar el nombre de la librería.

  • El objeto CultureInfo representa una cultura en el .NET Framework.

  • La clase System.Text.Encoding y sus subclases te permiten convertir texto de un encoding a otro.

  • El .NET Framework provee soporte parcial para mirroring a través de la propiedad de RightToLeft en los formularios y controles.

  • Puedes responder a un evento al sobrescribir el método On correspondiente a un evento. Cuando usas este método, asegúrate de llamar al correspondiente método On para la clase base, así que no olvides ninguna de las funcionalidades de la clase base cuando el evento es alcanzado.

  • Puedes registrar eventos de la clase Page al definir manejadores de eventos con nombres específicos, como Page_Init(), Page_Load(), etc, al setear el atributo AutoEventWireup a true en la directiva Page.

  • El archivo global.asax es lugar correcto para manejar eventos globales que no están especificados en un Web form, pero que se aplican a una aplicación como conjunto.

  • Los Web user controls te permiten encapsular bloques comunes de interfaces de usuario funcionalmente para un reuso. Estos controles deben estar contenidos dentro del proyecto en el cual van a ser usados.

  • Los Web custom controls son componentes compilados que dan soporte a todas las características de los server controls que corren en Visual Studio .NET.

  • Puedes crear un Web custom control al combinar los controles existentes, al derivarla de un control existente, o heredarla directamente de la clase WebControl.

  • El objeto DataSet representa una completa base de datos relacional en memoria. Esta compuesta de objetos DataTable, DataRelation, DataRow, y DataColumn.

  • El objeto DataView provee un fila filtrada de datos de un DataTable.

  • Para persistir cambios desde un DataSet a la base de datos base, debes llamar al método Update del objeto SqlDataAdapter.

  • Las propiedades UpdateCommand, InsertCommand y DeleteCommand del objeto SqlDataAdapter especifican un objeto SqlCommand a ser ejecutado para una actualización, inserción y eliminación de filas respectivamente.

  • La clase FileStream trata un archivo como una fila, tipo un stream de bytes.

  • Las clases StreamReader y StreamWriter están optimizadas para datos de texto, mientras que las clases BinaryReader y BinaryWriter están optimizadas para datos con estructura binaria.

  • Los elementos de un documento XML pueden ser representados por objetos XmlNode. Los objetos XmlNode son agrupados dentro de un objeto XmlDocument, el cual es un objeto del namespace System.Xml que representa un documento XML completo.

  • Puedes tratar un documento XML como datos relacionales. Para hacer esto, puedes usar la clase XmlDataDocument, la cual hereda de XmlDocument. La clave de la clase XmlDataDocument es que puede ser sincronizada con un DataSet.

  • Los objetos SqlException y SqlError proveen lo necesario para recibir información específica de de errores de SQL Server.

  • La clase System.Web.TraceContext puede ser usada para mostrar mensajes de traza en una aplicación. Esos mensajes pueden ser fácilmente vistos usando el trace viewer o al final de la salida de una página.

  • El Tracing puede ser activado a nivel de toda la aplicación seteando el elemento trace dejando el atributo enabled en true en el archivo web.config. Para permitir tracing para una página individual, setea el atributo trace a true en la directiva Page.

  • Listeners son objetos que reciben traza y retornan un debug. Por defecto, un listener, DefaultTraceListener, es atachado a las clases Trace y Debug y muestra los mensajes en la Output window.

  • Los Objetos Debug y Trace comparten la misma colección de listeners. Por esto, cualquier listener agregado a la colección Trace.Listeners es también agregado a la colección Debug.Listeners.

  • Los Trace switches te permiten cambiar los tipos de mensajes traceados por un programa dependiendo del valor guardado en el archivo de configuración XML. No necesitas recompilar la aplicación para que este cambio tome efecto.

  • Las clases Trace y Debug de System.Diagnostics pueden ser usadas para mostrar mensajes informativos en una aplicación cuando los símbolos DEBUG y TRACE son definidos en tiempo de compilación.

  • Por defecto, tanto los símbolos TRACE y DEBUG son definidos para una Configuración de compilación en modo Debug, y solo el símbolo TRACE es definido para una configuración de compilación en modo Release.

  • Los Breakpoints te permiten marcar en el código ciertos puntos para que el degugger pause se ejecución cuando las encuentre.

  • Hay varias herramientas, como Locals, Autos, Watch, y Call Stack, que pueden ser de gran ayuda para el seguimiento (tracking) de la ejecución y el estado de las variables cuando se depura un aplicación en Visual Studio .NET.

  • Usa la ventana de diálogo de Excepciones para personalizar como las excepciones son lanzadas en tu programa.

  • Puedes atachar un debugger a un proceso que corre (local o remoto) con la ayuda de la ventana Processes.(*Por ejemplo atachar un proceso de Microsoft Biztalk)

  • El Custom Actions Editor te permite agregar acciones personalizadas a realizar durante el proceso de instalación. Permite correr .dll, .exe, assembly y archivos scripts.

  • El Launch Conditions editor te permite configurar las condiciones a evaluar cuando una instalación se instalará en la máquina destino. Si las condiciones no se dan, la instalación se detiene.

  • La clase System.Configuration.Install proporciona las clases base para una instalación personalizada en .NET Framework. El método Install() de la clase es llamado cuando la aplicación es instalada y el método Uninstall() es llamado cuando la aplicación se desinstala. El método Commit() es ejecutado si el método Install() se ejecuta correctamente; el método Rollback() es ejecutado si el método Install() no se ejecuta correctamente.

  • Si agregas componentes predefinidos a la instalación (por ejemplo, un componente PerformanceCounter) al Proyecto Setup, estos deben ser agregados a la colección Installers de la clase ProjectInstaller.

  • Hay Assemblys compartidos que son usados por múltiples aplicaciones en una máquina. Estas son puestas en el GAC y tiene privilegios especiales, como un archivo de seguridad (porque ellos son puesto en la carpeta System), ubicación compartida, y versionamiento lado-por-lado.

  • Un assembly compartido debe ser asignado a un strong name criptográfico. Pares de Llaves Públicas/Privadas son generadas usando la herramienta Strong Name tool (sn.exe). Los pares pueden entonces ser usados para digitalizar la firma de un assembly.

  • Un assembly compartido puede ser agregado al GAC usando Windows Explorer, el .NET Framework Configuration tool, el Global Assembly Cache Tool (gacutil.exe) o el Windows Installer.

  • El CLR primero busca el GAC para ubicar los assemblies antes de buscar en los archivos y carpetas donde la aplicación está instalada. De este modo, los assemblies compartidos colocados en el GAC son más eficientes ya que el CLR no busca en el <codebase> ni en los elementos <probing> de los archivos de la configuración aplicable.

  • Delay signing permite a un assembly compartido ser puesto en el GAC donde la firma coincida con la llave pública. Esto permite al assembly ser firmado con una llave privada en una etapa posterior cuando el proceso de desarrollo esté completo y el componente o assembly esté listo para ser desplegado (deployed).

  • Módulos de Fusión (Merge module) te permiten crear componentes reusables que ayudan a los componentes compartidos que están desplegados. Los módulos fusionados no pueden ser directamente instalados; necesitan ser fusionados a programas instaladores o a aplicaciones que usan el componente empaquetado dentro de un modulo fusionado.

  • Para salvar memoria y tiempo de procesamiento, si tu página no depende del estado de la sesión, desactívala con el atributo <@% Page EnableSessionState="false" %> en la directiva Page.

  • View state hace que bytes adicionales viajen en cada dirección y por ende baja un poco la velocidad. Puedes evitar esta demora seteando la propiedad EnableViewState de los controles a false cuando no necesitas que sus contenidos se mantengan.

  • Usando StringBuilder puede ayudarte a realizar notables mejoras en el performance en una aplicación usando manipulaciones extensivas de strings.

  • Reduce el número de llamadas entre el código administrado y no administrado, posibilitando hacer mas trabajo en cada llamada en vez de hacer frecuentes llamadas que hagan pocas tareas.

  • Usa el proveedor de SqlClient en vez del genérico OleDb para rescatar datos desde SQL Server.

  • Los procedimientos almacenados de SQL Server están altamente optimizados para el acceso a datos por el lado del servidor, y su uso mejora el performance de los accesos a los datos significativamente.

  • Corre la herramienta Profiler de SQL Server como el Index Tuning Wizard para evitar cualquier cuello de botella de algún índice. También, usa el Query Analyzer de SQL Server para optimizar el performance de las querys.

  • Si estas leyendo una tabla secuencialmente, dale preferencias para usar DataReader sobre un DataSet.

  • El SQL Server .NET Data provider provee pooling de conexión (*compartir conexiones entre procesos manteniendo la conexión abierta) para mejorar el performance cuando te conectas a una base de datos. Usa el mismo string de conexión para conectarte a la base de datos ganando performance gracias a que no cierras la conexión.

  • Puedes usar el objeto ConfigurationSettings para recibir información personalizada desde un archivo de configuración.

  • El archivo web.config puede aparecer en múltiples directorios sobre una aplicación Web Service de ASP.NET. Cada web.config archivo aplica configuraciones para su propio directorio y todos los subdirectorios dentro de el. Los archivos web.config en subdirectorios pueden sobreescribir o modificar opciones definidas en directorios padres.

  • El archivo machine.config contiene configuraciones que controlan las operaciones completas de .NET en el computador. Por ejemplo, opciones de compilación para el Framework .NET son almacenadas en este archivo.

  • Una Seguridad basada en Roles te permite autorizar el acceso a los recursos basados en la identidad del usuario o un grupo de miembros. Identificar a las personas ayuda a ASP.NET a procesar los que puede hacer el usuario autentificado.

  • La directiva OutputCache te permite hacer un cache a las páginas de salida y a los user controls en una aplicación Web. Cuando una directiva OutputCache es aplicada a una página ASPX, tanto los atributos Duration como VaryByParam deben ser especificados. Opuesto a esto, en caso de los user controls, o el atributo VaryByParam o VaryByControl debe ser especificado de acuerdo al atributo Duration.

  • Application data caching se refiere a hacer caching arbitrario de datos. Puedes usar cache sobre cualquier objeto que quieras en ASP.NET al llamar los métodos Add o Insert del objeto Cache.


Volver

2003-2011