para mostrar una lista de todas las disponibles, así como de las herramientas que tenés abiertas y desplazarte rápidamente a cualquier ventana. También es mucho más fácil mover las herramientas para adaptarlas a tu forma de trabajar; cuando arrastrás una, aparecen “diamantes de acoplamiento”, y te muestran todas las opciones que tenés para colocar la ventana. Arrastrá el puntero del mouse sobre el icono adecuado y ésta se colocará donde quieras.
Las herramientas Lista de Tareas y Lista de Errores muestran más información y son más fáciles de usar y más flexibles que antes. El IDE, guarda periódicamente información de auto-recuperación, de manera que perderás menos trabajo en caso de que se bloquee el equipo. Una herramienta de marcadores te mostrará una lista de todos los que tengas en el proyecto, de forma que puedas ir directamente a uno determinado, en lugar de tener que estar buscando el que querés.
Code Snippets (fragmentos de código) y Refactoring (renovación con diseño mejorado) son nuevos en esta versión. La primera función te brinda una librería de pequeños fragmentos de código que podés usar en tus proyectos. Ésta está dividida en distintas áreas y con un par de pulsaciones del botón del mouse encontrarás una rutina que te resulte útil. Podés crear y compartir tus propios fragmentos y descargar otros nuevos de los sitios Web de la comunidad. El soporte de Refactoring (facilitar o cambiar la semántica del código sin cambiar la función) varía de acuerdo con el lenguaje que estés usando. Así, podrás simplificar una subrutina larga extrayendo la parte central del código e insertándolo en una función distinta. También es posible, con esta función, renombrar una variable para que su significado resulte menos obvio. Por supuesto, si cambiás el nombre de una variable, tenés que hacerlo en todos los lugares donde se utilice, dentro del alcance de ella. VS 2005 tiene un buen soporte de refactoring para C#, pero VB sólo dispone de utilidades rudimentarias y en J# o C++, de ninguna en absoluto. VB está disponible también un módulo gratuito de otro fabricante, llamada “Refacror!”.
Formularios en Windows
Si desarrollás aplicaciones de Windows Forms, los principales cambios que observarás son la ayuda en el diseño de sus formularios, los nuevos controles, especialmente los de diseño, y la ventana de esquema del documento. También comprobarás que el código generado por el diseñador de formularios se mantiene en un archivo distinto, que no se mezcla con tu código.
Todos los controles creados para el .NET Framework 2 exhiben Snap Lines (líneas de guía). Éstas te ayudan a diseñar tus formularios fácilmente. Cuando arrastras o cambias el tamaño de un control cercano a otro, aparecen líneas azules o púrpuras para indicar cuándo se alinean los bordes de los controles o su contenido, y el que estás arrastrando o modificando se colocará solo en su posición. Estas líneas facilitan notablemente el diseño de formularios y, si seguís las instrucciones, tendrás prácticamente garantizado un formulario de aspecto aceptable. Las etiquetas inteligentes ofrecen un acceso rápido para configurar las propiedades o activar los comandos.
Para el diseño de formularios existen varios controles nuevos de contenedor. El panel de diseño de rejilla te permite dividir tu formulario en celdas, asignando a las filas y columnas un tamaño fijo o variable. Cada una puede contener un solo control, como un Panel, y las celdas de tamaño variable pueden configurarse para que su tamaño cambie de forma proporcionada. Esto te permite, por ejemplo, organizar controles en dos columnas, ocupando cada una el 50 por ciento de la anchura del formulario, y que los controles de cada columna modifiquen su tamaño en consecuencia. El panel de diseño de colocación automática emplea un método más flexible, ordenando los controles contenidos en él en horizontal o vertical en el formulario, en un intento de lograr que se adapten. El nuevo control Split Container (contenedor dividido) permite al usuario final arrastrar una barra divisora para cambiar los tamaños relativos de dos contenedores.
También incorpora nuevos controles de banda para barras de estado, menús y barras de herramientas. Incluyen métodos rápidos para crear elementos estándares como menús Archivo y Edición, y hacer que se parezcan a los de Windows XP u Office 2003.
La mayoría de los demás controles obtuvieron propiedades, métodos o eventos adicionales para que el desarrollo sea más rápido o más flexible. Los antiguos controles personalizados basados en .NET Framework 1 ó 1.1 seguirán funcionando con VS 2005, pero no presentarán automáticamente funciones adicionales como las líneas de guía.
La nueva propiedad Application Settings (parámetros de aplicación) permite definir fragmentos de datos que quieras conservar entre activaciones de tu aplicación. Podrían ser parámetros de aplicación o de usuario, e incluir información como el estado, el tamaño y la posición de las ventanas de la aplicación, o una cadena de conexión con un servidor de base de datos. Estos parámetros se almacenan como archivos XML bajo la carpeta Datos de programa en el perfil del usuario y son fáciles de configurar y recuperar en cualquier momento, mediante MySettings (mi configuración).
La ventana Document Outline Window (esquema de documento) muestra ahora todos los controles de un formulario y cómo están contenidos, lo que facilita la visualización y manipulación de la jerarquía de controles y contenedores.
 |
| El DataSet Designer mejoró pero sigue siendo difícil diseñar tablas y relaciones con facilidad. |
|
Acceso a los datos
En VS 2002 y VS 2003, el acceso a los datos se efectuaba formulario por formulario. En VS 2005, podés definir los orígenes de tus datos para un proyecto completo. La nueva ventana Data Sources (orígenes de datos) muestra todas las tablas y columnas del conjunto de datos, y podés arrastrar y soltarlas en tus formularios para crear controles vinculados a éstos. Es posible elegir qué control utilizar para cada campo o columna, o usar un control de rejilla para mostrar una tabla entera de una sola vez. También permite arrastrar elementos desde la ventana Data Sources a controles existentes para vincularlos a los datos. Se trata de una gran mejora con respecto a las versiones anteriores de VS, donde la vinculación de controles a los datos resultaba una tarea monótona. Arrastrar elementos desde la ventana Data Sources añade al formulario un control BindingSource y uno TableAdaptor, además de una barra de herramientas Binding Navigator (navegador de vinculaciones). La barra de herramientas muestra los botones de navegación estándares: First (primero), Previous (anterior), Next (siguiente) y Last (último), además de New (nuevo), Delete (borrar) y Save (guardar). Esta barra de herramientas debe resultar familiar a muchos usuarios finales, pero no es obligatoria, y podés borrarla de tu formulario si querés que funcione de forma diferente.
La nueva clase TableAdaptor encapsula y amplía las funciones que estaban antes disponibles en la clase DataAdaptor. También ocultan muchas de las diferencias entre orígenes de datos SQL Server, Oracle y ODBC. Las TableAdaptor pueden tener varias consultas: no sólo “select”, “insert”, “update” y “delere”, sino las que quieras, cada una con ninguno, uno o muchos parámetros. VS 2005 también escribe llamadas predeterminadas a los métodos FilI (rellenar) y Update (actualizar) de TableAdaptor en el evento de formulario Load (cargar) y en el evento Save (guardar) de Binding Navigator, de forma que tengas un formulario de trabajo vinculado a los datos con sólo un par de pulsaciones del botón del mouse. El código de acceso a los datos existente de VS 2002 y VS 2003 seguirá funcionando en VS 2005, pero vale la pena llegar a conocer las nuevas funciones como las TableAdaptor, porque facilitan mucho la vinculación de datos.
Aunque el DataSet Designer (diseñador de conjuntos de datos) ha mejorado mucho con respecto a la versión anterior, sigue sin ser muy inteligente cuando se trata de diseñar tablas y relaciones, y no hay forma de ampliar la vista para ver un panorama del conjunto de datos, de forma que te obliga a desplazarte demasiado por un diagrama de gran tamaño.
 |
| Depurar aplicaciones es una tarea más soportable usando herramientas excelentes, que incluyen información de datos y visuatizadores. |
|
Depuración
Depurar proyectos de VS 2005 es una experiencia destacable. Han recuperado el comando Edit & Continue (editar y continuar). Esta función, demandada por la mayoría de usuarios, te permite detener una aplicación en una interrupción o un error, cambiar el código y ejecutarlo cambiado paso a paso o por completo. Así, la depuración es mucho más rápida, ya que pueden probarse los cambios sin tener que reiniciar el código y desplazarse de nuevo por la aplicación hasta la interrupción o el error.
Mientras estés depurando, con frecuencia te hará falta ver o modificar el contenido de las variables u objetos. VS 2005 facilita esta acción de una forma increíble. Además de poder ver valores en la ventana de observación, si dejás flotando el puntero del mouse sobre una variable, se abre un Data Tip (información de datos) que muestra su valor actual. Éste se amplía a arrays y objetos complejos como DataTables. Podés analizar jerarquías de objetos y ver todos los detalles. Si querés, podés ampliar este sistema con “visualizadores” personalizados para objetos más complejos, como mapas de bits o iconos.
Es posible avanzar por el código línea a línea y hacer que el depurador pase automáticamente por cualquier código que VS haya generado para vos, de forma que solamente ves “Just My Code” (sólo mi código). Si éste se activa como una excepción no gestionada, aparecerá el Exception Assistant (asistente de excepciones) indicándote qué línea fue la que activó la excepción, sus causas probables y sus posibles soluciones. Pulsá sobre una de las soluciones y el código en cuestión será modificado.
Conclusión
Como IDE, VS 2005 es excelente, desde su versión Team Suite hasta las ediciones Express. Las herramientas que proporciona son de auténtica utilidad y resultan fáciles de manejar, lo que te permite ser más productivo casi enseguida. Los distintos lenguajes y el soporte de plataformas de .NET Framework nunca fueron mejores, y VB .NET y C# aumentan sus funciones cada vez más en paralelo.
Si estás desarrollando aplicaciones para Windows, Windows Mobile o Microsoft IIS, VS 2005 es difícil de superar.
Las ediciones Express de Visual Studio
 |
| Cada producto de Express tiene unas buenas herramientas de diseño y edición, entre las que incluye la función de completar código IntelliSense. |
|
Si no podés permitirte la edición completa de VS.NET, podés obtener toda la potencia de programación que necesitas de una de las ediciones Express que Microsoft realizó para programadores aficionados y estudiantes. La idea es que la gente que no tenga interés profesional en la programación pueda explorar el desarrollo de .NET sin tener que asumir el precio de las versiones profesionales. En realidad, en un futuro inmediato los productos Express podrán descargarse gratuitamente. También es posible que cada uno tenga un costo simbólico si se adquiere con materiales de aprendizaje adicionales, tanto en CD como en libros.
Mientras la versión completa de VS soporta varios lenguajes, que es posible utilizar de forma independiente o juntos con proyectos de lenguajes mixtos para Windows o la Red, la mayoría de las ediciones Express soportan sólo un lenguaje destinado en exclusiva al desarrollo Windows. Éstos incluyen C#, C++, J# y Visual Basic. También existe La Visual Web Developer Express Edition, que soporta tres lenguajes (C#, Visual Basic y J#), pero esta vez sólo para desarrollo Web. Por último, SQL Server Express puede usarse para dar conectividad de base de datos para las demás ediciones Express.
Aparte de la restricción de un lenguaje por producto, las ediciones Express y la estándar o profesional poseen otras diferencias destacables. Por ejemplo, las primeras no brindan programación para dispositivos móviles y carecen de herramientas como los Class Designers (diseñadores de clases) y el control Source Code (código fuente). También incluyen una documentación reducida de ayuda técnica, acompañada de un conjunto ampliado de tutoriales para principiantes.
Herramientas de desarrollo
Aunque puedan estar destinados a usuarios no profesionales, las ediciones Express son adecuadas para proyectos de programación.
Cuentan con todas las opciones de desarrollo y diseño esenciales de VS. El editor incluye una serie de herramientas de productividad como el colapso de código, que permite ampliar y contraer clases y funciones.
Ofrece depuración integrada, por lo que es posible ubicar puntos de ruptura en las líneas de código seleccionadas, desplazarse por un programa sentencia a sentencia y ver los valores actuales de las variables.
Las herramientas de diseño visual son idénticas a las proporcionadas en la edición completa de VS. Un panel Toolbox (caja de herramientas) emergente te da acceso rápido a grupos divididos en categorías de componentes que puedes arrastrar y soltar. Éstas incluyen todos los controles básicos, como botones, menús y cuadros combinados. Naturalmente, omiten controles que son irrelevantes para el producto Express en particular, los de formulario Web, que se suministran únicamente con Visual Web Developer.
Si estás interesado en el desarrollo bajo Windows, podés elegir una de tres ediciones (Visual Basic, C# o J#). No se distinguen demasiado por las funciones con las que cuentan. Realmente depende de la sintaxis de programación que prefieras. Si ya estás familiarizado con Basic, entonces es probable que te decantes por VB Express. J# es la versión .NET de Microsoft del lenguaje Java y, en principio, debería ser la mejor opción para los programadores de Java, mientras que los de C y C++ podrían optar por C#. En realidad, este lenguaje, como tal, es sintácticamente muy parecido a Java. Microsoft lo desarrollo específicamente para .NET y, hasta cierto punto, se percibe como el favorito para el desarrollo .NET. Por esa razón, C# puede ser una mejor elección que J#, incluso, para programadores de Java.
 |
| Visual Web Developer Express está especializado en aplicaciones Web escritas en C#, VB o J#. |
|
Nuevas funciones de lenguaje
Ahora, los propios lenguajes, tanto en las ediciones Express como en las completas de VS, disponen de diversas funciones nuevas. Quizá, la mejor de la lista sea la denominada “genéricos”. Permite al programador omitir parte de las restricciones de un estricto tecleado de datos manipulando listas de distintos tipos de objetos.
En C#, una nueva extensión de lenguaje facilita la escritura de tus propios métodos de enumeración para permitirte pasar por listas genéricas dentro de un bucle for-each. Esta función no está implementada en VB.
Sin embargo, Visual Basic sí obtiene algunas propiedades propias interesantes, como My namespace (mi espacio de nombres). Te da acceso rápido a funciones que estaban antes ocultas dentro de la librería de clases .NET, o que no estaban disponibles, y todo esto sin realizar llamadas a la API “no gestionadas”. My namespace incluye clases como Application, Computer y User, cada una de las cuales dispone de una gran cantidad de capacidades de utilidad. Por ejemplo, Computer incluye una de Audio que a su vez tiene una función Play. Así, para reproducir el archivo Melodia.wav simplemente deberás introducir:
MyComputer.Audio.Play ( “melodia .wav”)
Las innovaciones del lenguaje en VB incluyen la sobrecarga de operadores, es decir, la capacidad para utilizar o definirlos, que pueden funcionar con varios tipos de datos. Esto es algo que los programadores de C++ dan por seguro, pero que ha sido del todo imposible hasta ahora en VB. El Lenguaje también ha tenido la oportunidad de utilizar “clases parciales”, cuya definición puede estar dividida en varios archivos.
Aunque pueda sonar misterioso, de hecho es una función útil. Te permite crear la envoltura de una clase en un solo archivo y, después, funcionar independientemente en su implementación en un archivo de código limpio.
C++ Nativo
Mientras que los cambios en los lenguajes C# y VB son, relativamente leves, los que se produjeron en C++ resultan considerables. Antes, se utilizaba un gran número de palabras clave precedidas por dobles subrayados para definir elementos no estándares como __property. Éstas se sustituyeron por otras nuevas, como property, que perdió el subrayado. Estas palabras tienen que ubicarse dentro de bloques sensibles al contexto, de forma que las extensiones no estándares del lenguaje estén claramente separadas de otro código, lo que asegura una compatibilidad razonable (aunque no completa) con otras implementaciones de C++.
Se realizaron diversos cambios para que funcione con mayor facilidad en un entorno de código gestionado. Por ejemplo, una alternativa a los punteros, llamada “manipuladores de seguimiento”, ofrece los objetos de referencia de C++ de una forma segura. Pero, su verdadera especialidad sigue siendo su habilidad para funcionar estrechamente con código “nativo” no gestionado desde dentro del mundo .NET.
Desarrollo Web
La más curiosa de estas ediciones Express es Visual Web Developer. A diferencia de otros paquetes, no es posible utilizada para programación de aplicaciones en Windows. En lugar de esto, está destinada exclusivamente al desarrollo de programas Web para la tecnología ASP (Active Server Pages: páginas de servidor activas) .NET 2 de Microsoft.
No obstante, recordá que para que los programas ASP 2 funcionen, necesitás un servido de hosting Web que ejecute Windows .NET. Son poco habituales, porque la mayoría de los servidos de este tipo se basan en Linux, desde un servidor Web Apache. Aunque estén disponibles los basados en Windows, en general son considerablemente más caros que los que utilizan Linux. Resulta dudoso que mucha gente que opte por desarrollar aplicaciones Web utilizando el Visual Web Developer gratuito esté preparada para pagar más dinero por un servidor Web basado en Windows.
Las alternativas
Por supuesto, existen otras herramientas para el desarrollo .NET. EL entorno #develop (SharpDevelop) es una suite integrada de código abierto para VB .NET y C# (www. sharpdevelop.com). Su combinación de un diseñador de formularios visual y un editor de código potente la convirtieron, hasta ahora, en la mejor herramienta de desarrollo gratuita para .NET. Sin duda, se enfrentará al imponente rival que supondrán las funciones de desarrollo más potentes de las ediciones Express.
Mientras, Borland tiene su propio Development Studio, que soporta C# y Delphi for .NET más Delphi. Su producto se verá naturalmente favorecido por los desarrolladores de Delphi.
Para programadores de C#, VB .NET y C++ .NET, la edición completa de Visual Studio .NET 2005 será, probablemente, su producto preferido. Mientras tanto, las ediciones Express gratuitas o económicas son productos muy capaces y resultan unas excelentes opciones para los programadores no profesionales que quieran trabajar con las herramientas de Microsoft.
¿Gestionado o no Gestionado?
Se habló mucho de que los lenguajes NET creen código gestionado. Esto significa que, en lugar de compilar en el de máquina nativo, que ejecuta el hardware de tu PC, las aplicaciones .NET compilan a un tipo de código intermedio, que ejecutan las herramientas de software que incluyen el módulo en tiempo real de lenguaje común (CLR: Common Language Runtime) de .NET. EL módulo CLR es capaz de hacer todo tipo de verificaciones en el código en ejecución para asegurarse de que no realice algo erróneo que pueda bloquear tu PC. También se preocupa de liberar fragmentos de memoria asignados anteriormente a objetos que ya no son necesarios.
En muchas plataformas de programación, cuando se trabaja en lenguajes como C++ o Pascal, el experto es responsable de designar la memoria. No hacerlo es un error habitual, que puede dar lugar a “pérdida de memoria”. Ésta puede terminar consiguiendo que tus programas funcionen a una lentitud inaceptable. El CLR .NET se encarga automáticamente de realizar esta acción. Aunque los beneficios del código gestionado son considerables, también tiene algunas desventajas. El gestionado suele ejecutarse más despacio que el no gestionado. También existen algunas tareas (por ejemplo, acceder al hardware, como los puertos serie) que se efectúan con mayor eficacia si se manipula la memoria explícitamente, sin tener que preocuparte de que el recolector de basura entre en acción. EL grado por el que cada lenguaje individual puede hacer esto es variable. VB lo lleva a cabo hasta cierto punto, “detectando” específicamente la memoria para evitar la recolección de basura. C# tiene más libertad para realizar código no gestionado, pero sólo dentro de los confines de bloques de código marcados específicamente como “inseguros”. C++, por otro lado, dispone de una tremenda libertad para evitar todas las restricciones del CLR y, por esa razón, puede ser una elección más natural cuando se escriben programas que escapan del mundo gestionado de .NET. Sin embargo, aunque la programación no gestionada te da los beneficios de la velocidad, lo hace sacrificando la seguridad. En resumen, es mucho más probable que se bloquee un programa no gestionado (o que incluso haga bloquearse al sistema operativo) que uno gestionado.