sábado, 29 de noviembre de 2014

Introducción a ASP.NET

Esta sección contiene temas que proporcionan información general acerca de ASP.NET, en qué se diferencia ASP.NET 2.0 de versiones anteriores y qué se necesita para crear y ejecutar aplicaciones Web ASP.NET.

ASP.NET

Usar servicios de aplicación ASP.NET

ASP.NET proporciona servicios de aplicación, a los que se puede obtener acceso en la web, que permiten a las aplicaciones cliente usar la información de autenticación, rol y perfil del usuario. Las aplicaciones cliente escritas en lenguajes diferentes y que se ejecutan en sistemas operativos diferentes pueden tener acceso a los servicios. El único requisito es que estos clientes deben poder comunicar usando el protocolo SOAP 1.1. 
Este tutorial muestra cómo configurar y utilizar los servicios de aplicación ASP.NET. El tutorial está dividido en las siguientes partes:
  • La primera parte muestra cómo configurar un sitio web ASP.NET para exponer los servicios de aplicación.
  • La segunda parte muestra cómo compilar una aplicación de consola de Windows con acceso a la información de autenticación, rol y perfil de un usuario. En este tutorial generará una aplicación de consola de Windows, pero los servicios de la aplicación ASP.NET están disponibles para todas las aplicaciones cliente que pueden enviar y recibir mensajes en formato SOAP.
  • La parte final describe cómo implementar el sitio web de los servicios de aplicación en Windows Server 2008 e IIS 7.0.

Requisitos previos

Para poder completar este tutorial, necesitará:
  • Visual Studio 2010. No puede usar Microsoft Visual Web Developer 2005 para este tutorial porque creará una aplicación de consola de Windows, que no se admite en Visual Web Developer Express.
  • Microsoft SQL Server o SQL Server Express Edition instalado en el equipo.

Exponer los servicios de aplicación

En esta sección se describe cómo exponer los servicios de aplicación como parte de un sitio web ASP.NET para que cualquier cliente pueda tener acceso a ellos en la red. Los pasos descritos aquí solo se aplican al servidor. 

Para crear el sitio web de los servicios de aplicación

  1. Abra Visual Studio 2010.
  2. En el menú Archivo, haga clic en Nuevo sitio Web.
    Aparece el cuadro de diálogo Nuevo sitio web.
  3. En Plantillas instaladas de Visual Studio, seleccione Sitio web ASP.NET.
  4. En la lista Ubicación, seleccione Sistema de archivos.
  5. En el cuadro de texto Carpeta, asigne el nombre WcfApplicationServices al sitio web.                                  
  6. Haga clic en Aceptar.
    Visual Studio crea un nuevo sitio web ASP.NET y abre la página Default.aspx.
  7. En el menú Ver, haga clic en Otras ventanas y, a continuación, haga clic en Ventana Propiedades.
  8. En el Explorador de soluciones, haga clic en el nombre del sitio web.
  9. En la ventana Propiedades, establezca Usar puertos dinámicos en False.
    Esto indica a Visual Studio que especifique un puerto fijo en lugar de un puerto seleccionado de forma aleatoria cuando inicie el servidor de desarrollo de ASP.NET. En este tutorial, debe tener un número de puerto fijo que pueda usar al generar las clases de proxy de cliente y los archivos de configuración. Para obtener más información, vea Cómo: Especificar un puerto para el servidor de desarrollo.
     
  10. Establezca el Número de puerto en 8080.                                  
La información de pertenencia, función y perfil de ASP.NET se almacena en una base de datos. Esta base de datos se crea automáticamente la primera vez que se obtiene acceso a ella. En el procedimiento siguiente, escribirá código que crea usuarios y roles para el sitio web. La primera vez que se tiene acceso al sitio web, se crea la base de datos automáticamente. Además, se le agregan dos roles (Managers y Friends).

Proveedores de Datos en ADO.NET

Los proveedores de acceso a datos ADO.NET (conocidos como "Managed Data Providers")
representa un conjunto especifico de clases que permiten conectarse e interactuar con una base
de datos, cada uno utilizando un protocolo particular. El .NET Framework incluye cuatro
proveedores de acceso a datos que en conjunto le permiten conectarse e interactuar virtualmente
con cualquier base de datos existente en la actualidad:

ADO.NET

DO.NET es un conjunto de clases que exponen servicios de acceso a datos para programadores de .NET Framework. ADO.NET ofrece abundancia de componentes para la creación de aplicaciones de uso compartido de datos distribuidas. Constituye una parte integral de .NET Framework y proporciona acceso a datos relacionales, XML y de aplicaciones. ADO.NET satisface diversas necesidades de desarrollo, como la creación de clientes de base de datos front-end y objetos empresariales de nivel medio que utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.

Polimorfismo en Visual Basic

 Cómo proporciona Visual Basic el polimorfismo

La mayoría de los sistemas de programación orientada a objetos proporcionan polimorfismo mediante la herencia. Es decir, las hipotéticas clases Pulga y Tiranosaurio pueden heredar características de una clase Animal. Cada clase invalidaría el método Morder de la clase Animal para aportar sus propias características de mordedura.
El polimorfismo proviene del hecho de que puede llamar al método Morder de un objeto que pertenezca a cualquier clase derivada de Animal sin conocer la clase a la que pertenece el objeto.
Proporcionar polimorfismo mediante interfaces
Visual Basic no utiliza la herencia para proporcionar polimorfismo. Visual Basic proporciona el polimorfismo mediante múltiples interfaces ActiveX. En el Modelo de objetos componentes (COM) que forma la infraestructura de la especificación ActiveX, las múltiples interfaces permiten que los sistemas de componentes software evolucionen sin afectar al código existente.
Una interfaz es un conjunto de propiedades y métodos relacionados. Gran parte de la especificación ActiveX se ocupa de la implementación de interfaces estándar para obtener servicios del sistema o para proporcionar funcionalidad a otros programas.
En Visual Basic podría crear una interfaz Animal e implementarla en las clases Pulga y Tiranosaurio. Después podría invocar el método Morder de cualquiera de los dos tipos de objeto sin conocer su tipo.
Polimorfismo y rendimiento
El polimorfismo es importante por razones de rendimiento. Para comprobarlo, observe la función siguiente
Public Sub Alimentarse(ByVal Critter As Object, _
ByVal Food As Object)
	Dim dblDistance As Double
	' Código para calcular la distancia a la comida 
	'(omitido).
	Critter.Mover dblDistance	' Enlace en tiempo de 
										' compilación
	Critter.Morder Food			' Enlace en tiempo de 
										' compilación
End Sub
 

Los métodos Mover y Morder son enlaces en tiempo de compilación con Critter. El enlace en tiempo de compilación tiene lugar cuando Visual Basic no puede determinar en tiempo de compilación el tipo de objeto que contendrá una variable. En este ejemplo, el argumento Critter está declarado como As Object, de forma que en tiempo de ejecución pueda contener una referencia a cualquier tipo de objeto, como un Coche o una Roca.
Como no puede saber cuál será el objeto, Visual Basic compila una parte de código adicional para preguntar al objeto si acepta el método llamado. Si el objeto acepta el método, dicho código adicional lo invoca; si no, el código adicional desencadena un error. Todas las llamadas a métodos o a propiedades incurren en esta carga adicional.
Por el contrario, las interfaces permiten los enlaces en tiempo de diseño. Cuando Visual Basic conoce en tiempo de compilación la interfaz que se va a llamar, puede comprobar en la biblioteca de tipos si dicha interfaz acepta el método. Después, Visual Basic puede compilar un salto directo al método, mediante una tabla virtual de funciones (vtable). Esto es muchas veces más rápido que el enlace en tiempo de compilación.
Ahora suponga que los métodos Mover y Morder pertenecen a la interfaz Animal y que todas las clases de animales implementan esta interfaz. Ahora podría declarar el argumento Critter como As Animal y los métodos Mover y Morder se enlazarán en tiempo de diseño:
Public Sub Alimentarse(ByVal Critter As Animal, _
ByVal Food As Object)
	Dim dblDistance As Double
	' Código para calcular la distancia a la comida 
	'(omitido).
	Critter.Mover dblDistance	' Enlace en tiempo de 
					' diseño.
	Critter.Morder Food		' Enlace en tiempo de 
					' diseño.
End Sub
 

Definiendo Propiedades e Implementando Métodos

Crear una aplicación que contiene una clase de Visual Basic .NET
  1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de Visual Basic .NET llamado EmployeeProperties.
  2. En el menú Proyecto, haga clic en Agregar clase. En el cuadro de diálogo Agregar nuevo elemento, escriba Employee.vb en el cuadro Nombre y, a continuación, haga clic en Abrir.
  3. Examine el código de la nueva clase en la ventana Ver código.

Definir campos, constructores y métodos

  1. Agregue tres campos Private a la clase Employee de la manera siguiente:
    Private Name As String
    Private Salary As Decimal
    Private HireDate As DateTime
  2. Defina un constructor para la clase con el fin de inicializar los campos de la clase Employee:
    Public Sub New(ByVal Name As String, _
                   ByVal Salary As Decimal, _
                   ByVal HireDate As DateTime)
       Me.Name = Name
       Me.Salary = Salary
       Me.HireDate = HireDate
    End Sub
  3. Agregue un método Public a la clase:
    Public Sub PayRise(ByVal Amount As Decimal)
       Me.Salary += Amount
    End Sub

Definir propiedades en la clase

  1. Agregue el código siguiente para agregar una propiedad de lectura y escritura llamada FullName. El descriptor de acceso Get devuelve el nombre del empleado. El descriptor de acceso Set utiliza el parámetro Value que se pasa en el descriptor de acceso Set para establecer el nombre del empleado.
    Public Property FullName() As String
       Get
          Return Me.Name
       End Get
       Set(ByVal Value As String)
          Me.Name = Value
       End Set
    End Property
  2. Agregue el código siguiente para agregar una propiedad ReadOnly llamada Remuneration. El descriptor de acceso Get devuelve el sueldo del empleado. No hay ningún descriptor de acceso Set porque el sueldo no se puede establecer directamente; la única forma de cambiar el sueldo es llamar al método PayRise.
    Public ReadOnly Property Remuneration() As Decimal
       Get
          Return Me.Salary
       End Get
    End Property
  3. Agregue el código siguiente para agregar otra propiedad ReadOnly llamada DaysSinceJoined. El descriptor de acceso Get calcula cuántos días ha trabajado el empleado para la compañía.
    Public ReadOnly Property DaysSinceJoined() As Integer
       Get
          Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)
          return timespan.Days
       End Get
    End Property

Crear un objeto y utilizar las propiedades

  1. Muestre el código de Module1.vb en la ventana Ver código.
  2. En el método Main, utilice el operador New para crear un objeto Employee. Asigne la referencia de objeto a una variable local Employee del siguiente modo:
    Dim worker As New Employee( "Jayne Doe", _
                                 125000, _
                                 New DateTime(1998, 7, 31) )
  3. Agregue el código siguiente para cambiar la propiedad FullName del empleado. Esto invocará implícitamente el descriptor de acceso Set para la propiedad FullName.
    worker.FullName = "Jayne Lafayette"
  4. Agregue el código siguiente para mostrar los detalles del empleado mediante los descriptores de acceso Get para las propiedades FullName, Remuneration y DaysSinceJoined:
    Console.WriteLine("Nombre completo: " & worker.FullName)
    Console.WriteLine("Remuneración: " & worker.Remuneration)
    Console.WriteLine("Días trabajados: " & worker.DaysSinceJoined)

Comprobar que funciona

  1. Genere y ejecute la aplicación.
  2. La aplicación mostrará la siguiente información en la consola (el valor "Días trabajados" depende de la fecha actual):
    Nombre completo: Jayne Lafayette
    Remuneración: 125000
    Días trabajados: 1139
  3. Vuelva al archivo Module1.vb en la ventana Ver código y agregue el código siguiente al final del método Main:
    worker.Remuneration = 1000000
  4. Pruebe a generar la aplicación. Aparecerá un error de compilación porque Remuneration es una propiedad de sólo lectura.
  5. Cambie la instrucción de la manera siguiente:
    worker.Salary = 1000000
  6. Pruebe a generar de nuevo la aplicación. Aparecerá otro error de compilación porque el campo Salary está marcado como Private. La única forma de modificar el sueldo del empleado es utilizar el método público PayRise.

NameSpaces

System.Data.SqlClient

El espacio de nombres System.Data.SqlClient es el proveedor de datos de .NET Framework para SQL Server.
Un proveedor de datos de .NET Framework para SQL Server describe una colección de clases utilizada para tener acceso a una base de datos de SQL Server en el espacio administrado. Al utilizar SqlDataAdapter, se puede rellenar un DataSet residente en memoria, que sirve para consultar y actualizar la base de datos.