tur a
Visual Studio 2010 Novedades
Eje
mp
lo
de
lec
テ]gel Rayo
tur a lec de
Eje
mp
lo
La colección. Saber hacer de los profesionales TIC se corresponde con textos escritos por el plantel de profesores de la prestigiosa compañía tecnológica Alhambra Eidos. Esta firma, especializada en la formación de personal técnico en las tecnologías de la información y de las comunicaciones, lleva formando en España desde hace veinte años a multitud de profesionales en dicho entorno. Muchas de las obras contenidas en la serie son los textos que Alhambra Eidos emplea en su reconocido Máster Alhambra Eidos en desarrollo de software, un curso que la mencionada compañía ha decidido impartir usando el libro electrónico como base. Así, sus alumnos, en lugar de recibir las más de 3.000 páginas en papel que hasta el curso 2008-2009 recibía, ahora se les entrega un reader en propiedad que contiene esa misma información pero en formato de libro electrónico.
tur a
Sipnosis
lec
El texto que tiene usted en sus manos pretende ofrecer una visión general acerca de las novedades traídas al mercado con la nueva versión de Visual Studio (2010) y la versión de .NET Framework 4.0. En el texto se tratarán las novedades en dicho entorno de desarrollo, su Framework .NET asociado y los componentes que forman la plataforma .NET como son Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation Foundation, ASP.NET y ADO.NET. Además se tratarán las novedades de despliegue de aplicaciones y los nuevos tipos de proyectos incluidos.
de
Ángel Rayo es formador de Alhambra-Eidos desde 2004. Ha sido el autor y coautor de varios libros entre los que destaca el titulado "Administración y Desarrollo con WSS 3.0 y MOSS 2007" centrado en Microsoft SharePoint así como otros relacionados con la plataforma .NET. Además, ha escrito artículos para dotnetmanía sobre el ciclo de vida de desarrollo de software con Visual Studio Team System, MSF y CMMI.
Eje
mp
lo
Ha participado en ponencias sobre SharePoint 2007, Visual Studio Team System y Symbian. Posee las certificaciones MCPD Enterprise en .NET 3.5, MCITP en SQL Server 2008 y MCTS en SharePoint 2007 principalmente. Está certificado como formador oficial de Microsoft, EXIN y Nokia+Symbian, siendo en esta última certificación uno de los dos únicos profesionales autorizados en España. Dentro de la gestión de procesos y servicios posee las certificaciones IT Service Management (based on ITIL®), ITIL® Expert, ISO/IEC 20000 Consultant y MOF v4.0 Foundation.
Visual Studio 2010 y .NET 4. Novedades © Ángel Rayo - Alhambra Eidos
lec
© De esta edición: 2010, Luarna Ediciones, S.L.
de
www.luarna.com
Madrid, abril de 2010
tur a
Luarna
ISBN: 978-84-92684-86-1
mp
lo
Versión 1.0 (15-04-2010)
«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta
Eje
obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algún fragmento de esta obra».
tur a lec
Visual Studio 2010 y .NET 4.0. Novedades
Eje
mp
lo
de
テ]gel M. Rayo
tur a
Indice 1.
NOVEDADES EN VISUAL STUDIO 2010 ..................................................... 5
2.
lec
NOVEDADES EN EL EDITOR DE VISUAL STUDIO 2010................................................. 6 NOVEDADES EN PLANTILLAS DE TEXTO .................................................................... 9 NOVEDADES EN LOS PROYECTOS .............................................................................12 Proyectos de modelado ......................................................................................15 Novedades en la gestión de extensiones..............................................................20 Plantillas online ................................................................................................20 NOVEDADES EN EL DESPLIEGUE DE APLICACIONES ...................................................21 Instalador ClickOnce personalizado ..................................................................22 InstallShield 2010 LE ........................................................................................26 NOVEDADES EN LOS LENGUAJES ...........................................................27
3.
lo
de
NOVEDADES EN VISUAL BASIC 2010 .......................................................................27 Propiedades autoimplementadas........................................................................27 Inicializadores de colecciones............................................................................28 Continuación de línea implícita .........................................................................28 Expresiones y subrutinas lambda multilínea.......................................................29 Nueva opción de línea de comandos para especificar versiones del lenguaje ......30 Soporte de equivalencia de tipos ........................................................................30 Soporte dinámico...............................................................................................31 NOVEDADES EN VISUAL C# 2010 ............................................................................31 API de Office .....................................................................................................31 NOVEDADES EN VISUAL F# 2010 ............................................................................33 NOVEDADES EN .NET FRAMEWORK 4.0 .................................................35
mp
MEJORAS DE SEGURIDAD ........................................................................................36 COMPATIBILIDAD Y DESPLIEGUE .............................................................................39 CARACTERÍSTICAS Y MEJORAS DEL NÚCLEO ............................................................40 Gestión del rendimiento y el diagnóstico ............................................................41 Garbage Collector.............................................................................................42 DLR ..................................................................................................................43 LoopExpression ........................................................................................................ 43 TryExpression ........................................................................................................... 44
Eje
Tuplas ...............................................................................................................44 BigInteger y números complejos ........................................................................45 Mejoras en enumeración del sistema de archivos ...............................................45 Mapeo de ficheros en memoria ..........................................................................46
1
tur a
Sistemas Operativos de 64 bits y procesos..........................................................48 Otras novedades ................................................................................................49 COMPUTACIÓN PARALELA ......................................................................................51 Clase Task .........................................................................................................51 PLINQ...............................................................................................................52 NETWORKING.........................................................................................................54 4.
NOVEDADES EN ASP.NET...........................................................................56
Núcleo de ASP.NET ...........................................................................................56
lec
Cacheado de salida (output caching) .......................................................................... 56 Precarga de aplicaciones Web .................................................................................... 59 Redirección permanente de página ............................................................................. 60 Compresión del estado de la sesión ............................................................................ 61
ASP.NET Web Forms.........................................................................................62
lo
de
Etiquetas meta........................................................................................................... 62 ViewState a nivel de control ...................................................................................... 62 Soporte a navegadores y capacidades ......................................................................... 63 Enrutado ................................................................................................................... 65 Client ID ................................................................................................................... 68 Selección de fila persistente en controles de datos....................................................... 69 FormView y ListView ............................................................................................... 70 Filtrar datos con el control QueryExtender ................................................................. 71 SearchExpression.................................................................................................. 73 RangeExpression .................................................................................................. 73 PropertyExpression ............................................................................................... 74 OrderByExpression............................................................................................... 74 CustomExpression ................................................................................................ 74 Mejoras en accesibilidad y estilos CSS....................................................................... 75
ASP.NET MVC ..................................................................................................75
mp
Ventajas de ASP.NET Web Forms ........................................................................ 76 Ventajas de ASP.NET MVC ................................................................................. 77
ASP.NET Chart Control.....................................................................................87 Funcionalidad de Microsoft AJAX .....................................................................90 Mejoras de Visual Web Developer .....................................................................91 Despliegue de aplicaciones con VS 2010............................................................92 Mejoras en ASP.NET multiversión .....................................................................94 NOVEDADES EN ADO.NET .........................................................................95
Eje
5.
CLAVES AJENAS EN EL MODELO CONCEPTUAL ........................................................95 NUEVOS MÉTODOS PARA EL DESARROLLO DE APLICACIONES N-CAPAS .....................97 SOPORTE ENTITYDATASOURCE PARA EL CONTROL QUERYE XTENDER ......................97 EJECUCIÓN DIRECTA DE COMANDOS ALMACENADOS ................................................98
2
tur a
ExecuteStoreCommand ......................................................................................98 ExecuteStoreQuery ............................................................................................99 Translate ......................................................................................................... 100 OBJETOS QUE IGNORAN LA PERSISTENCIA .............................................................. 101 CARGA PEREZOSA (LAZY) DE OBJETOS RELACIONADOS .......................................... 103 FUNCIONES EN LAS CONSULTAS LINQ A ENTIDADES ............................................. 103 EntityFunctions ............................................................................................... 103 Funciones personalizadas de base de datos ............................................................... 104 Funciones personalizadas del modelo ....................................................................... 105
6.
lec
SqlFunctions ................................................................................................... 106 MEJORAS EN ORDER BY EN LINQ A ENTIDADES .................................................... 107 GENERACIÓN DE CÓDIGO PERSONALIZADO DE LA CAPA DE OBJETOS ....................... 108 SOPORTE MODEL-FIRST ........................................................................................ 108 SOPORTE DE TIPOS COMPLEJOS .............................................................................. 110 NOVEDADES EN WCF 4.0 .......................................................................... 113
de
ACTIVACIÓN A PARTIR DE CONFIGURACIÓN ........................................................... 113 INTEGRACIÓN CON SYSTEM.WEB.ROUTING ........................................................... 113 SOPORTE DE ENLACE CON MÚLTIPLES SITIOS IIS .................................................... 114 SERVICIO DE ENRUTADO ....................................................................................... 115 SOPORTE PARA WS-DISCOVERY ........................................................................... 117 ENDPOINTS ESTÁNDARES ...................................................................................... 119 ATRIBUTO DE FRAMEWORK ASOCIADO .................................................................. 120 WCF REST ......................................................................................................... 120 NOVEDADES EN WWF 4.0 ......................................................................... 122
lo
7.
Eje
mp
MODELO DE ACTIVIDADES DE FLUJOS DE TRABAJO ................................................ 122 PROYECTOS Y ELEMENTOS .................................................................................... 122 Tipos de proyectos ........................................................................................... 123 Tipos de elementos .......................................................................................... 124 MODELO DE DATOS DE ACTIVIDAD EXPLÍCITO ...................................................... 124 Variables......................................................................................................... 125 Argumentos ..................................................................................................... 126 Expresiones ..................................................................................................... 128 BIBLIOTECA DE ACTIVIDADES ............................................................................... 130 Actividades de tipo colección ........................................................................... 131 Actividades de tipo control de flujo .................................................................. 133 Actividades de tipo transacción........................................................................ 136 Actividades de tipo ejecución y primitivas ........................................................ 138 Actividades de tipo manejo de errores.............................................................. 139
3
tur a
Actividades de tipo migración .......................................................................... 140 Actividades de tipo gráfico de flujos................................................................. 140 Actividades de tipo mensajería......................................................................... 141 ALOJAMIENTO Y EJECUCIÓN.................................................................................. 143 WorkflowServiceHost ...................................................................................... 144 WorkflowApplication ....................................................................................... 144 WorkflowInvoker ............................................................................................. 146 SEGUIMIENTO DE LOS FLUJOS DE TRABAJO ............................................................. 147 NOVEDADES EN WPF 4.0 .......................................................................... 150
lec
8.
NUEVOS CONTROLES ............................................................................................ 150 DataGrid......................................................................................................... 150 Calendar y DatePicker .................................................................................... 151 VISUAL STATE MANAGER ..................................................................................... 152 OPERACIONES TÁCTILES ....................................................................................... 154 OPERACIONES DE ENTRADA DE DATOS................................................................... 155 API de entrada de datos................................................................................... 155
de
Clases Keyboard y Mouse ....................................................................................... 155 Clase Stylus ............................................................................................................ 156 Eventos de manipulación ......................................................................................... 157
Eje
mp
lo
GRÁFICOS Y ANIMACIONES ................................................................................... 158 TEXTO ................................................................................................................. 159 ENLACE DE DATOS................................................................................................ 160 APLICACIONES DE NAVEGADOR XAML................................................................. 160 WPF Y WINDOWS ................................................................................................ 161 JumpList.......................................................................................................... 161 TaskbarItemInfo .............................................................................................. 162 DISEÑADOR WPF Y SILVERLIGHT ......................................................................... 164
4
tur a
1. NOVEDADES EN VISUAL STUDIO 2010
lec
Microsoft ofrece su versión 10 de su entorno de desarrollo de aplicaciones (IDE) en este año 2010. El cambio que ha sufrido este producto desde su primera liberación para Visual Basic 5.0 en 1997 hasta la actual es abismal.
Visual Studio 2010 ha dejado de ser simplemente un entorno de desarrollo de aplicaciones y se ha convertido en la herramienta perfecta para integrar todo el ciclo de vida de desarrollo de aplicaciones desde la fase de toma de requisitos hasta la de despliegue y mantenimiento pasando por las intermedias de análisis, diseño, implementación y pruebas.
de
En el presente capítulo pretendo mostrar al lector las novedades que este producto presenta a los usuarios en comparación con lo que ofrecía su predecesor Visual Studio 2008. Dichas novedades y mejoras estarán estructuradas en cinco grupos principales: Novedades en el editor de Visual Studio 2010
·
Novedades en la generación de código y las plantillas de texto
·
Novedades en los proyectos
·
Novedades en el despliegue de aplicaciones
·
Novedades en la gestión de extensiones
mp
lo
·
Eje
Una vez organizado el capítulo, comencemos a adentrarnos en el mundo de Visual Studio 2010. Bienvenidos. 5
tur a
Novedades en el editor de Visual Studio 2010
mp
lo
de
lec
Los desarrolladores que hemos utilizado las versiones anteriores de Visual Studio hemos podido comprobar que las diferentes ventanas de Visual Studio (Explorador de Soluciones, de Servidores, Tareas, Resultados, Vista de Clases, etc…) estaban obligadas a visualizarse dentro del propio espacio de visualización de Visual Studio, con el problema que esto supone si por ejemplo trabajamos con varios monitores. En Visual Studio 2010 esto ya no sucede, ahora podemos seguir ubicando las ventanas en el espacio de visualización del IDE o bien optar por desplazarlas a otra parte del escritorio o a otro monitor adaptando la presentación a nuestros gustos. Aunque las ventanas tengan la posibilidad de flotar entre escritorios siguen presentando datos actualizados del estado del entorno, por lo que si cambiamos alguna propiedad de un control notaremos dicho cambio inmediatamente en cualquier ventana relacionada con dicho control. En la siguiente figura podéis ver como quedaría la situación:
Figura 1 – Posicionamiento de ventanas
Eje
Otra de las novedades que ofrece Visual Studio 2010 a los desarrolladores es la posibilidad de hacer Zoom en aquellas ventanas que contengan sólo texto como puede ser la ventana de resultados. Para hacer Zoom en una ventana sólo deberemos pulsar la tecla CTRL mientras movemos la rueda central del ratón. Otra de las novedades que trae Visual Studio 2010 en esta categoría de novedades del editor es la funcionalidad conocida como “Jerarquía de Llamadas” (Call Hierarchy). Se encuentra disponible para Visual C# y para 6
tur a
lec
Visual C++ y nos permite localizar desde que zonas de código se hacen llamadas a un método, propiedad o constructor específicos; qué métodos, propiedades o constructores son llamados desde una zona de código concreta; qué implementaciones existen de una interfaz o qué sobrecargas de un miembro virtual o abstracto existen.
de
Figura 2 – View Call Hierarchy
Figura 3 – Resultados Call Hierarchy
mp
lo
La localización de objetos en una solución o proyecto es una de las funcionalidades que todo desarrollador necesita tener en su entorno de desarrollo. En versiones anteriores de Visual Studio ya existía la posibilidad de localizar elementos en la solución a partir del nombre completo o de parte de éste. En Visual Studio 2010 se ha ampliado el número de posibilidades existentes para localizar objetos. Dichas posibilidades son las siguientes: ·
Explorador de Objetos.
Eje
Podremos buscar un objeto en las diferentes ubicaciones mostradas en la siguiente figura. Entre dichas ubicaciones podemos contar con los componentes de .NET Framework, la solución actual y Silverlight 3.0.
7
tur a lec
Figura 4 – Object Browser
·
Navegar a
mp
lo
de
Desde el menú de Edición de Visual Studio 2010 podemos acceder a la opción “Navegar a”. Si tenemos algún texto seleccionado en el editor nos buscará dicho texto en los objetos de Visual Studio y de nuestra solución y si no podremos especificar nosotros el texto a buscar. En los términos de búsqueda se pueden utilizar operadores lógicos (& |), comodines o expresiones regulares.
Eje
Figura 5 – Navigate to
·
8
Buscar Símbolo
tur a
·
lec
La opción de Buscar Símbolo ha sido mejorada en Visual Studio 2010 ya que dicha funcionalidad ya estaba presente en Visual Studio 2008.
Ir a Definición
lo
de
La opción “Ir a Definición” nos permite posicionarnos directamente en la definición de un miembro de clase (propiedad, método o evento) de manera rápida. Aunque ya existía en Visual Studio 2008 en la nueva versión ha mejorado en rendimiento.
mp
Figura 6 – Ir a Definición
Novedades en plantillas de texto
Eje
Dentro de los nuevos componentes incluidos en los proyectos de Visual Studio 2010 encontramos las plantillas de texto preprocesado. Este componente está formado por un fichero con código fuente C# y un fichero .tt con el texto que generará para integrarlo con nuestras aplicaciones. Básicamente sirve para generar fragmentos de texto que podemos incluir en nuestros informes, resultados o ficheros de salida de manera transparente. En versiones anteriores 9
tur a
de Visual Studio estaba incluido en los llamados “lenguajes específicos del dominio o DSL.
de
lec
Para agregar una plantilla de texto preprocesado, también conocida como T4 del inglés Text Template Transformation Toolkit deberemos ir a Agregar nuevo elemento en cualquier proyecto y elegiremos el elemento que se muestra en la siguiente figura.
Figura 7 – Plantilla de texto preprocesada
lo
Dicho elemento incluirá en nuestro proyecto dos nuevos ficheros, uno con extensión “tt” y otro con la extensión del lenguaje de programación con el que estemos trabajando.
mp
Dicha plantilla “TT” puede contener texto preestablecido o incluir directivas de código que permitan generar el texto resultado. En el siguiente ejemplo podemos ver cómo construir una plantilla de texto preprocesado que nos devolverá un mensaje XML con la información de una lista de cadenas de caracteres que forma parte de la propia clase. El fichero de código tendrá el siguiente contenido:
Eje
[System.CodeDom.Compiler.GeneratedCodeAttribute ("Microsoft.VisualStudio.TextTemplating", "10.0.0.0")] public partial class plantillaMensaje : plantillaMensajeBase { public class ToStringInstanceHelper { private System.IFormatProvider formatProviderField = global::System.Globalization.CultureInfo.InvariantCulture; public virtual string TransformText() {
10
tur a
this.GenerationEnvironment = null; this.Write("<elementos>\r\n"); foreach (String st in _lista) { #line default #line hidden this.Write(" <elemento long=\""); this.Write (this.ToStringHelper.ToStringWithCulture(st.Length)); #line default #line hidden this.Write("\">\r\n
");
lec
this.Write(this.ToStringHelper.ToStringWithCulture(st)); #line default #line hidden this.Write("\r\n
</elemento>\r\n"); } #line default #line hidden this.Write("</elementos>\r\n"); return this.GenerationEnvironment.ToString(); }
}
de
Código 1 – Código de la plantilla de texto
El código anterior ha sido generado a partir de la plantilla TT siguiente:
lo
<#@ template language="C#" #> <elementos> <# foreach (String st in _lista) { #> <elemento long="<#= st.Length #>"> <#= st #> </elemento> <# } #> </elementos>
mp
Código 2 – Plantilla TT
Eje
Como podemos observar en la plantilla se generan los resultados a partir de una lista (_lista) para cuyos elementos muestro la longitud de cada cadena de la misma como atributo (<#= st.Length #>) y la propia cadena como texto (<#= st #>). Como el fichero de código está sincronizado con la plantilla he optado por definir dicha lista en otro fichero de código fuente al tratarse de una clase parcial. El código sería el siguiente:
11
tur a
partial class plantillaMensaje { List<String> _lista; public List<String> Lista { get { return _lista; } set { _lista = value; } } }
Código 3 – Resto del código
lec
Como podemos ver, las plantillas de texto preprocesado permiten combinar la generación de cadenas de texto en una clase con la definición mediante una plantilla. Las directivas que tendremos que utilizar en las plantillas para incluir referencias a código fuente son las siguientes:
de
<# #>: Código fuente <#= #>: Expresión que formará parte del texto
<#@ assembly name=”System.Xml.dll” #>: Importa un ensamblado
lo
<#@ import namespace=”System.Xml” #>: Importa un espacio de nombres <#@ include file=”c:\texto.txt” #>: Incluye el contenido del fichero
mp
Novedades en los proyectos
En Visual Studio 2010 como en todas las ediciones anteriores contamos con nuevos tipos de proyectos alineados con las nuevas versiones de los componentes asociados a .NET. En esta edición, la principal novedad es la ampliación de los llamados proyectos basados en plantillas online.
Eje
La principal novedad en la creación de proyectos o soluciones hace referencia no a un tipo de proyecto concreto sino a un nuevo lenguaje de programación incluido como parte de Visual Studio. Este lenguaje no es otro que F#, una 12
tur a
implementación del lenguaje ML para .NET con sus cimientos construidos a partir de OCaml. F# se trata de un lenguaje de programación que cubre tanto el paradigma funcional como el orientado a objetos. Se trata de uno de los lenguajes surgidos de Microsoft Research.
De momento, en la versión RC de Visual Studio 2010 sólo se encuentra disponible la posibilidad de crear estos 4 tipos de proyectos: Aplicación de consola F#
·
Biblioteca F#
·
Tutorial F#: Visión general del lenguaje
·
Biblioteca Silverlight F#
de
lec
·
Dentro de los proyectos sólo podremos añadir ficheros de script, ficheros de firma y ficheros de código fuente F#. Todo hace esperar a que en la versión final de Visual Studio 2010 se incluirán mayor número de proyectos para este lenguaje.
lo
En cuanto a las novedades a nivel de proyecto en los lenguajes ya tradicionales de Visual Studio (C# y VB) se incluyen los siguientes tipos: Aplicaciones Web ASP.NET MVC 2
·
Aplicaciones dinámicas de datos ASP.NET de entidades
·
Aplicaciones dinámicas de datos ASP.NET de LINQ to SQL
·
Complementos y plantillas para Office 2010 en los mismos productos que para 2007 (Excel, InfoPath, Outlook, PowerPoint, Project, Visio y Word)
Eje
mp
·
·
13
Servicio de Windows Azure
tur a
·
Proyectos para SharePoint 2010 incluyendo: o Proyecto vacío o Web Part visual o Flujos de trabajo secuenciales
o Modelo BDC o Receptor de eventos
lec
o Flujos de trabajo de máquinas de estado
o Definición de lista o de sitio
o Módulo
de
o Tipo de contenido
o Importar flujo de trabajo reutilizable
lo
o Importar paquete de solución SharePoint (WSP) Aplicación, biblioteca y aplicación de navegación Silverlight 3.0
·
En WCF se incluyen los proyectos de tipo biblioteca de servicio de sindicación.
mp
·
Eje
He dejado para el final la mayor novedad en proyectos en Visual Studio 2010. Se trata de los proyectos de modelado. Con dichos proyectos podremos construir todos los componentes y diagramas necesarios para integrar UML en nuestros procesos de análisis y diseño de aplicaciones.
14