martes, 30 de octubre de 2012

Mover Panel (Drag and Drop)



Public Class Form1
   Private FlgMover_01 As Boolean = False
   Private Ubicacion_01 As New Point

   Private FlgMover_02 As Boolean = False
   Private Ubicacion_02 As New Point

   Private Sub panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
      FlgMover_01 = True
      Ubicacion_01 = New Point(e.X, e.Y)
      Me.Cursor = Cursors.SizeAll
   End Sub

   Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
      If FlgMover_01 = True Then
         Panel1.Location = New Point(Panel1.Location.X + e.X - Ubicacion_01.X, Panel1.Location.Y + e.Y - Ubicacion_01.Y)
      End If
   End Sub

   Private Sub Panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
      FlgMover_01 = False
      Me.Cursor = Cursors.Default
   End Sub

   Private Sub Panel2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseDown
      FlgMover_02 = True
      Ubicacion_02 = New Point(e.X, e.Y)
      Me.Cursor = Cursors.SizeAll
   End Sub

   Private Sub Panel2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseMove
      If FlgMover_02 = True Then
         Panel2.Location = New Point(Panel2.Location.X + e.X - Ubicacion_02.X, Panel2.Location.Y + e.Y - Ubicacion_02.Y)
      End If
   End Sub

   Private Sub Panel2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseUp
      FlgMover_02 = False
      Me.Cursor = Cursors.Default
   End Sub

End Class

miércoles, 17 de octubre de 2012

drag and drop Archivo a Textbox



Propiedades del TextBox

   Me.TextBox1.AllowDrop = True

Código:


Imports System.IO

Public Class Form1

   Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop
      If e.Data.GetDataPresent(DataFormats.FileDrop) Then
         Dim filePaths As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
         For Each fileLoc As String In filePaths
            If File.Exists(fileLoc) Then
               TextBox1.Text = Path.GetFullPath(fileLoc)
            End If
         Next
      End If
   End Sub

   Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
      If e.Data.GetDataPresent(DataFormats.FileDrop) Then
         e.Effect = DragDropEffects.Copy
      Else
         e.Effect = DragDropEffects.None
      End If
   End Sub

End Class

sábado, 21 de enero de 2012

Convertir texto en Imagen en (C# Y VB.Net)



En C#

         //CREAMOS EL OBJETO IMAGEN
         Bitmap objBmp = new Bitmap(1, 1);
         int Width = 0;
         int Height = 0;
         //LE DAMOS EL FORMATO DE LA FUENTE
         Font objFont = new Font("Arial", 20, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);

         Graphics objGraphics = Graphics.FromImage(objBmp);

         Width = (int)objGraphics.MeasureString(textBox1.Text, objFont).Width;
         Height = (int)objGraphics.MeasureString(textBox1.Text, objFont).Height;

         objBmp = new Bitmap(objBmp, new Size(Width, Height));

         objGraphics = Graphics.FromImage(objBmp);

         objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
         objGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
         objGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
         objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
         objGraphics.DrawString(textBox1.Text, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0);
         objGraphics.Flush();
         pictureBox1.Image = objBmp;

En VB.NET
 
      'CREAMOS EL OBJETO IMAGEN
      Dim objBmp As New Bitmap(1, 1)
      Dim Width As Integer = 0
      Dim Height As Integer = 0
      'LE DAMOS EL FORMATO DE LA FUENTE
      Dim objFont As New Font("Arial", 20, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel)

      Dim objGraphics As Graphics = Graphics.FromImage(objBmp)

      Width = CInt(objGraphics.MeasureString(textBox1.Text, objFont).Width)
      Height = CInt(objGraphics.MeasureString(textBox1.Text, objFont).Height)

      objBmp = New Bitmap(objBmp, New Size(Width, Height))

      objGraphics = Graphics.FromImage(objBmp)

      objGraphics.SmoothingMode = SmoothingMode.AntiAlias
      objGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
      objGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
      objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias
      objGraphics.DrawString(textBox1.Text, objFont, New SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0)
      objGraphics.Flush()
      pictureBox1.Image = objBmp


Descargar ejemplo ConvertirTextoImagen.rar

miércoles, 11 de enero de 2012

Abrir puertos de SQL SERVER en Windows Server con el Firewall de Windows Activado

Abrir puertos de SQL SERVER en Windows Server con el Firewall de Windows Activado:

1).-Crear un archivo en blanco con extensión .bat
2).-Agregar el sgte codigo al archivo en blanco

@echo ========= SQL Server Ports ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo ========= Analysis Services Ports ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo ========= Misc Applications ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 "HTTP"
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 "SSL"
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE

3).-Llarmar al archivo desde command de windows y correrlo.
4).-Probar si se conecta al sql server desde una pc cliente

lunes, 25 de julio de 2011

jueves, 9 de junio de 2011

Agregar Numero de Fila en RowHeader del DatagridView


   Private Sub DgvMostrarDatos_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles DgvMostrarDatos.RowPostPaint
      Dim strRowNumber As String = (e.RowIndex + 1).ToString
      While strRowNumber.Length < DgvMostrarDatos.RowCount.ToString.Length
         strRowNumber = "0" & strRowNumber
      End While
      Dim size As SizeF = e.Graphics.MeasureString(strRowNumber, Me.Font)
      If DgvMostrarDatos.RowHeadersWidth < CInt(size.Width + 20) Then
         DgvMostrarDatos.RowHeadersWidth = CInt(size.Width + 20)
      End If
      Dim bt As Brush = SystemBrushes.ControlText
      e.Graphics.DrawString(strRowNumber, Me.Font, bt, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + ((e.RowBounds.Height - size.Height) / 2))
   End Sub

miércoles, 6 de abril de 2011

Leer Office Excel 2003,2007 con extensiones .xls;.xlsx;xlsb;xlsm en Vb.Net

La función tambien es aplicado para web.



'Función para mostrar el excel

Private Function MostrarDatExcel(ByVal RUTA As String, ByVal HOJA As String, ByVal WHERE As String) As DataTable
      Dim Dst As New DataSet
      Dim Coneccion As String = String.Empty
      Dim TABLE As DataTable
      Dim ru As New FileInfo(RUTA)
      Select Case ru.Extension
         Case ".xls"
            Coneccion = "Provider=Microsoft.Jet.Oledb.4.0; data source= " & RUTA & ";Extended properties=""Excel 8.0;hdr=yes;imex=1"""
         Case ".xlsx"
            Coneccion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & RUTA & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"""
         Case ".xlsb"
            Coneccion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & RUTA & ";Extended Properties=""Excel 12.0;HDR=YES"""
         Case ".xlsm"
            Coneccion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & RUTA & ";Extended Properties=""Excel 12.0 Macro;HDR=YES"""
      End Select
      Dim Cn As New OleDbConnection(Coneccion)
      Try
         Dst = New DataSet
         Dim Dap As New OleDbDataAdapter("Select * From [" & HOJA & "$]" & IIf(WHERE = String.Empty, "", WHERE), Cn)
         Cn.Open()
         Dap.Fill(Dst)
         Cn.Close()
         TABLE = Dst.Tables(0)
      Catch ex As Exception
         Cn.Close()
         MessageBox.Show(ex.Message, "Informa", MessageBoxButtons.OK, MessageBoxIcon.Information)
         TABLE = Nothing
      End Try
      Return TABLE
   End Function

'Llamar al excel

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim oExcel As New OpenFileDialog
      oExcel.Filter = "Excel 97-2003 Files|*.xls|Excel 2007 Files|*.xlsx|Excel xlsb|*.xlsb|Excel xlsm|*.xlsm|All Files|*.*"
      If oExcel.ShowDialog = Windows.Forms.DialogResult.OK Then
         TextBox1.Text = oExcel.FileName
      End If
   End Sub

'Mostrar el Datagridview

DataGridView1.DataSource = MostrarDatExcel(TextBox1.Text, TextBox2.Text, "")

DESCARGAR Codigo

LeerExcel.rar

Referencias
Imports System.Data.OleDb
Imports System.IO

sino tienes instalado el Office Excel 2007 descargar el siguiente componente AccessDatabaseEngine.exe(Controlador de 2007 Office system: Componentes de conectividad de datos) instalarlo en la pc cliente y sin necesidad de instalarse el office 2007 leera la extension .xlsx

http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891

Información general

Esta descarga instalará un conjunto de componentes que pueden utilizarse con otras aplicaciones que no son de Microsoft Office para leer datos de archivos de 2007 Office System, como archivos de Microsoft Office Access 2007 (.mdb y .accdb) y de Microsoft Office Excel 2007 (.xls, .xlsx y .xlsb). También es compatible la conectividad a archivos de texto y de Microsoft Windows SharePoint Services.

Los controladores ODBC y OLEDB se instalan con el objetivo de que los desarrolladores de aplicaciones puedan utilizarlos para desarrollar aplicaciones con conectividad a formatos de archivo de Office.

jueves, 5 de agosto de 2010

App Inventor: Nuevo servicio de Google

Es un nuevo kit de desarrollo para aplicaciones de Android pensado para gente que busque crear aplicaciones simples para teléfonos móviles Android.

Se trabaja de forma online, permite realizar programas usando elementos visuales, concretamente piezas de puzzle. Google lo ha estado probando en varios centros educativos de EE.UU. y durante la próxima semana lo abrirá en fase beta a unas cuantas personas.

App Inventor es simple de usar, pero también muy poderoso para construir aplicaciones, incluso puede almacenar los datos creados por los usuarios en una base de datos, en el que los profesores puedan crear un custionario y ser contestadas por el usuario.

Inscribite en http://appinventor.googlelabs.com/about/ para que seas uno de los primeros en probarlo.

 




Compartir

Google Wave: PROYECTO ABANDONADO


No tenemos planes de continuar desarrollando WAVE como un producto independiente, pero vamos a mantener el sitio al menos hasta finales de año y ampliar la tecnología para su uso en otros proyectos de Google. La parte central del código, así como los protocolos que han hecho que muchas de las innovaciones de WAVE, por ejemplo, arrastrar y soltar y carácter por carácter, viven de escribir, ya están disponibles como fuente abierta, para que los clientes y socios pueden continuar con la innovación. Además, vamos a trabajar sobre las herramientas para que los usuarios fácilmente pueden "liberar" a su contenido desde el ciclo.

WAVE nos ha enseñado mucho, y estamos orgullosos del equipo por la forma en la que ha empujado los límites de la informática. Estamos muy contentos con lo que van a desarrollar junto a medida que seguimos para crear innovaciones con el potencial de avance de la tecnología y la web en general.

Fueron las palabras del equipo de desarrollo de WAVE.  :(

Via Blog Google

Compartir

martes, 27 de julio de 2010

Mejor codificación con Visual Studio 2010

Mejor codificación con Visual Studio 2010

Doug Turnure

Han pasado 13 años desde que Microsoft desarrolló por primera vez Visual Studio, su entorno de desarrollo integrado insignia de larga duración. La versión inaugural de 1997 comenzó la alineación de las versiones 5 de Visual Basic y Visual C++ en un IDE común. Incluyó una Enterprise Edition, con un en ese entonces famoso elenco de tecnologías que incluían Visual InterDev, Microsoft Transaction Server y Visual SourceSafe 5.0. El propósito fundamental de esa versión era ayudar a los desarrolladores a crear aplicaciones distribuidas con componentes, tanto como aplicaciones cliente/servidor como aplicaciones web.
Hemos recorrido un largo camino como desarrolladores desde entonces. Aunque las formas modificadas de las arquitecturas de cliente/servidor y web aún dominan la escena de la codificación, el enfoque y las demandas de estas aplicaciones se han expandido desde el campo de los sistemas homogéneos y de las llamadas de objeto a objeto fuertemente tipadas.
La transferencia de estado de representación (REST) y las tecnologías relacionadas se están convirtiendo actualmente en los mecanismos de comunicación fundamentales estándar. Las aplicaciones están comenzando a encontrar su lugar en las arquitecturas basadas en nube, dejando la escalabilidad, la confiabilidad y la seguridad de datos en manos de terceros. Además, los patrones de aplicación web se están alineando con estilos y estándares genéricos. Incluso el hardware está cambiando, a medida que las velocidades de los procesadores se están acercando a sus máximos teóricos con la tecnología actual de chips, y los sistemas de varios núcleos están proporcionando una nueva forma de aprovechar aun más rendimiento de un mismo equipo.
Es a este mundo, y a sus exigencias sin precedentes de software y desarrolladores de software, que llega Visual Studio 2010. Cargado con nuevas capacidades, se posiciona para cumplir con los requisitos cada vez mayores de software en un mundo que ahora se extiende a través de plataformas, núcleos, estilos y estándares. Este artículo aborda algunas de las formas más importantes en que Visual Studio 2010 enfrenta los desafíos actuales, para ayudar a los desarrolladores a crear soluciones que prosperen en la compleja industria en la que ahora residen. No se abordarán todas las capacidades nuevas; el objetivo de este artículo es resaltar algunas de las características específicas que los desarrolladores podrán utilizar inmediatamente en su trabajo diario. La lista completa de características está disponible fácilmente en la documentación del producto.

Mejoras del IDE de Visual Studio

A medida que el desarrollo de software sigue enfrentando escenarios cada vez más complejos, los desarrolladores a menudo sienten la presión de ser más productivos. Visual Studio 2010 agrega varias características visuales nuevas en el editor mismo, que ayudan con la productividad. Abordaré tres de ellas en esta sección.
Una de las mejoras más simples de probar en el IDE de Visual Studio 2010 es la capacidad de arrastrar una ventana secundaria afuera de la ventana primaria del IDE. Los monitores se han vuelto lo suficientemente asequibles para permitir que los desarrolladores usen dos (o más) en su trabajo y esta nueva característica permite dispersar sus ventanas de codificación y diseño entre varias pantallas.
Funcionamiento Sólo haga clic en la pestaña de la ventana y arrástrela afuera de la ventana del IDE de Visual Studio. La ventana se volverá a acoplar igual de fácil, sólo haciendo clic en la barra de título y arrastrándola de vuelta al área del IDE, alineando la barra de título con las pestañas de las otras ventanas. Al reacoplar, recibirá una indicación visual cuando la ventana esté alineada correctamente: la ventana se ensombrecerá para indicar que está lista para reacoplarse cuando la suelte. La figura 1 muestra una ventana de código que se ha sacado de la ventana contenedora del IDE.


Figura 1 Desprendimiento de una ventana del IDE
Otra excelente nueva característica del editor de Visual Studio 2010 es la capacidad de seleccionar cuadros y editar un bloque vertical de texto. Algunas veces, necesita aplicar ediciones a una lista extendida de elementos y se encuentra realizando la secuencia de teclado de repetición rápida conocida (por ejemplo, “n+ flecha abajo+flecha atrás” una y otra vez). Aunque es posible que este no sea el problema más frecuente al que usted se enfrenta, suele ocurrir a veces y muchos desarrolladores desean poder seleccionar un bloque vertical completo y aplicar un cambio común a todas las líneas de una sola vez. Visual Studio 2010 presenta esta capacidad de edición de bloque.
Funcionamiento Mantenga presionada la tecla Alt y realice la selección vertical que desea editar. El área resultada funcionará igual que una edición de una sola línea, pero las ediciones se duplicarán simultáneamente en todas las líneas seleccionadas, como se muestra en la figura 2.


Figura 2 Selección de cuadro
También existe una útil característica de resaltado para referencias en el código. En el editor, al hacer clic en una variable, objeto, método, propiedad, tipo u otro símbolo, todas las referencias a dicho símbolo en el código se resaltan, para ayudar a detectar rápidamente dónde se está usando el elemento.
Funcionamiento Elija un tipo, una variable, un método u otro elemento y sólo haga clic sobre éste. Las otras instancias del elemento se resaltarán. La figura 3 muestra esto para una variable llamada jumpList; observe el sombreado gris de todos los usos del código después de seleccionarlo con un clic del mouse.


Figura 3 Símbolos resaltados

Compatibilidad con programación paralela

Al profundizar un poco más en las nuevas capacidades del IDE, la siguiente nueva característica significativa que abordaré es la compatibilidad con la programación paralela. Visual Studio 2010 incluye herramientas de diagnóstico para ayudar a depurar y analizar aplicaciones paralelas. Antes de pasar al utillaje, sin embargo, abordaré brevemente lo que es la programación paralela, y después podremos ver cómo el runtime y las bibliotecas implementan estas nuevas capacidades.
Muchos de los equipos actuales estándar de los desarrolladores son de varios núcleos, lo que significa que tienen dos o más procesadores individuales, y la tendencia actual es hacia equipos con muchos más núcleos. Además de la innovación pura, factores, tales como la conservación de energía y las limitaciones realistas de velocidad del reloj, el consumo de energía y el calor, están influyendo en la tendencia hacia sistemas con varios núcleos. Algunos líderes de la industria predicen que los equipos estándar tendrán 50 o más núcleos dentro de pocos años.
Esto representa un problema extraordinario. Antes de la revolución de los núcleos múltiples, los equipos más rápidos se traducían en aplicaciones de ejecución más rápida. Sin embargo, el software ligado a un solo núcleo (como la mayoría del software actual) no puede aprovechar esta arquitectura emergente. Por lo tanto, es fundamental que las arquitecturas de varios núcleos sean compatibles de aquí en adelante. Antes de Visual Studio 2010 y .NET Framework 4, era difícil escribir código que pudiera aprovechar más de un núcleo. Para enfrentar este desafío, esta versión incluye algunas actualizaciones en el runtime (así como algunos nuevos tipos, bibliotecas y utillaje) para ayudar a los desarrolladores a aprovechar los sistemas de varios núcleos.
.NET Framework 4 incluye extensiones paralelas, que contienen tres componentes: una nueva biblioteca TPL, un nuevo motor de ejecución PLINQ y algunas nuevas estructuras de coordinación de datos (CDS). La biblioteca TPL contiene dos clases primarias. Una de ellas, System.Threading.Tasks.Parallel, incluye construcciones paralelas, como una versión paralela de los métodos For y ForEach. Como su nombre lo indica, el motor de ejecución PLINQ es una versión en paralelo de LINQ to Objects, lo que proporciona una clase ParallelEnumerable en lugar de la clase Enumerable de LINQ. El uso de PLINQ es similar, pero no idéntico, al uso de LINQ to Objects. Por último, CDS incluye un grupo de colecciones seguras para subprocesos y primitivos de sincronización para simplificar escenarios paralelos. CDS incluye los participantes conocidos que esperaría en colecciones seguras para subprocesos (por ejemplo, ConcurrentDictionary, ConcurrentQueue y ConcurrentStack) y tipos de sincronización (SemaphoreSlim, SpinLock, SpinWait y más).
Visual Studio 2010 incluye compatibilidad con extensiones paralelas a través de una nueva ventana Parallel Stacks, una ventana Parallel Tasks y un visualizador de simultaneidad. Todas estas ventanas están diseñadas para entregar una mejor idea de dónde se encuentran las diferentes tareas en un determinado momento de su ejecución. La ventana Parallel Stacks muestra la manera en que varias tareas se abren paso a través de sus rutas dedicadas y muestra pilas de llamadas para las tareas. Usted tiene la opción de verla en términos de abstracción de tareas o directamente como subprocesos. La figura 4 muestra la ventana Parallel Stacks en con la opción de visualización de abstracción de tareas.


Figura 4 Ventana Parallel Stacks de Visual Studio 2010
La ventana Parallel Tasks se ha agregado específicamente para admitir el nuevo modelo de programación basado en tareas. Cuando la aplicación se encuentra en modo de interrupción, puede usar esta ventana para ver cosas como la lista de tareas, el método de ejecución actual para cada tarea, el subproceso afiliado, el dominio de la aplicación, la id. de tarea y más. La ventana es más que una mera visión estática; se puede hacer clic en una tarea específica y el IDE mostrará su estado trayendo al frente el código de ejecución actual. La figura 5 muestra esta ventana para una aplicación de ejemplo. El uso de esta ventana junto a la ventana Parallel Stacks es una buena forma de tener una vista rápida del código en ejecución.


Figura 5 Ventana Parallel Tasks de Visual Studio 2010
Por último, para obtener un análisis más profundo de una aplicación paralela, existe un nuevo visualizador de simultaneidad en Visual Studio 2010. Esta ventana es mucho más compleja que las otras dos y actualmente no admite proyectos web. Su propósito es brindar algunas nociones de cómo la aplicación interactúa con su entorno en escenarios de varios núcleos y varios subprocesos. Hay tres vistas:
  • La vista CPU Utilization muestra la actividad del procesador.
  • La vista Threads muestra cómo interactúan los subprocesos en la aplicación.
  • La vista Cores ofrece información específica sobre cómo los subprocesos migran a través de los núcleos.
El visualizador de simultaneidad depende de Seguimiento de eventos para Windows, lo que significa que se debe ejecutar en Windows Vista o posterior. Las vistas (que van desde texto básico hasta visualizaciones gráficas completas) buscan ineficiencias en el código provocadas por carga mal distribuida a través de CPU, cuellos de botella de ejecución, contenciones y otros posibles inhibidores de rendimiento. La figura 6 muestra el visualizador de simultaneidad, que muestra el uso de subprocesos de una aplicación con un perfil creado.


Figura 6 El visualizador de simultaneidad de Visual Studio 2010

Actualizaciones web

Junto con las actualizaciones generales que he abordado, encontrará notables mejoras para desarrolladores web que pasan a Visual Studio 2010. Por supuesto, ahora se incluye el utillaje del nuevo modelo de programación Controlador de vista de modelo (MVC), que abordaré en la siguiente sección. Y hay experiencias de desarrollador web mejoradas para tecnologías web del lado del cliente y del servidor, así como un modelo de implementación web de un solo clic. Pero comenzaré con ASP.NET AJAX y las nuevas capacidades relacionadas del IDE.
El utillaje de ASP.NET AJAX existió en Visual Studio a partir de Visual Studio 2008. Sin embargo, las plantillas centradas en el servidor han llevado a algunos desarrolladores a creer que éste no agregó valor significativo al desarrollo del lado del cliente. Aunque siempre han existido capacidades del lado del cliente, Visual Studio 2010 incluye soporte adicional que realmente emerge en las capacidades del lado del cliente y del servidor de ASP.NET AJAX. Las plantillas y los controles del lado del cliente son una parte significativa de la nueva lista de características, dado que permiten aprovechar las capacidades mejoradas de acceso a datos del cliente, pero también vale la pena abordar otros nuevos elementos, tales como la integración con jQuery.
Antes de Visual Studio 2010 y de .NET Framework 4, si se deseaba usar software descargado e incorporar la biblioteca de Microsoft AJAX a Visual Studio, se inyectaba todo en la página cuando se agregaba ScriptManager. Con esta versión, se han combinado la biblioteca de Microsoft AJAX y el kit de herramientas de control de AJAX. Asimismo, el equipo de Microsoft AJAX refactorizó las bibliotecas, de manera que ahora se pueden pedir las piezas individuales que se desean, en lugar de estar forzado a una opción de todo o nada. Se puede especificar un modo, solicitarlo todo, ninguna o piezas específicas de la biblioteca de Microsoft AJAX.
Funcionamiento En la etiqueta ScriptManager, sólo incluya el atributo AjaxFrameworkMode. Puede configurarlo en Disabled, Enabled o Explicit:





Copiar código

<asp:ScriptManager ... AjaxFrameworkMode="Disabled"/>

Disabled significa que usted no desea que se cargue Microsoft AJAX Frameworks. Enabled significa que desea el comportamiento existente de versiones anteriores (carga de la biblioteca completa). Explicit permite especificar los archivos de la biblioteca de Microsoft AJAX que desea que se carguen. Puede comprobar esto en el runtime mediante View Source con la página cargada.
De manera similar, el nuevo atributo de red de entrega de contenido (CDN) permite usar las versiones más actualizadas de bibliotecas de script. Anteriormente, se incluían bibliotecas de script tales como jQuery o Microsoft AJAX en el proyecto, y las versiones que se incluían eran las versiones con las que se quedaba para dicha versión. Ahora, puede solicitar que se descargue la versión más reciente desde la Web, en lugar de imponer una versión fija en sus soluciones.
Funcionamiento En la etiqueta asp:ScriptManager, se puede incluir el atributo EnableCdn, configurándolo en “true”:





Copiar código

<asp:ScriptManager ... EnableCdn="true"/>

ASP.NET AJAX 4.0 también permite definir plantillas puramente del lado del cliente. Se configura un marcador de posición <ItemTemplate> y se deja que el cliente realice la representación según valores de runtime, como objeto enlazado a JSON. El runtime realiza la instalación en su nombre, y no es necesario realizar la codificación DOM para que funcione.
Una de las adiciones más útiles a ASP.NET AJAX 4.0 es el acceso mejorado a datos del cliente, que usa el nuevo control DataView y plantillas de cliente para proporcionar acceso fácil y enlace de datos bidireccional en el cliente. Está diseñado para consumir servicios web ASMX, servicios WCF, WCF Data Services, controladores MVC o realmente cualquier cosa que devuelva JSON y hace esto completamente desde código del lado del cliente.
El control DataView es el control principal para admitir plantillas de cliente. Funciona de manera similar a un control ListView, pero se implementa completamente en el código cliente. Permite definir una plantilla en el cliente, introducir los datos en runtime y, después, aplicar formato a los registros a medida que se visualizan.
Funcionamiento Se puede establecer la etapa con un paso sumamente básico: cree un Entity Data Model sobre la base de datos Northwind SQL y use un servicio de datos WCF convencional que lo haga pasar directamente sin cambios, lo que significa que la tabla Employees debe estar disponible para consulta. Con este telón de fondo, se selecciona el control que desea que sirva como la plantilla y se le da un atributo ID y un atributo class=“sys-template”. Cuando se crea la vista de datos, el ID se usa para indicar el destino de los datos que pasan a través del enlace. Se pueden enlazar manualmente, pero también existe una sintaxis que usa llaves para incrustar directamente el nombre de campo en el marcado, que se reemplazará cuando los datos se capturen y se los enlace a ella. Existen varias sintaxis para lograr esto, pero una de las maneras más legibles de escribir el script y el marcado para ejecutar esto es el uso de llaves dobles, como se muestra en la figura 7.
Figura 7 Acceso mejorado a datos con el control DataView





Copiar código

...
   <script type="text/javascript">
    Sys.require([Sys.components.dataView, 
                 Sys.components.adoNetServiceProxy], function () {
            
       var adoNetDataServiceProxy = 
         new Sys.Data.AdoNetServiceProxy('NWDataService.svc');
         
       Sys.create.dataView("#employeetemplate", {
         dataProvider: adoNetDataServiceProxy,
         fetchOperation: "Employees",
         autoFetch: true
            });
       });
    </script>
</head>
<body>
  <div id="employeetemplate" class="sys-template">
      <span>{{ FirstName }}</span><br/> 
  </div>
</body>

Otro elemento destacado de ASP.NET AJAX es que se ha configurado para integrarse de manera mucho más cercana con jQuery. Con el objetivo de permitir que los desarrolladores de jQuery aprovechen los controles de ASP.NET AJAX, todos los controles del kit de herramientas de control de AJAX ahora se exponen automáticamente como complementos de jQuery. Esto significa que los desarrolladores de jQuery puede usar los controles sin tener que cambiar su estilo de desarrollo. Puede considerarlos simplemente como extensiones de jQuery.
Más allá del campo de ASP.NET AJAX, existen varias otras excelentes mejoras de la experiencia de programación de ASP.NET. El enrutamiento de URL con formularios web brinda a las URL una sensación despejada y lógica, que es mucho más apta para la optimización del motor de búsqueda (SEO), así como también legible para los usuarios. Se pueden definir rutas en el archivo global.asax, que asignan las solicitudes a los recursos correspondientes. Esto no sólo ayuda mejorar la SEO, sino que las páginas pueden tomar una ruta predecible para el usuario, como se muestra en la figura 8.
Figura 8 Mejoras de enrutamiento de URL en Visual Studio 2010





Copiar código

New URL Routing Format:
 /CurrentPosition/Bob/Tester

Old URL Style:
 /CurrentPositions.aspx?name="Bob"&role="Tester"

Existen muchas otras mejoras relacionadas con la Web que vale la pena abordar, tales como sitios web para principiantes, HTML más despejadas y archivos de configuración más pequeños, pero no puedo abordarlas todas aquí, por lo que pasaré a las adiciones de utillaje de MVC.

Integración de MVC

El patrón arquitectónico de MVC es una manera popular de crear aplicaciones web muy fáciles de mantener y probar con límites bien definidos y una clara categorización del código por función. MVC es un estilo de programación de ASP.NET que aprovecha plenamente el framework ASP.NET. Es una alternativa a los formularios web, pero no los reemplaza; ambos modelos funcionan muy bien para determinados escenarios y conjuntos de habilidades. Los desarrolladores ahora tienen opciones de modelos de programación para aplicaciones web, ambas basadas en ASP.NET y totalmente compatibles con Visual Studio 2010.
La versión 2 de MVC y su utillaje relacionado (creados entre versiones de Visual Studio) se han integrado al IDE de Visual Studio 2010 con dos plantillas de proyecto, como se muestra en la figura 9.


Figura 9 Plantillas de proyecto MVC en Visual Studio 2010
Con la versión Visual Studio 2010, el modelo de programación de MVC se ha enfocado en tres áreas primarias de mejora. La primera es una mejor separación de las inquietudes. Esto significa un código más fácil de mantener a través de cosas como un nuevo método RenderAction para componer separación comercial lógica, y Áreas, que permiten crear “subaplicaciones” para dividir la funcionalidad en su aplicación. La segunda área de mejora es una mejor historia de variaciones, facilitada a través de anotaciones de fechas y una mejor propagación de reglas de validación para el cliente. Por último, existen mejoras auxiliares. Ahora existen auxiliares fuertemente tipados, así como auxiliares en plantillas, que permiten generar automáticamente UI para entidades.
Funcionamiento  RenderAction facilita compartir una pieza de lógica entre varios controladores. Para llamar al método RenderAction desde dentro de su vista, use el siguiente script (que llama la acción NewEmployee dentro de HRController):





Copiar código

<%  Html.RenderAction("NewEmployee" "HRController"); %>

Integración de SharePoint

Otra integración significativa de utillaje en Visual Studio 2010 es la adición de plantillas para SharePoint Foundation (anteriormente Windows SharePoint Services). Visual Studio 2010 incluye 12 plantillas nuevas para SharePoint Foundation, además de las plantillas SharePoint 2007 Sequential y State Machine Workflow desde las herramientas de Visual Studio para complemento de Office para Visual Studio 2008. Estas plantillas elevan el desarrollo de SharePoint a estado de primera clase, con un enfoque hacia la productividad y la implementación flexibles.
SharePoint Foundation está cambiando en cuanto al uso de núcleos, desde ser un simple portal que se puede extender hasta ser una plataforma para crear aplicaciones desde cero, usando componentes como la administración de usuario, la infraestructura de listas subyacente y el modelo de sitio. Existen avances significativos en el acceso a datos, integración de aplicaciones de línea de negocio y flujo de trabajo. También existe un modelo de implementación más flexible. Muchas compañías actualmente tienen instalaciones masivas de SharePoint y necesariamente son más cuidadosas acerca de la implementación ad-hoc de nuevas aplicaciones de SharePoint. El nuevo modelo de implementación flexible significa que ahora puede aislar sus nuevas instalaciones a grupos específicos, en lugar de exigirles que se implementen en todo el ecosistema de SharePoint.
Visual Studio 2010 ha mejorado ampliamente las opciones de utillaje para crear aplicaciones de SharePoint. Es cierto que ya existían eficientes capacidades para esto, pero la curva inicial de aprendizaje fue realmente difícil. Con esta versión, encontrará excelente soporte para SharePoint compilado dentro de las herramientas. Esto incluye depuración completa e integrada, utillaje de implementación flexible y compatibilidad de diseño mejorada para servicios de conectividad empresarial (BCS), flujo de trabajo, LINQ to SharePoint y elementos web visuales. También existe un mejor puente para importar elementos desde la herramienta SharePoint Designer hasta Visual Studio 2010.
Funcionamiento La creación de un elemento web visual es considerablemente más fácil en Visual Studio 2010 con la nueva superficie de diseño. Comience por elegir empezar un nuevo proyecto y seleccione SharePoint | Visual Web Part, como se muestra en la figura 10.


Figura 10 Plantilla Visual Web Part de SharePoint en Visual Studio 2010
Tenga en cuenta que debe tener instalado SharePoint en el equipo del desarrollador para esto, pero que no es tan difícil como solía serlo. Si usa Windows Vista SP1 (o posterior) o Windows 7, ahora puede instalar SharePoint directamente en el equipo sin tener que preocuparse de instalar Windows Server o configurar una VM para esto.
Se le pedirá que indique a Visual Studio 2010 dónde desea instalar la solución para depuración. Una vez que tenga abierto el editor, puede hacer clic en la pestaña inferior izquierda Design y comenzar a construir visualmente el elemento web simplemente arrastrando y soltando controles en la superficie. Tenga en cuenta que puede que necesite abrir el cuadro de herramientas (View menu | Toolbox) si aún no aparece.

Desarrollo de Windows 7

Con la popularidad cada vez mayor de Windows 7, es probable que los desarrolladores deseen comenzar a agregar funcionalidad a sus aplicaciones que aproveche algunas de las ricas experiencias disponibles en su nueva plataforma. Existen varias formas en que los desarrolladores pueden agregar funcionalidad específica de Windows 7. Una de las nuevas capacidades populares es la nueva barra de tareas. Dada su pronta aceptación por parte de los usuarios y su facilidad de programación, está bien posicionada para usarla en aplicaciones compatibles con Windows 7.
La barra de tareas reemplaza a la barra de tareas de Inicio rápido de versiones anteriores de Windows. La barra de tareas se extiende por la parte inferior (de manera predeterminada) de la pantalla de Windows 7 y permite “fijarle” aplicaciones. Además, permite que las aplicaciones incorporen elementos, tales como Jump List, que son conjuntos de vínculos rápidos a los que se tiene acceso al hacer clic con botón secundario en los iconos acoplados, y las vistas previas de barra de tareas, que son vistas en miniatura de las ventanas abiertas de una aplicación. La barra de tareas se programa fácilmente, tanto desde código administrado (a través del Windows 7 API Code Pack) como no administrado, y da de lleno en las selecciones con precisión de los desarrolladores que desean aprovechar la creación de aplicaciones para ejecutar en Windows 7.
Funcionamiento Los usuarios pueden fijar y retirar aplicaciones de la barra de tareas simplemente haciendo clic con botón secundario en los iconos, ya sea en el menú de inicio, en el Explorador o en la barra de tareas misma. Para fijar una aplicación, haga clic con el botón secundario en el icono de la aplicación (no en un documento, sino en la aplicación misma) y seleccione “Pin to taskbar”. Para quitarla de la barra de tareas, haga lo mismo, pero seleccione “Unpin this program from Taskbar”.
La barra de tareas ofrece mejoras tanto cosméticas como funcionales para las aplicaciones. Cualquier programa se puede fijar a la barra de tareas, ya sea que se esté ejecutando o no. El icono fijado puede iniciar la aplicación o servir para representar ventanas minimizadas. Cuando se coloca el cursor sobre un icono en la barra de tareas, se provoca un bello efecto visual llamado “seguimiento activo” cuando la aplicación se está ejecutando. El seguimiento activo toma el color dominante del icono y lo usa para resaltar el icono. Por supuesto, también puede ver una vista previa de sus instancias en ejecución de la aplicación justo encima del icono fijado.
La barra de tareas también tiene una característica llamada aero-peek. Para verla, puede colocar el cursor sobre la vista previa de una ventana y la ventana de la vista previa seleccionada pasará al frente, mientras que las demás ventanas se atenúan. Esta es una excelente forma en que los usuarios pueden dar un breve vistazo a una ventana oculta o minimizada sin cambiar el enfoque ni presionar una sola tecla.
Para realizar seguimiento de aplicaciones, a las instancias de aplicaciones en ejecución se les otorga una id. de aplicación y se alinean con su icono de aplicación en la barra de tareas. Como desarrollador, puede usar las clases TaskbarManager y JumpList para interactuar de manera programática con la barra de tareas desde sus aplicaciones. Tenga en cuenta que para usar estas clases, deberá descargar y hacer referencia a los ensamblados en el Windows 7 API Code Pack gratuito desde code.msdn.microsoft.com/WindowsAPICodePack.
El equipo de SDK de Windows compiló este paquete de códigos, que permite trabajar de manera programática con la barra de tareas. También contiene varias aplicaciones de ejemplo que tienen mejoras de Windows 7. Usted en realidad establece una referencia con los ensamblados compilados (en este ejemplo, la búsqueda del proyecto de barra de tareas) dentro del código.
También tiene flexibilidad para dar a varias instancias de una aplicación la misma id. de aplicación o ids. de aplicación únicas, de manera que puede agruparlas o separarlas en la barra de tareas. Para dar a diferentes instancias de una aplicación ids. únicas, debe establecer la id. de aplicación antes de llamar a Application.Run. Si solamente desea dar a ventanas secundarias su propio icono en la barra de tareas, puede cambiar su id. de aplicación en cualquier momento.
Funcionamiento Para dar a ventanas secundarias su propio icono en la barra de tareas, use la clase JumpList y llame al método estático CreateJumpListForIndividualWindow, pasando una id. de aplicación de ventana secundaria y el controlador de la ventana. El código es similar al siguiente:





Copiar código

childWindowJumpList = JumpList.CreateJumpListForIndividualWindow(
childWindowApplicationId, this.Handle);

Integración de Windows Azure

La computación nube está emergiendo rápidamente como una alternativa viable a las soluciones arquitectónicas tradicionales de hosting web local. En pocas palabras, es la idea de tomar parte de las soluciones de software (o todas) y tener un host de compañía, todo en un centro de datos masivo, con escalado a pedido y alta confiabilidad. La plataforma Windows Azure es la plataforma de computación y servicios de nube de Microsoft. Consiste en tres conjuntos de servicios: Windows Azure, SQL Azure y Windows Azure Platform AppFabric.
Windows Azure es el entorno de hosting de aplicaciones; puede considerarlo como el sistema operativo de la nube. SQL Azure es fundamentalmente la base de datos de la nube. Windows Azure AppFabric es un conjunto de bloques de creación comunes usados por aplicaciones hospedadas en la nube. Windows Azure AppFabric actualmente incluye dos servicios: el servicio de control de acceso (para autenticación federada y autorización basada en notificaciones) y el bus de servicios (para conectividad entre soluciones en la nube y conexiones locales).
Visual Studio 2010 incluye varias plantillas de proyecto para crear soluciones de la plataforma Windows Azure. Tanto para VB.NET como para C#, existen cuatro plantillas diferentes para roles web y una para rol de trabajo. También existe una plantilla de proyecto de rol de trabajo para F#. Las plantillas de rol web para VB.NET y C# incluyen una cada una para ASP.NET, MVC con ASP.NET, servicios WCF y CGI.
Un aspecto exclusivo de trabajar con proyectos de la plataforma Windows Azure en Visual Studio 2010 es que se pueden seleccionar varios roles para el proyecto al crearlo. Por ejemplo, puede crear un nuevo proyecto con un rol web ASP.NET MVC en C# y un rol de trabajo en VB.NET. Ésta es la razón por la que la experiencia New | Project es levemente diferente para aplicaciones de nube; en realidad, se seleccionan roles de un cuadro de diálogo el lugar de a través de un único paradigma de selección que se ve con la mayoría de las otras plantillas de proyecto.
Funcionamiento Para crear un proyecto que sea compatible con la plataforma Windows Azure en Visual Studio 2010, en la lista Installed Templates se selecciona Cloud, como se muestra en la figura 11.


Figura 11 Selección de un tipo de proyecto de nube en Visual Studio 2010
Aparecerá un cuadro de diálogo donde podrá seleccionar los roles deseados, en que cada rol puede ser un tipo o lenguaje diferente. La figura 12 muestra un nuevo proyecto de servicio de nube de Windows Azure con un rol web ASP.NET MVC, dos roles de trabajo VB.NET y un rol de trabajo F#.


Figura 12 Configuración de un proyecto de servicio de nube con varios roles y lenguajes

Compatibilidad con múltiples versiones (multi-targeting)

La compatibilidad con múltiples versiones (multi-targeting) misma en realidad no es nueva en Visual Studio 2010. Sin embargo, posee una nueva característica de extensibilidad que vale la pena observar. Resulta algo sorprendente ver cuántas personas no se dan cuenta de los beneficios de la compatibilidad con múltiples versiones (multi-targeting) y como ésta permite usar Visual Studio 2010 para crear soluciones que se ejecutarán en versiones anteriores de .NET Framework. La compatibilidad con múltiples versiones (multi-targeting) existe para equipos de desarrollo que desean aprovechar el utillaje más reciente (con su depuración avanzada y características de editor mejoradas), pero que aún no están preparados para migrar su código (o posiblemente sus clientes) a .NET Framework 4. Con la compatibilidad con múltiples versiones (multi-targeting), se tiene la opción de crear aplicaciones que sean compatibles con las versiones 2.0, 3.0, 3.5 o 4 de .NET Framework.
Funcionamiento Al iniciar un nuevo proyecto, sólo seleccione el framework compatible en la lista desplegable como se muestra en la figura 13.


Figura 13 Selección de una versión de framework compatible mediante la compatibilidad con múltiples versiones (multi-targeting)
Una nueva opción llamada <More Frameworks…> (observe la última entrada en el cuadro desplegable encerrado en un círculo en la figura 13), permite extensibilidad en los frameworks compatibles. Esto permite la posible adición de futuras versiones del framework, y posiblemente otros perfiles de .NET Framework más adelante. Lo más probable es que dichas adiciones se instalen a través de MSI, pero finalmente se pueden agregar manualmente con un archivo de descripción de XML y copiando los ensamblados de framework directamente en el equipo.

Y más

Existen muchas otras nuevas características en Visual Studio 2010, muchas más de las que he podido abordar en este artículo. Es difícil para pasar por alto la página de inicio personalizable, que da la oportunidad a las compañías de conectar recursos específicos de la compañía. Y después están las actualizaciones de C++/ANSI, la ayuda actualizada constantemente, el nuevo lenguaje de programación F#, mejoras de Entity Framework, visualizaciones de código y muchas otras nuevas características que vale la pena aprender. Estas capacidades sirven para posicionar aun más Visual Studio 2010 como una convincente herramienta de desarrollo, capaz de entregar el tipo de software que nuestra industria espera actualmente. Esperamos que ahora tenga una mejor idea de lo que está disponible en Visual Studio 2010. Si desea probarlo, descargue una copia de evaluación en microsoft.com/vstudio.

Via: MSDN Magazine
Compartir