MCPD 70-547: Creando y seleccionando Controles

Damos inicio a la serie de post, basados en los temas de preparación para el examen 70-547. Si eres MCTS en Web y das este examen, podrás ser MCPD Web Developer.

Para clasificar los post me basaré en la tabla de contenidos del libro: MCPD Self-Paced Training Kit (Exam 70-547): Designing and Developing Web-Based Applications Using the Microsoft® .NET Framework. Aunque lo que describa en las entradas no necesariamente tiene que estar en el Training Kit, usaré otros libros y a la gran internet para completar lo que sea necesario. Y como dije, además de solamente tratar los temas técnicamente, también lo haré desde el punto de vista de cómo podemos aplicarlo en lo que estamos desarrollando o trabajando.

Por cierto, con Visual Studio 2008 se mantendrán las certificaciones MCTS y MCPD. Eso se intuye, aunque de repente por ahí sale alguna mención en VS2008, son cosas que estoy suponiendo :D. Pero lo que sí es claro es que los temas del lado técnico usando VS2005, serán base de VS2008, por ejemplo en ASP.NET con VS2008, no habido un cambio radical como lo hubo de VS2003 a VS2005, se agregado nuevos controles para explotar las nuevas versiones de los lenguajes, aquí tenemos al control LinqDataSource, y también se mejorado el entorno de VS2008 para el desarrollo Web. Pero no hay pierde en aprender a usar Visual Studio 2005 con ASP.NET 2.0.

En un inicio voy hablar sólo de los temas, y si da el tiempo y los comentarios lo piden, haré algunos ejemplos, pero si dejaré enlaces con ejemplos en código.

Vayamos al tema: ¿Cuándo debemos crear y usar controles en nuestra aplicación Web?.

En internet hay muchos ejemplos de código de cómo crear controles de usuario y controles web personalizados, pero muy pocas veces queda claro cuando debemos controles, y cuando te das cuenta que necesitas un control, surgue la pregunta, debemos crear un control de usuario o un control personalizado?.

Según las fases del ciclo de vida del desarrollo de Software, después de la fase de análisis y diseño, todo debe estar claro, clarísimo, deben estar terminados todos los requerimientos, los bosquejos de las pantallas de interfaz de usuario deben estar terminadas, bajo esa premisa es fácil darse cuenta que interfaz de usuario se repiten en todos los casos, obteniendo así las posibles interfaces a reemplazarse por controles. Que bonito fuera que siempre pasará eso, pero muchas veces se tiene que iniciar el desarrollo sin esto terminado, así que el uso de controles será un poco intuitivo, o también será dado por la experiencia. Por ejemplo controles de búsqueda o controles de menú de mantenimiento, son siempre básicos, y que se repetirán a lo largo de una aplicación.

Si no tenemos claro cuando crear controles. Podemos seguir estas tres pautas básicas:

  1. Revisar y verificar si existen controles de ASP.NET, que cumplen con lo que nosotros necesitamos:
  2. Imaginemos que necesitas un editor de texto, pero enriquecido?, el textBox se puede quedar chico para cumplir esta tarea, el siguiente paso es buscar si hay algún control en internet que cumpla con lo que necesitamos. Por ejemplo un editor enriquecido para asp.net es el FreeTextBox. En este caso es un control gratuito, también podemos encontrar varios sitios en internet que venden juegos de controles, acá debemos evaluar el coste/beneficio/tiempo. Si te va tomar unos meses crear tu juego de controles y sólo tienes tres meses para terminar una aplicación, o si el proyecto tiene un poco más de tiempo  y hay un tiempo asignado para la creación de un juego de controles, son puntos puntos de vista sobre los cuales partir para tomar una decisión. Claro tampoco debemos pensar que comprar los controles más caros, más bonitos, y más útiles, nuestra aplicación ya está terminada.
  3. En el caso de que, el control que necesitemos no venga en ASP.NET, o no exista un control en internet, tendremos que desarrollarlos nosotros mismos. A este punto también podemos llegar por que hemos notado interfaces de usuario comunes en nuestra aplicación y es mejor hacerlas un control, por ejemplo para menús de mantenimiento o para controles de búsqueda. Dependiendo de las páginas también podemos usar controles para reducir la complejidad y el trabajo de mantenimiento de la misma.

Ahora una vez que tenemos noción de crear un control, que debemos crear un control de usuario o custom control?, disculpen nuevamente el anglicismo pero es más rápido escribir Custom Control que Control Personalizado 😀 y también por comodidad xD.

Cuando podríamos usar un Control de Usuario o User Control:

  • Controles búsqueda, si es que sólo serán usados en nuestro sitio Web, además que es más sencillo hacer un control de usuario que un custom control.
  • Si tenemos pequeños Gadgets en nuestra aplicación que pondremos en varias páginas, por ejemplo una lista rápida de las últimas 10 noticias, o los usuarios conectados. Nuestro cerebro debe estar programado de tal manera que si vemos que una interfaz la usamos dos veces, es porque podemos reemplazarlo un control de usuario. Y no dejarlo para más adelante, ya que hacer el cambio a más 20 páginas que usan la misma interface no es lo mismo que hacerlo a dos páginas.
  • Reducir la complejidad en una página Web. Cuando en una página web (sin incluir la master page, si es que estamos usando), sobrecargamos demasiado la interfaz de usuario, se hace difícil el mantenimiento, para reducir esto podemos usar controles de usuario para reducir la complejidad y el mantenimiento. La división debe ser de acuerdos a las tareas que se estén realizando, tampoco vamos a hacerlo más complejo al intentar dividir en un control de usuario una partecita de cada tarea.

Y cuando, un Custom Control o Control Personalizado:

  • Necesitamos un control adicional, por ejemplo necesitamos un Calendar como un DateTimePicker pero para ASP.NET. Si no tenemos presupuesto para comprar un control de esto, o necesitamos uno más personalizado al que hay en la web, podemos crear nuestro propio control.
  • Cuando tengamos algún control necesitemos usar en otras aplicaciones Web, por ejemplo nuestro Calendar++, puede ser parte de nuestro propio juego de controles, y podemos usarlo en cualquier aplicación web que deseemos.
  • Necesitamos soporte en diseño del control, mayor personalización agregar eventos a la ventana de propiedades, mayor personalización en el render del control, podemos resumir que necesitamos un control con más interacción al momento de usarlo o tiempo de diseño.
  • Se necesita tener el control en un ensamblado (dll), para pueda ser usando en cualquier aplicación Web, además también se puede necesitar que sea registrado en el GAC.

Por cierto no es que los controles de usuario, no se puedan utilizar en otros sitios Web, si pueden, pero tienes que agregarlos como elementos existentes, en cambio un custom control, lo puedes tener una ensamblado. Aunque siempre hay la excepción a la regla, y podemos hacer algo para poder reutilizar un control de usuario en otra aplicación Web, leer el primer comentario hay un link para otra opción de hacer lo mismo.

Ahora en cuanto los controles de usuarios, para recuperar o pasar valores podemos agregar propiedades, para tomar alguna respuesta ante alguna acción dentro del control podemos levantar un evento, podemos soportar Templates con los controles de usuario, aquí algunos artículos sobre esto:

En cuanto a los Controles Web Personalizados (Web Custom Control), tenemos tres formas básicas de crearlos. Desde cero, heredando de la clase WebControl, juntando controles existentes heredando de la clase CompositeControl, y extendiendo un control existente heredando del mismo control. Algunos artículos referente a estas tres formas:

Ahora veamos otras características que se pueden agregar a los custom controls:

Algunas versus:

P.D.: Y pensé que poniendo código, el post se iba a ser muy extenso :S.

Saludos,

Post cruzado

Un comentario en “MCPD 70-547: Creando y seleccionando Controles”

  1. Buenas, me podrias ayudar por favor?
    Tengo 2 aplicaciones Web dentro de una solucion, la pregunta es, como incluir un control de usuario desde la aplicacion1 en la aplicacion2?
    No me reconoce la clausula src = “~/”

    mi correo vallejo_ds@hotmail.com
    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *