Professional Documents
Culture Documents
NET
Licencia Propietario, comercial
De Wikipedia, la enciclopedia libre
(Redirigido desde .NET)
Saltar a navegación, búsqueda En español
Para el dominio de Internet, véase .net.
Para la televisión pública de Grecia, véase NET (Grecia).
Este artículo o sección necesita referencias que aparezcan en
una publicación acreditada, como revistas especializadas,
monografías, prensa diaria o páginas de Internet fidedignas. .NET es un framework de Microsoft que hace un énfasis en la
Puedes añadirlas así o avisar al autor principal del artículo en transparencia de redes, con independencia de plataforma de hardware y
su página de discusión pegando: {{subst:Aviso referencias| que permita un rápido desarrollo de aplicaciones. Basado en ella, la
Microsoft .NET}} ~~~~ empresa intenta desarrollar una estrategia horizontal que integre todos
sus productos, desde el sistema operativo hasta las herramientas de
mercado.
Microsoft .NET
.NET podría considerarse una respuesta de Microsoft al creciente
mercado de los negocios en entornos Web, como competencia a la
Desarrollador plataforma Java de Sun Microsystems y a los diversos framework de
desarrollo web basados en PHP. Su propuesta es ofrecer una manera
rápida y económica, a la vez que segura y robusta, de desarrollar
Microsoft aplicaciones –o como la misma plataforma las denomina, soluciones–
permitiendo una integración más rápida y ágil entre empresas y un
Microsoft .NET Framework acceso más simple y universal a todo tipo de información desde
cualquier tipo de dispositivo.
[ocultar]
Lanzamiento inicial 13 de febrero de 2002
1 Consideraciones
2 Componentes
Última versión estable 4.0.30319.1
3 Common Language Runtime (CLR)
12 de abril de 2010; hace 6 meses o 3.1 Características
4 Estandarización y licenciamiento
5 El futuro de .NET
Género Framework 6 Biblioteca de Clases Base de .NET
7 Ensamblados
8 Versiones
Sistema operativo Microsoft Windows 9 Véase también
10 Referencias
11 Enlaces externos Debido a la publicación de la norma para la infraestructura común de
lenguajes (CLI por sus siglas en inglés), el desarrollo de lenguajes se
facilita, por lo que el marco de trabajo .NET soporta ya más de 20
lenguajes de programación y es posible desarrollar cualquiera de los
Consideraciones tipos de aplicaciones soportados en la plataforma con cualquiera de
ellos, lo que elimina las diferencias que existían entre lo que era posible
La plataforma .NET de Microsoft es un componente de software que hacer con uno u otro lenguaje.
puede ser añadido al sistema operativo Windows. Provee un extenso
conjunto de soluciones predefinidas para necesidades generales de la Algunos de los lenguajes desarrollados para el marco de trabajo .NET
programación de aplicaciones, y administra la ejecución de los son: C#, Visual Basic, Delphi (Object Pascal), C++, J#, Perl, Python,
programas escritos específicamente con la plataforma. Esta solución es Fortran, Prolog (existen al menos dos implementaciones, el P# y el
el producto principal en la oferta de Microsoft, y pretende ser utilizada Prolog.NET ), Cobol y PowerBuilder.
por la mayoría de las aplicaciones creadas para la plataforma Windows.
Common Language Runtime (CLR)
.NET Framework se incluye en Windows Server 2008, Windows Vista y
Windows 7. De igual manera, la versión actual de dicho componente Artículo principal: Common Language Runtime
puede ser instalada en Windows XP, y en la familia de sistemas
operativos Windows Server 2003. Una versión "reducida" de .NET
Framework está disponible para la plataforma Windows Mobile,
incluyendo teléfonos inteligentes.
Cargador de clases: permite cargar en memoria las clases. En octubre de 2007, Microsoft anunciaba la liberación de su código
Compilador MSIL a nativo: transforma código intermedio de alto fuente para la Biblioteca de Clases Base del .NET Framework (incluidos
nivel independiente del hardware que lo ejecuta a código de ASP.Net, ADO.Net y Windows Presentation Foundation) esto con el
máquina propio del dispositivo que lo ejecuta. lanzamiento de su nueva versión: Visual Studio 2008.
Administrador de código: coordina toda la operación de los
distintos subsistemas del Common Language Runtime. El futuro de .NET
Recolector de basura: elimina de memoria objetos no utilizados.
Motor de seguridad: administra la seguridad del código que se A largo plazo Microsoft pretende reemplazar el API Win32 o Windows
ejecuta. API con la plataforma .NET. Esto debido a que el API Win32 o Windows
Motor de depuración: permite hacer un seguimiento de la API fue desarrollada sobre la marcha, careciendo de documentación
ejecución del código aun cuando se utilicen lenguajes distintos. detallada, uniformidad y cohesión entre sus distintos componentes,
Verificador de tipos: controla que las variables de la aplicación provocando múltiples problemas en el desarrollo de aplicaciones para el
usen el área de memoria que tienen asignado. sistema operativo Windows. La plataforma .NET pretende solventar la
Administrador de excepciones: maneja los errores que se mayoría de estos problemas proveyendo un conjunto único y expandible
producen durante la ejecución del código. con facilidad, de bloques interconectados, diseñados de forma uniforme
Soporte de multiproceso (hilos): permite ejecutar todo el código y bien documentados, que permitan a los desarrolladores tener a mano
en forma paralela. todo lo que necesitan para producir aplicaciones sólidas.
Empaquetador de COM: coordina la comunicación con los
componentes COM para que puedan ser usados por el .NET Debido a las ventajas que la disponibilidad de una plataforma de este
Framework. tipo puede darle a las empresas de tecnología y al público en general,
Soporte de la Biblioteca de Clases Base: interfaz con las clases muchas otras empresas e instituciones se han unido a Microsoft en el
base del .NET Framework. Esto quiere decir que existen tipos desarrollo y fortalecimiento de la plataforma .NET, ya sea por medio de
de estructuras como es la de java y la .NET la implementación de la plataforma para otros sistemas operativos aparte
de Windows (Proyecto Mono de Ximian/Novell para Linux/MacOS
X/BSD/Solaris), el desarrollo de lenguajes de programación adicionales Administración de componentes Web que corren tanto en el
para la plataforma (Lexico para hispanoparlantes, ANSI C de la servidor como en el cliente (ASP.NET)
Universidad de Princeton, NetCOBOL de Fujitsu, Delphi de Borland, Manejo y administración de excepciones
PowerBuilder de Sybase entre otros) o la creación de bloques Manejo del sistema de ventanas
adicionales para la plataforma (como controles, componentes y Herramientas de despliegue de gráficos (GDI+)
bibliotecas de clases adicionales); siendo algunas de ellas software libre, Herramientas de seguridad e integración con la seguridad del
distribuibles bajo la licencia GPL. sistema operativo
Manejo de tipos de datos unificado
Con esta plataforma, Microsoft incursiona de lleno en el campo de los Interacción con otras aplicaciones
Servicios Web y establece el XML como norma en el transporte de Manejo de cadenas de caracteres y expresiones regulares
información en sus productos y lo promociona como tal en los sistemas Operaciones aritméticas
desarrollados utilizando sus herramientas. Manipulación de fechas, zonas horarias y periodos de tiempo
Manejo de arreglos de datos y colecciones
Manipulación de archivos de imágenes
Aleatoriedad
Biblioteca de Clases Base de .NET Generación de código
Manejo de idiomas
Auto descripción de código
Interacción con el API Win32 o Windows API.
Compilación de código
La Biblioteca de Clases Base (BCL por sus siglas en inglés) maneja la Ensamblados
mayoría de las operaciones básicas que se encuentran involucradas en
el desarrollo de aplicaciones, incluyendo entre otras:
Artículo principal: Ensamblado (Microsoft .NET)
2.0 SP1 2.0.50727.1433 19-11-2007 ¿Entonces .NET es un lenguaje de programación?, No. Es mucho más
que eso, Microsoft .NET es un conjunto de tecnologías de software ,
compuesto de varios lenguajes de programación que se ejecutan bajo
el .NET Framework. Es además un entorno completamente orientado a
2.0 SP2 2.2.30729 ¿? objetos y que es capaz de ejecutarse bajo cualquier plataforma.
Introducción a .NET.
La mejor forma de entender esto es un ejemplo. Imaginemos los El MSIL es independiente del procesador, de la plataforma de
menús de cualquier aplicación Windows que nos permiten acceder a las desarrollo y de la plataforma de ejecución. El MSIL es parte del .Net
distintas opciones del programa, pues bién, en el mundo de la tecnología FrameWork.
.Net dichos menús son una clase perteneciente al .Net FrameWork. Esta
clase es siempre la misma independientemente del lenguaje y entorno
Llegados a este punto tenemos nuestro programa compilado a MSIL,
en el que nos encontremos, y la forma de trabajar con ella es la misma
pero el programa no funciona, ya que el procesador sólo entiende su
desde C#, VB.net o cualquier lenguaje .Net. Lo mismo ocurre con los
propio código máquina nativo, y MSIL no lo es. Es entonces cuando
botones, las imágenes, la forma de leer los archivos ... todo,
aparece el CRL (Common Language Runtime), o motor de ejecución
absolutamente todo lo que hagamos en un lenguaje .NET está basado
común, que lo que hace es servir de traductor entre el MSIL y el codigo
en el .Net FrameWork.
máquina nativo. Cuando ejecutamos un programa el CRL se encarga de
compilar a código nativo dicho programa y ejecutarlo. A este tipo de
compiladores se les conoce como compiladores JIT(Just In Time). Si
alguno de vosotros conoce Java abra gritado ¡plagio, esto es el
ByteCode!. No exactamente ... cambian ... los nombres. Teoricamente el
CRL interpreta MSIL mucho mejor de lo que lo hace Java con el Assemblies
ByteCode y existen ciertas diferencias en la architectura interna, el CRL
únicamente compila a código nativo la parte necesaria en cada momento Un proyecto .NET no genera un ejecutable tal y como lo conocemos.
durante la ejecución mientra que Java compila el programa completo, Un proyecto .NET genera Assemblies. Un assemblie es la unidad
pero .... ejecutable de cualquier programa .NET, pero no se limita al código
compilado sino que tambien inluye lo que se ha dado en llamar el
De este modo podemos ejecutar nuestro programa sobre cualquier manifiesto.
máquina, siempre y cuando exista una versión del .Net FrameWork y del
CRL apropiada. Al código que se ejecuta bajo la batuta del CRL se le El manifiesto es un listado de las librerias (dll) y los controles (ocx)
conoce como código contralado. que son necesarios para que la apliciación funcione. Este listado
contiene el número de versión necesario para que la aplicación funcione
Nota técnica. Los lenguajes .Net no son compilados , ya que no generan correctamente, impidiendo que la instalación posterior de un porgrama
codigo nativo, ni interpretados, ya que compilan código MSIL, son afecte a nuetro ejecutable.
lenguajes evaluados.
Con esta técnica MicroSoft pretende poner fin al ya maldito infierno
de las dll. El tiempo dira si lo consiguen.
Para que todo esto sea posible MicroSoft ha introducido ciertas De Wikipedia, la enciclopedia libre
reestricciones a la hora de diseñar los lenguajes de programación y en la (Redirigido desde Namespace)
forma de programar. Saltar a navegación, búsqueda
La especificación común de lenguajes CLS hace posible que cualquier En programación, un espacio de nombres (del inglés namespace), en
fabricante de software genere herramientas compatibles con .NET. De su acepción más simple, es un conjunto de nombres en el cual todos los
esta forma existen versiones .NET de Delphi y otros lenguajes ajenos a nombres son únicos.
MicroSoft.
Un espacio de nombres es un contexto en el que un grupo de uno o más
Dentro del CLS destaca especialmente el CTS (Common Type identificadores pueden existir. Un identificador definido en un espacio de
System), que es una especificación que define como el CRL utiliza y nombres está asociado con ese espacio de nombres. El mismo
administra los tipos de datos. Básicamente es una relación entre los identificador puede independientemente ser definido en múltiples
distintos tipos de datos que proporciona cada lenguaje. La consecuencia espacios de nombres, eso es, el sentido asociado con un identificador
inmediata del CTS es que dentro de un mismo proyeto .NET podemos definido en un espacio de nombres es independiente del mismo
utilizar varios lenguajes .NET. identificador declarado en otro espacio de nombres. Los lenguajes que
manejan espacio de nombres especifican las reglas que determinan a
qué espacio de nombres pertenece una instancia de un identificador.
Por ejemplo, Pedro trabaja para la compañía X y su número de
empleado es 123. María trabaja para la compañía Y y su número de
empleada también es 123. La razón por la cual Pedro y María pueden
ser identificados con el mismo número de empleado es porque trabajan Lenguaje ensamblador, assembly o assembly language,
para compañías diferentes. Diferentes compañías simbolizan en este lenguaje de bajo nivel utilizado para escribir programas
caso diferentes namespaces. informáticos.
Ensamblado o assembly, colección de archivos o ficheros,
En programas grandes o en documentos no es infrecuente tener cientos agrupados juntos para formar una unidad lógica o biblioteca de
o miles de identificadores. Los namespaces (O técnicas similares como código parcialmente compilado.
la emulación de namespaces) disponen de un mecanismo para ocultar "Assembly" es el quinto álbum de estudio de la banda gótica
los identificadores locales. Ellos proveen los medios para agrupar noruega Theatre of Tragedy, publicado el 16 de abril de 2002.
lógicamente los identificadores relacionados en sus correspondientes
namespaces, haciendo así el sistema más modular.
xlsApp = CType(CreateObject("Excel.Application"), Una vez que inica una aplicación Visual Basic .NET no puede detenerla.
Excel.Application) La solución es utilizar una de las nuevas funciones de Visual Studio
xlsBook = CType(xlsApp.Workbooks.Add, Excel.Workbook) referentes al control de procesos en Windows.
xlsSheet = CType(xlsBook.Worksheets(1), Excel.Worksheet) De clic a la sección Components agregue el componente Process, de
clic a su propiedad StartInfo y asigne el valor calc.exe a su propiedad
xlsSheet.Cells(1, 1) = "www" FileName, es posible pasar argumentos al abrir la aplicación para ello
xlsSheet.Cells(1, 2) = "informatique" asigne los valores correspondientes a las propiedad Arguments.
De esta manera para abrir una aplicación utilice el método Start() y para Archivos y recursos de soporte.
cerrarla el método CloseMainWindow(). También es posible cerrar MiAplicacion.exe
aplicaciones utilizando el método Kill, pero tenga cuidado ya que esta Código MSIL
técnica no le permitira almacenar los cambios realizados en su trabajo.. Metadatos
Será posible incluir clases como Threading y Diagnostics para manipular Tipos definidos, métodos, etc.
vía código, no serán necesarios si únicamente emplea Start y Tipos a los que se hace referencia, métodos, etc.
CloseMainWindow Manifiesto
Private Sub btnCalc_Click(ByVal sender As System.Object, ByVal e Nombre y versión
As System.EventArgs) _ Lista de archivos
Handles btnCalc.Click Ensamblados a los que se hace referencia
System.Diagnostics.Process.Start("calc.exe") Recursos y tipos exportados
End Sub Información de seguridad
Cuando la aplicación queda ensamblada, el sistema operativo no tendrá
Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e que registrar formalmente las aplicaciones para poder ejecutarlas ya que
As System.EventArgs) _ estas son comprensibles y autodescriptibles para el sistema.
Handles btnOpen.Click Es posible instalar una aplicación Visual Studio .NET copiando
Proc.Start() unicamente el ensamblado generado en un equipo que tenga instalado
End Sub .NET Framework.
Para crear un proyecto de instalación distribuida solo es necesario
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e ejecutar el asistente para proyectos de instalación. Este proyecto puede
As System.EventArgs) _ ser personalizado unicamente definiendo sus propiedades.
Handles btnClose.Click Para crear un programa de instalación completo, los archivos de
Proc.CloseMainWindow() instalación distribuida deberán incluir el .NET Framework redistribuible.
End Sub Pasos para la creación de un proyecto de instalación distribuida:
Abrir la aplicación
Instalación Distribuida File/New/Project
La distribución de aplicaciones en Visual Studio .NET se hacen Project Types/Setup and deployment Projects (según la
agregando un proyecto de instalación distribuida a la solución que se versión que tenga instalada, es posible que existan 4
desea distribuir. Será necesario configurar el proyecto de instalación plantillas)
distribuida para el tipo de instalación que desee ejecutar. Clic en plantilla setup project
Una aplicación se ensambla en cuatro elementos: Escribir nombre y seleccionar ubicación
Código de Lenguaje Intermedio de Microsoft (MSIL), que es Seleccionar Add to solution
el código del programa compilado en un lenguaje Clic en el botón [OK]
comprensible por el runtime del lenguaje común. (Se agrego un proyecto de instalación con el nombre que le
Metadatos, información sobre los tipos, métodos y demás asigno)
elementos definidos en el código. Seleccione el proyecto de instalación
Manifiesto, información sobre nombre, versión, lista de los Project/Add/Project Output
archivos contenidos en el ensamblado, información de (Aparece un cuadro de dialogo, para configurar su
seguridad, información sobre el ensamblado. proyecto)
Clic en el botón [OK] abrir el formulario es necesario crear una variable del tipo del formulario
Seleccione el proyecto de instalación que deseamos abrir y despues utilizar el método Show (que abre el
Project/Add/File formulario en modo no-modal) de esta variable objeto.
Seleccionar archivos adicionales que se deseen incluir en Dim frm2 As New Form2
su proyecto de instalación distribuida. frm2.Show()
La selección de archivos se ve reflejada en el explorador de
soluciones La forma en que Visual Basic 6 abre formularios recibe el nombre de
El proyecto queda en espera de una próxima generación de generación implícita de instancias, pero Visual Basic .NET exige que se
solución y creará el programa de instalación dentro de la declare específicamente una variable de tipo formulario antes de
ubicación especificada. utilizarlo.
Se almacena un archivo .msi (windows installer) que podrá Ahora en Visual Basic .NET para abrir un formulario de manera Modal es
utilizar para instalar su aplicación. necesario especificarlo a través del método ShowDialog,
Buil/Configuration Manager (configure su proyecto para las Dim frm2 As New Form2
plataformas a aplicar, depende la instalación que tenga) frm2.ShowDialog()
En configuración seleccione release
Seleccione el proyecto de instalación
Para definir las coordenadas a partir de las cuales se desea ubicar el
Abra la ventana de propiedades y defina los valores para
formulario en la pantalla en Visual Basic .NET existe una propiedad
cada una de ellas, por ejemplo Autor
llamada DesktopBounds, la cual únicamente puede ser leida o definida
Seleccione el proyecto de instalación, clic con el botón
en tiempo de ejecución y recibe como argumentos las dimensiones de
derecho, seleccione propiedades
un rectángulo en pares (esquina superior izquierda y esquina inferior
La acción anterior abre una ventana de Property pages
derecha). Estas coordenadas se expresan en píxeles y toman como
Seleccione las opciones de su preferencia, para definir la
referencia la parte superior izquierda de la pantalla.
conficuración del proyecto
Dim oRect As New Rectangle(0, 0, 300, 300)
Build/Build Solution, esto compilara la solución, incluyendo
frm2.DesktopBounds = oRect
la versión final y del proyecto de instalación distribuida
Busque en el directorio Release el archivo .exe y pruebelo
(aqui también se encuentra el archivo .msi). Otra forma de establecer la posición de un formulario durante el tiempo
Plantillas: de diseño, pero con menos opciones es la propiedad StartPosition, cuyo
Cab, crea uno o más archivos contenedores, recomendable valor de argumento define la posición que tendrá el formulario.
para descargas parciales remotas. frm2.StartPosition = FormStartPosition.CenterScreen
Módulo, propósito general Es posible manipular el estado minimizado, maximizado y restaurado de
Instalación, utiliza Windows Installer las ventanas a través de las propiedades correspondientes:
Instalación Web, utiliza Windows Installer y un servidor web WindowState = FormWindowState.Minimized
para realizar instalaciones desde Internet. WindowState = FormWindowState.Maximized
Formularios WindowState = FormWindowState.Normal
Un formulario en Visual Basic .NET hereda sus propiedades de la Clase
System.Windows.Forms.Form. También es posible establecer el tamaño máximo o mánimo de las
Para abrir un formulario especifico en Visual Basic .NET digamos que ventanas:
más que novedad es algo un poco más tedioso, pues antes de poder Dim nMax As New Size(200, 200)
MaximumSize = nMax Lee una línea de caracteres del stream actual y regresa los
WindowState = FormWindowState.Maximized ReadLine
datos como string
ReadToEn Lee un stream desde la posición actual hasta el final del
StreamReader d stream
La Clase StreamReader es una opción más del .NET Framework para la StreamWriter
manipulación de archivos de texto. Esta clase entre otros contiene un La Clase StreamWriter está diseñada para la salida de caracteres, el
método ReadToEnd cuya objetivo es leer un archivo desde la posición archivo de escritura puede ser asignado utilizando la función
actual hasta el final. File.CreateText(path), donde path especifica la ubicación del archivo, así
Para hacer uso de la esta clase es necesario incluir la biblioteca de como el archivo de salida:
Clase System.IO al principio del código del formulario. Si el archivo especificado no existe
Imports System.IO Si el archivo existe su contenido es sobreescrito
Public Class Form1 Una vez que el writer tiene asignado un archivo abierto, una serie de
. métodos writer pueden ser invocados para escribir información al
. archivo:
. Stream = Flujo
Dim sr As StreamReader Buffer = espacio de memoria diseñada para el almacenamiento temporal
sr = New StreamReader("c:Test.txt") de datos
txtOut.Text = sr.ReadToEnd Método Descripción
sr.Close()
Close Cierra el actual StreamWriter y el stream subyacente
Limpia el buffer para el actual writer y provoca que
La Clase StreamReader está diseñada para la entrada de caracteres, el Flush cualquier dato contenido en el buffer sea escrito al
archivo a ser leido puede ser abierto utilizando la función stream subyacente
File.OpenText(path), donde path especifica la ubicación del archivo, así
Write Escribe al stream
como el archivo de entrada.
Escribe datos tal y como son especificados por los
Una vez que el reader (lector) tiene asignado un archivo abierto una WriteLin
parámetros sobrecargados, seguidos de una línea de
serie de métodos stream reader (flujo de lectura) pueden ser invocados e
terminación.
para leer la información del archivo:
Creación de controles en tiempo de ejecución
Stream = Flujo
En Visual Basic .NET, es posible agregar controles en tiempo de
Buffer = espacio de memoria diseñada para el almacenamiento temporal
ejecución, siguiendo una sintaxis similar a esta:
de datos
Dim btnOK As New Button
Método Descripción
btnOK.Text = "OK"
Cierra el StreamReader y libera cualquier recurso del btnOK.Location = New Point(312, 150)
Close
sistema asociado al reader Me.Controls.Add(btnOK)
Peek Regresa el próximo caracter disponible pero no lo consume.
Lee el próximo caracter o próximo conjunto de caracteres de Tenga cuidado de que sus controles al momento de agregarlos no
Read
la entrada stream queden debajo de otros controles ocultandolos ante la mirada del
Lee una cantidad máxima de caracteres del stream actual y usuario.
ReadBlock
escribe los datos al buffer
Existen nuevas propiedades para los controles que hacen posible Las propiedades DragIcon y DragMode ya no están disponibles en
manejar automáticamente su posición Dock y Anchor, por ejemplo el Visual Basic .NET aunque el evento DragDrop continua.
valor de la propiedad Dock puede ser Bottom con lo cual el control se Visual Basic .NET soporta más tipos de formato para imagenes, el
ajusta al tamaño del formulario y queda posicionado en la parte inferior espacio de nombres System.Drawing.Imaging incluye funciones que
de la pantalla: trabajan con los formatos siguientes:
btnDock.Dock = DockStyle.Bottom BMP
EMF
Otros posibles valores son: EXIF
DockStyle.Top GIF
DockStyle.Fill Icon
DockStyle.Left JPEG
DockStyle.Right MemoryBMP
DockStyle.None, para anular el funcionamiento de los PNG
valores anteriores TIFF
Establecer el objeto de inicio WMF
También en Visual Basic .NET es posible establecer el punto de inicio de A través de la utilización de funciones GDI+ del espacio de nombres
la aplicación, ya que puede contener múltiples formularios es necesario System.Drawing que es una nueva API (Interfaz de Programación de
especificar con cual iniciara la aplicación o también puede contar con Aplicaiones) será posible crear gráficos.
múltiples procedimientos por lo que también podrá definir uno de ellos Sistema de Coordenadas
como punto de partida. El punto de origen del sistema de coordenas es la esquina superior
Para configurar el punto de inicio seleccione Project/Properties y izquierda del formulario. El sistema de coordenadas predeterminado se
especique el objeto de inicio (Startup object) que puede ser un formulario conforma de renglones (Eje Horizontal X) y columnas (Eje Vertical Y),
o procedimiento. de elementos de imagen independientes del dispositivo (píxeles) los
Si requiere de una aplicación Visual Basic .NET sin interfaz gráfica, es cuales representan los puntos más pequeños que un formulario puede
posible crear una aplicación consola la cual procesa datos de entrada y ubicar.
genera salidas mediante una consola de línea de comandos. Las coordenas (x,y) de la esquina superior izquierda de un formulario
Gráficos son siempre (0,0).
En Visual Basic .NET no existen los controles de dibujo pues la novedad Visual Basic .NET trabaja en conjunto con el controlador de vídeo de la
será emplear los servicios de gráficos GDI+ a través del espacio de máquina para calcular como se deben presentar los píxeles del
nombres System.Drawing formulario y como deben aparecer en la pantalla figuras como líneas,
Instrucciones como Circle, Line y PSet, son sustituidas por los métodos rectangulos, curvas y círculos.
DrawEllipse, DrawLine y la estructura Point de la clase Clase System.Drawing.Graphics
System.Drwaing.Graphics. El espacio de nombres System.Drawing contiene diversas clases con las
El sistemas de coordenas predeterminado de Visual Basic .NET utiliza que es posible crear dibujos en un programa. Esta clase dispone de
píxeles en lugar de Twips métodos y propiedades para dibujar figuras en un formulario.
En Visual Basic .NET los controles no tienen un método Move, pero es A continuación se presenta una lista de figuras geométricas básicas y el
posible desplazarlos rápidamente al actualizar las propiedades Left, Top método que emplea la clase System.Drawing.Graphics para crearlas:
o Location de los controles o también utilizando el método SetBounds. Figura Método Descripción
Línea DrawLine Línea sencilla entre dos puntos
DrawRectangl Cuadrado o Rectángulo dado por cuatro Para evitar que la figura desaparezca es necesario utilizar el evento
Rectángulo Paint del formulario, para que cada vez que se refresque el formulario el
e puntos
Arco DrawArc Línea curva entre dos puntos gráfico también se dibujo de nuevo.
Private Sub Form1_Paint(ByVal sender As Object,
Círculo/Elipse DrawEllipse Figura elíptica contenida en un ractángulo
ByVal e As System.Windows.Forms.PaintEventArgs) _
Figura compleja con un número de puntos
Polígono DrawPolygon Handles MyBase.Paint
y lados variable
Dim Grafico As System.Drawing.Graphics
Línea curva que pasa por un número Dim Lapiz As New
Curva Drawcurve
variable de puntos System.Drawing.Pen(System.Drawing.Color.Blue)
Bézier Curva dibujada utilizando cuatro puntos Grafico = Me.CreateGraphics
DrawBezier
splines (puntos 2 y 3 son puntos de control) Grafico.DrawLine(Lapiz, 20, 30, 100, 80)
Los métodos mencionados en la tabla crean figuras vacías, pero existen End Sub
métodos con el prefijo Fill que dibujan figuras que rellenan
automáticamente con un color. Animación : Top - Left - Location - SetBounds
Para hacer uso de la clase System.Drawing.Graphics es necesario crear La animación es la simulación de movimiento generado por la
un objeto de tipo Graphics, un objeto Pen o Brush para indicar los visualización rápida de series de imágenes correlativas en la pantalla.
atributos de la figura, el objeto Pen se utiliza como argumento de los Visual Basic .NET no incluye el método Move (el cual permitia mover
métodos cuando no se rellena con color. El objeto Brush se utiliza como objetos en el sistema de coordenadas) pero es posible utilizar:
argumento cuando se requiere un color de relleno. Left, propiedad que mueve un objeto horizontalmente
También será necesario generar una instancia de la variable Graphics Top, propiedad que mueve un objeto verticalmente
mediante el método CreateGraphics para Windows Form. Location, propiedad que mueve un objeto a una posición
El espacio de nombres System.Drawing.Graphics se incluye en el especifico
proyecto de manera automática por lo que no es necesario importarla. SetBounds, método que define los límites de un objeto a
Dim Grafico As System.Drawing.Graphics una posición y tamaño especificos
Dim Lapiz As New Private Sub btnIzq_Click(ByVal sender As System.Object, ByVal e As
System.Drawing.Pen(System.Drawing.Color.Blue) System.EventArgs) _
Grafico = Me.CreateGraphics Handles btnIzq.Click
Grafico.DrawLine(Lapiz, 20, 30, 100, 80) btn.Left -= 10
End Sub
Este código si lo incluye en el evento Load del formulario dara la
sensación de no hacer nada, esto es por un efecto que se produce con Private Sub btnDer_Click(ByVal sender As System.Object, ByVal e As
los gráficos, la solución es agregar el código en el método Paint del System.EventArgs) _
formulario. Handles btnDer.Click
Evento Paint btn.Left += 10
Al dibujar una figura, esta será visible mientras: End Sub
Otro control o figura no se sobreponga Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As
Si se minimiza y maximiza la ventana del formulario System.EventArgs) _
Handles btnUp.Click
btn.Top -= 10
End Sub La programación orientada a objetos es un excelente ejemplo de un
mejoramiento creciente. Los objetos son piezas modulares con
Private Sub btnDw_Click(ByVal sender As System.Object, ByVal e As interfaces bien definidas que explican el uso apropiado de los objetos.
System.EventArgs) _ Los objetos emplean encapsulación para prevenir accesos impropios a la
Handles btnDw.Click estructura interna de un objeto. Los objetos soportan herencia para
btn.Top += 10 perfeccionar el código reutilizado y diseño lógico.
End Sub Clases y Objetos
Private Sub btnMove_Click(ByVal sender As System.Object, ByVal e Un Objeto es una combinación de datos y acciones que pueden ser
As System.EventArgs) _ tratados como unidad.
Handles btnMove.Click Una Clase es una estructura de un objeto, un diseño que describe las
Dim newPos As New Point(100, 100) propiedades (datos) y métodos (acciones) de un objeto.
If btn.Top = 32 And btn.Left = 104 Then Encapsulación
btn.Location = newPos Encapsulación, referente a un grupo de propiedades y métodos que
Else pueden ser tratados como una unidad u objeto, además de proteger el
btn.Top = 32 contenido interno de un objeto a través de una averia o referencia
btn.Left = 104 incorrecta por código externo. Con la apropiada encapsulación un objeto
End If es solamente referenciado a través de una interfaz formal evitando
End Sub efectos laterales, es decir, referencias inesperadas y cambios
Private Sub btnSize_Click(ByVal sender As System.Object, ByVal e As indeseables que ocurran en adición a el comportamiento intencionado.
System.EventArgs) _ Una de las reglas básicas de la encapsulación es que los datos de las
Handles btnSize.Click clases deberían ser modificados o recuperados sólo a través de
If btn.Width = 75 And btn.Height = 23 Then procedimientos apropiados, limitando interactuar al objeto con código
btn.SetBounds(btn.Left, btn.Top, btn.Width + 10, btn.Height + 10) externo y manteniendo las operaciones internas del objeto invisibles
Else hacia el mundo exterior, de esta manera el contenido interno del objeto
btn.SetBounds(btn.Left, btn.Top, 75, 23) es protegido de daños accidentales o intencionados por código externo.
End If La encapsulación también permite controlar como los datos y
End Sub procedimientos son utilizados, para ello se pueden utilizar los
modificadores Private o Protected para evitar que un procedimiento
Opacidad en Formularios externo ejecute un método de clase o evitar la lectura y modificación de
La novedad gráfica en los formularios para Visual Basic .NET es la datos en las propiedades y campos.
propiedad Opacity a través de la cual puede hacer un efecto de Data hiding es una técnica en la cual se declaran detalles internos de
transparencia en sus formularios. una clase como Private para prevenirlos de ser utilizados fuera de la
Tenga en cuenta que el valor de la opacidad está en el rango del 0 al 1. clase.
Me.Opacity -= 0.1 Herencia
Programación Orientada a Objetos La Herencia describe la habilidad para crear una nueva clase basada en
Se considerada un lenguaje orientado a objetos si soporta las la existencia de una clase existente, donde esta clase existente recibe el
siguientes tres características Encapsulación, Herencia y nombre de Clase Base y la nueva clase derivada de la clase base es
Polimorfismo. llamada Clase Derivada. La clase derivada hereda las propiedades,
métodos y eventos de la clase base y puede ser personalizada propiedad es una programación constructora que tipicamente provee la
agregando nuevas propiedades y métodos. interfaz para un campo en una clase, una propiedad contiene
Visual Basic .NET agrega el mecanismo de Herencia, que en versiones procedimientos especiales Get y Set que permiten al código externo
anteriores del Lenguaje no la incluia, solo incorporaba ciertas hacer referencia al campo en un sentido que mantiene la encapsulación
características de la programación orientada a objetos. de datos, un método es una función o procedimiento dentro de una
La Herencia es un mecanismo por medio del cual una Clase puede clase. La definición de la clase puede también contener métodos
adquirir las características de comportamiento e interfaz de otra Clase. constructores que son invocados cuando un nuevo objeto es instanciado
En Visual Basic .NET las clases se definen utilizando la siguiente desde una clase. Es conveniente listar primero los campos, después las
sintaxis: propiedades y los métodos constructores y por último cualquier otro
Public Class método adicional.
. Private|Public Class nombreClase
. campos
. propiedades
End Class constructores
métodos
Las propiedades de las clases cambian de sintaxis y ya no se utiliza End Class
Property Get, Let y Set.
Para que una Clase herede la interfaz y comportamiento de otra Clase En Visual Basic .NET para agregar una Clase seleccione: Project/Add
existente se utiliza la palabra clave reservada Inherits. Class y escriba un nombre para la Clase.
Polimorfismo Escriba las variables para su clase:
El Polimorfismo es la habilidad de los objetos de diferentes clases para Public Class Persona
responder apropiadamente a nombres u operadores de métodos Private sNombre As String
identicos, el polimorfismo permite utilizar nombres compartidos y el Private nEdad As Integer
sistema podría aplicar el código apropiado para un objeto particular. Private bSexo As Boolean
Agregar una Clase End Class
La definición de una clase consiste de campos, propiedades y métodos,
un campo es una variable en la clase y usualmente es privada, una A continuación escriba las funciones para sus operaciones, escriba el
propiedad es una programación constructora que tipicamente provee la nombre de la propiedad y su tipo, presione Enter y de manera
interfaz para un campo en una clase, una propiedad contiene automática se agrega el código de la propiedad el cual es necesario
procedimientos especiales Get y Set que permiten al código externo completar:
hacer referencia al campo en un sentido que mantiene la encapsulación Public Class Persona
de datos, un método es una función o procedimiento dentro de una Private sNombre As String
clase. La definición de la clase puede también contener métodos Private nEdad As Integer
constructores que son invocados cuando un nuevo objeto es instanciado Private bSexo As Boolean
desde una clase. Es conveniente listar primero los campos, después las Public Property Nombre() As String
propiedades y los métodos constructores y por último cualquier otro Get
método adicional. Return sNombre
La definición de una clase consiste de campos, propiedades y métodos, End Get
un campo es una variable en la clase y usualmente es privada, una Set(ByVal Value As String)
sNombre = Value End Get
End Set Set(ByVal Value As Boolean)
End Property bsexo = Value
End Class End Set
End Property
Si necesita agregar un método a su clase, entonces escriba su Public Sub sexoPersona()
procedimiento: If bSexo Then
Public Sub sexoPersona() MsgBox("Hombre")
If bSexo Then Else
MsgBox("Hombre") MsgBox("Mujer")
Else End If
MsgBox("Mujer") End Sub
End If End Class
End Sub
Interfaz de la Clase Persona:
Ejemplo de la Clase Persona: Dim Empleado As New Persona
Public Class Persona Empleado.Nombre = txtNombre.Text
Private sNombre As String Empleado.edad = CInt(txtEdad.Text)
Private nEdad As Integer Empleado.sexo = txtSexo.Text
Private bSexo As Boolean Empleado.sexoPersona()
Public Property Nombre() As String
Get Como puede notar las declaraciones de obtención y asignación de
Return sNombre valores para las propiedades coinciden no en nombre ya que puede
End Get declarar la primer parte de las propiedades con un nombre y con otro la
Set(ByVal Value As String) declaración de la propiedad por completo, es decir, la parte donde se
sNombre = Value asigna y recupera el valor, la única relación existente es por el valor que
End Set se asigna o por el valor que se regresa.
End Property Atención es posible crear más de una Clase dentro de un módulo de
Public Property edad() As Integer Clase siempre y cuando las clases se encuentren delimitadas por las
Get intrucciones de inicio (Public Class) y final (End Class) de la Clase.
Return nEdad Así que, si desea crear una Clase que herede de la Clase Persona
End Get puede incluir en el mismo módulo de Clase Persona, la Clase que
Set(ByVal Value As Integer) hereda, por ejemplo Director y escribir dentro del bloque de la clase la
nEdad = Value declaración que indica que hereda el comportamiento y propiedades de
End Set otra Clase a través de la palabra reservada Inherits.
End Property Debajo del código de la Clase Persona escriba:
Public Property sexo() As Boolean Public Class Director
Get Inherits Persona
Return bsexo Private sArea As String
Public Property Area() As String El procedimiento de propiedad Set tipicamente asigna un nuevo valor al
Get campo privado.
Return sArea Para que un código externo pueda ver el valor de un campo pero no
End Get pueda cambiar su valor es necesario que el campo sea sólo de lectura,
Set(ByVal Value As String) lo cual es posible antecediendo al nombre del procedimiento de
sArea = Value propiedad la palabra reservada ReadOnly, entonces VB.NET podría
End Set omitir el bloque Set/End Set porque es innecesario.
End Property [ReadOnly] property nombrePropiedad as tipoDato
End Class Get
return nombreCampo
En su interfaz agregue: End Get
Dim DirectorRegional As New Director [Set(ByVal valor as tipoDato)
DirectorRegional.Area = "Finanzas" nombreCampo = valor
MsgBox(DirectorRegional.Area) End Set]
Campos
Los campos proveen almacenamiento para los datos en un objeto y son Métodos
tratados como variables, usualmente son privados, existen dos diseños Los métodos son procedimientos definidos dentro de la clase. Los
para los campos: procedimientos tienen acceso a todos los datos dentro del objeto incluso
Si los campos son declarados Private se hacen visibles si son privados.
sólo para los métodos dentro de la clase, lo cual [Private|Public] Sub nombreMetodo([parámetros])
incrementa el ocultamiento de los datos (data hiding) y sentencias
minimiza la posibilidad de efectos laterales (side effects) End Sub
Consiste en una convención en el nombre de los campos, [Private|Public] Function nombreMetodo([parámetros]) as
si estos comienzan con la letra F mayúscula será un tipoDato
indicador claro de que un campo-objeto comienza a sentencias
referenciarse. End Function
Propiedades
Los campos privados de una clase no pueden ser accesados por código Constructores
externo, por lo que si es requerido que los campos sean leidos o Un Constructor es un método especial que se ejecuta durante la
cambiados, para ello será necesario incluir procedimientos de creación de un objeto. Todos los métodos constructores son
propiedades (property procedures) en la definición de la clase. procedimientos llamados New. Una clase puede tener cero, uno o más
Los procedimientos de propiedades dan el control de clase sobre como métodos constructores.
los campos son asignados o regresados. El nombre del procedimiento Si una clase tiene más de un método constructor lo que distingue un
de propiedad es hecho visible al código externo. método constructor de otro es el tipo de dato y número de parámetros
El procedimiento de propiedad Get tipicamente recupera un campo que lo define.
privado. Sub New([parámetros])
sentencias
End Sub Public Class Form1
.
Cuando se define a una clase derivada de otra clase, la primer línea de .
un constructor es tipicamente una invocación al constructor de la clase .
base. Una clase base es referenciada utilizando la palabra reservada
MyBase. Agregue un control PrintDocument (no es visible en su formulario, pero si
Sub New([parámetros]) debajo de este)
MyBase.New([parámetros]) Escriba el código del manejador:
End Sub Private Sub imprimirImagen(ByVal sender As System.Object,
ByVal ePrint As PrintPageEventArgs)
Impresión ePrint.Graphics.DrawImage(Image.FromFile("c:relog.ico")
Si requiere imprimir, Visual Basic .NET utiliza como mecanismo la Clase , ePrint.Graphics.VisibleClipBounds)
PrintDocument (agregando el control al formulario o a través de código), ePrint.HasMorePages = False
en vez de hacerlo con el objeto Printer como se hace en Visual Basic 6. End Sub
Para la interfaz de impresión es posible utilizar los controles de cuadros
de diálogo como PrintDialog, PrintPreviewDialog y pageSetupDialog Agregue un botón (utilicelo como requiera)
Si requiere imprimir varias páginas deberá crear un manejador de Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e
eventos PrintPage que imprima un documento página a página. As System.EventArgs) _
La Clase PrintDocument dispone de objetos como PrinterSettings que Handles btnPrint.Click
define la impresión predeterminada para una impresora, el objeto Try
PageSettings que define la impresión predeterminada para una página o AddHandler printDoc.PrintPage, AddressOf Me.imprimirImagen
el objeto PrintPageEventArgs, que define la información de eventos de la printDoc.Print()
página a imprimir. Catch ex As Exception
El espacio de nombres System.Drawing.Printing contiene la clase MsgBox("Ex : " & ex.ToString)
PrintDocument, al agregar un control PrintDocument a un formulario, End Try
algunos objetos se agregan de manera automática al proyecto, pero será End Sub
necesario importar al principio del formulario:
Imports System.Drawing.Printing Impresión de un texto
Cuando es invocado el método PrintDocument, el evento PrintPage es A diferencia del ejercicio anterior, conoceremos como imprimir un texto,
invocado para cada página que se imprima. El método sin agregar un control PrintDocument, pero si agregando en su lugar
Graphics.MeasureString cuantifica el tamaño del string y determina el código y también en vez de un manejador de evento, utilizaremos un
número de caracteres adecuado y líneas para el string especificado, procedimiento:
fuente, tamaño máximo y formato. El método Graphics.PrintString dibuja Importar la clase:
el string utilizando font, brush, destination point y format. La propiedad Imports System.Drawing.Printing
HasMorePages indica cuando una página adicional debería ser impresa. Escribir en lugar del manejador de evento un procedimiento:
Impresión de un gráfico Private Sub ImprimirTexto(ByVal sender As System.Object, ByVal
Importe la Clase System.Drawing.Printing al inicio del formulario: ePrint As PrintPageEventArgs)
Imports System.Drawing.Printing
ePrint.Graphics.DrawString(txt.Text, New Font("Arial", 11,
FontStyle.Regular), _ Debajo del código generado automáticamente por Visual Basic .NET
Brushes.Black, 100, 100) (Windows Form Designer generated code) escriba
ePrint.HasMorePages = False Private OptPrnPage As New PageSettings
End Sub Private StrToPrn As String
Private FontPrn As New Font("Arial", 12)
En lugar de agregar un control PrintDocument, lo haremos via código:
Dim prnTxt As New PrintDocument Agregar un control OpenFileDialog
Agregar una caja de texto Agregar un control de texto enriquecido
Agregar un botón, para imprimir el contenido de la caja de texto, en el Agregar un botón para abrir un archivo de texto y en el evento clic
evento clic del botón, escribir: escribir
Private Sub bntPrnTxt_Click(ByVal sender As System.Object, ByVal e Private Sub btnOpenFile_Click(ByVal sender As System.Object, ByVal
As System.EventArgs) _ e As System.EventArgs) _
Handles bntPrnTxt.Click Handles btnOpenFile.Click
Try OFD.Filter = "txt|*.txt"
Dim prnTxt As New PrintDocument OFD.ShowDialog()
AddHandler prnTxt.PrintPage, AddressOf Me.ImprimirTexto If OFD.FileName <> vbNullString Then
prnTxt.Print() Try
Catch ex As Exception Dim FS As New FileStream(OFD.FileName, FileMode.Open)
MsgBox("Ex : " & ex.ToString) RTB.LoadFile(FS, RichTextBoxStreamType.PlainText)
End Try FS.Close()
End Sub StrToPrn = RTB.Text
Catch ex As Exception
Importante, tenga en cuenta las limitaciones que se tienen, pues no se MsgBox("Ex : " & ex.ToString)
permite imprimir texto que sobrepase el margen derecho del papel, End Try
tampoco se ajustan automáticamente las líneas cuando se alcanza el End If
borde del papel, por ejemplo si imprime un archivo que no tiene retornos End Sub
de carro al final de las líneas será necesario escribir código que lo
controle. Tampoco es posible imprimir más de una página de texto, pues Agregar un control PrintDialog
lo que sobrepase una página se ignora, por lo tanto no se imprime. Agregue un botón para mandar imprimir el archivo y en el evento clic
Para controlar la impresión de varias páginas es necesario crear una escriba
página virtual, para ello utilice el evento PrintPage o el método Private Sub btnPrnFile_Click(ByVal sender As System.Object, ByVal e
Graphics.MeasureString. As System.EventArgs) _
Impresión de un archivo Handles btnPrnFile.Click
Importar clases Try
Imports System.IO prnFile.DefaultPageSettings = OptPrnPage
Imports System.Drawing.Printing StrToPrn = RTB.Text
PD.Document = prnFile End Sub
Dim DR As DialogResult = PD.ShowDialog
If DR = DR.OK Then Bases de Datos
prnFile.Print() Comenzamos con la novedad de que el nuevo estándar de Microsoft
End If para trabajar con Bases de Datos es ADO.NET (Modelo de datos
Catch ex As Exception estándar para todos los programas en Microsoft Visual Studio .NET) el
MsgBox("Ex : " & ex.ToString) cual se basa en una nueva tecnología de acceso a datos de Microsoft
End Try llamada ADO+, este nuevo estándar sustituye a RDO y ADO.
End Sub Desaparecen los controles Data y ADO Data
Anteriormente una base de datos se representaba en un programa como
Dé doble clic para agregar al control PrnFile (PrintDocument1) el código un objeto recordset, ahora será el objeto dataset que es una imagen no
del evento clic relacionada de la tabla de la base de datos a la que se accede.
Private Sub PrnFile_PrintPage(ByVal sender As System.Object, ByVal El formato interno de ADO.NET es XML (Extensible Markup Language)
e As _ el cual se diseño para el intercambio de datos estructurado a través de
System.Drawing.Printing.PrintPageEventArgs) Handles Internet y otros contextos.
PrnFile.PrintPage ADO.NET ofrece acceso a un mayor de formatos de base de datos y fué
Dim nChars As Integer diseñado para su utilización en Internet.
Dim nLines As Integer Visual Studio y ADO.NET incluyen las herramientas necesarias para
Dim sPage As String acceder al formato de archivos Access (y otros formatos), por lo que no
Dim sFormat As New StringFormat es necesario tenerlo instalado.
Dim rectAng As New RectangleF(e.MarginBounds.Left, ADO.NET
e.MarginBounds.Top, _ ADO.NET es la arquitectura de acceso a datos para .NET Framework y
e.MarginBounds.Width, e.MarginBounds.Height) provee los objetos Connection, DataAdapter, y DataSet para facilitar el
Dim MySize As New SizeF(e.MarginBounds.Width, acceso a datos en una base de datos.
e.MarginBounds.Height - ADO.NET
FontPrn.GetHeight(e.Graphics)) Base de Datos (archivo .mdb)
sFormat.Trimming = StringTrimming.Word
Connection (OleDbConnection)
e.Graphics.MeasureString(StrToPrn, FontPrn, MySize, sFormat,
DataAdapter
nChars, nLines)
StrToPrn = StrToPrn.Substring(0, nChars) DataSet
e.Graphics.DrawString(sPage, FontPrn, Brushes.Black, rectAng, Conexión
sFormat) Un objeto Connection establece una liga de la aplicación al archivo de
If nChars < StrToPrn.Length Then base de datos, también especifica el tipo y ubicación del archivo de base
StrToPrn = StrToPrn.Substring(nChars) de datos.
e.HasMorePages = True Para establecer una conexión a una base de datos seleccione
Else View/Server Explorer
e.HasMorePages = False El Explorador de Servidores es una herramienta gráfica a través de la
StrToPrn = RTB.Text cual es posible establecer conexiones a fuentes de datos basadas en
End If
Internet, Cliente/Servidor o Locales, así como también es posible Otra manera de crear un adaptador de datos es seleccionar la sección
examinar la estructura de las tablas de una base de datos. Data de la caja de herramientas y agregar un control DataAdapter y un
Para realizar una conexión haga clic en el botón Connect to database y DataSet.
configure la conexión. Por ejemplo si trabaja con Access entonces Creación de un Adaptador de Datos
seleccione como proveedor Microsoft Jet 4.0 OLE DB, el cual es un Una vez que se establece la conexión, el siguiente paso es crear un
componente diseñado para conectarse a bases de datos de Microsoft DataAdapter (Adaptador de datos). Un DataAdapter realiza el trabajo de
Access. pasar la información entre la base de datos y la aplicación. Un comando
De clic en el botón Probar Conexión SQL es parte de un DataAdapter.
Si la conexión fue satisfactoria entonces podra navegar a través del ¿Por qué si ya se establecio la conexión, se requiere de un Adaptador de
Explorador de Servidores sobre los objetos de la base de datos. Datos?, porque el Adaptador de Datos trabaja como un lenguaje
Creación de una Conexión intérprete ya que la base de datos almacena datos es un sentido que la
El primer paso para la creación de un objeto Connection es agregar un aplicación no podría entender así como la aplicación almacena datos en
control OleDbConnection a la forma, el cual no es visible dentro de la el sentido de que la base de datos no podría entender, también contiene
forma pero si esta contenido en la bandeja de componentes. Este control SQL que especifica que información se accesa a través de la conexión.
esta contenido en el grupo Data de la caja de herramientas. El Adaptador de Datos entiende ambos formatos de datos y los traduce
El segundo paso es seleccionar el control y establacer su propiedad apropiadamente para que los reciba la aplicación.
ConnectionString seleccionando New Connection, entonces se De clic al grupo Data de la caja de herramientas y Agregue un control
despliega la ventana Data Link Properties (Propiedades de Vínculo de OleDbDataAdapter, de manera automática inicia el Asistente de
Datos), el proveedor de base de datos a seleccionar depende del tipo de configuración del Adaptador de Datos, al dar clic en siguiente la segunda
base de datos a la cual se está conectado, por ejemplo para Access ventana del Asistente requiere que se especifique la conexión a utilizar
2000 o Access XP se selecciona el proveedor Jet 4.0 OLE DB Provider. para este Adaptador de Datos, al dar clic en siguiente aparece la tercer
Después de seleccionar el proveedor de base de datos se especifica la ventana del Asistente donde es posible seleccionar el tipo de consulta
ubicación del archivo de base de datos, y si es requerido un login y que se hará a la base de datos, pero como se esta utilizando un control
contraseña se proporcionan para poder probar la conexión dando clic en OleDbDataAdapter la única opción es utilizar Use SQL statements
Probar Conexión, si la conexión fue satisfactoria entonces es posible (sentencias SQL). Si la base de datos de la aplicación fuera Microsoft
utilizar el objeto Connection para enviar y recibir datos entre la aplicación SQLServer entonces se utilizaria un control SQLDataAdapter el cual
y la base de datos. también permite trabajar con procedimientos almacenados, al dar clic en
Los formatos de datos son diferentes entre los dos programas, por lo que siguiente se presenta la cuarta ventana del Asistente donde será
la trasferencia de datos podría requerir un DataAdapter. necesario escribir una consulta SQL, donde es posible utilizar el
Adaptador de Datos - dataAdapter Constructor de consultas o las Opciones avanzadas, al dar clic en
Una vez que se ha establecido la conexión con la base de datos es siguiente aparece la última ventana del Asistente donde se notifica el
necesario crear un Adaptador de Datos el cual permitira extraer resultado de la configuración.
información específica de la base de datos además de servir como base El Asistente crea un Adaptador de Datos con un nombre por default,
al objeto dataset el cual es una representación de los datos que se probablemente OleDbDataAdapter1, es posible seleccionar el control
manipularan en la aplicación. DataAdapter y cambiar el nombre a través de la propiedad Name.
Para crear un adaptador de datos simplemente arrastre desde el DataSet
Explorador de Servidores el icono gráfico de una tabla hasta el diseñador Una vez creado el adaptador de datos es necesario crear un objeto que
de Windows Forms, con lo cual se crean los objetos Adaptador de represente los datos a utilizar en la aplicación, este objeto recibe el
Datos y Conector de Datos en la bandeja de componentes.
nombre de DataSet y constituye una representación de los datos Un Control Enlazado es aquel que esta vínculado con la fuente de
proporcionados por la conexión y extraidos por el adaptador. datos cuando sus propiedades DataBindings pueden ser seleccionados
Un conjunto de datos puede contener información de una o varias tablas campos válidos del conjunto de datos. Entre los controles enlazados se
de la base de datos, resultado quizá de una instrucción SQL. encuentran TextBox, ComboBox, ListBox, ChackBox, RadioButton,
A diferencia de un RecordSet los DataSet solamente representan los DataGrid y PictureBox.
datos de la base de datos. Cuando se modifica un DataSet no se Agregue una caja de texto y en su sección DataBindings, en la propiedad
modifican las tablas de la base de datos original ya que la modificación Text seleccione un campor de la base de datos.
no se produce mientras no se envíe un comando que escriba los datos Agregue un botón y en el evento clic agregue:
en la base de datos original. Ds.Clear() 'nombre del control en la bandeja de componentes
Seleccione Data/Generate Dataset asigne un nombre al conjunto de Adapter.Fill(Ds) 'nombre del control en la bandeja de
datos y agreguelo al diseñador componentes
Este DataSet o Conjunto de Datos aparece en la bandeja de
componentes y además Visual Studio agrega un archivo llamado El método Fill deberá cargar manualmente el adaptador y enlaza la caja
NombreDataSet.xsd al explorador de soluciones el cual representa el de texto con la información del conjunto de datos.
esquema de la base de datos en XML y describe las tablas, campos, Método Fill
tipos de datos, etc. Una vez que se utiliza y liga un control data-aware o enlazado, no
Generación de un Dataset despiegan información porque el Dataset inicialmente está vacío. El
Una vez que se establece la Conexión y se crea un Adaptador de Datos, método Fill del objeto DataAdapter es utilizado para cargar el Dataset.
el siguiente paso es crear un Dataset. Un Dataset es una copia local DataAdapter.Fill(Dataset)
temporal de la información en la tabla. ADO.NET soporta usos más Navegación de un Dataset
avanzados que incluyen múltiples Datasets con múltiples tablas. Cuando se utiliza un control data-aware se víncula o asocia su propiedad
Para crear un Dataset, seleccione el Objeto Adaptador de Datos creado, Databindings con un campo de una tabla de la base de datos y de está
de clic al botón derecho del mouse y seleccione Generate Dataset del manera despliega el valor contenido en dicho campo en base al registro
menú emergente, aparece entonces un cuadro de dialogo para Generar actual en el Dataset especificado. Al cambiar la posición del registro
el Dataset, donde se especifica que se está creando un nuevo Dataset, actual por consiguiente cambia el dato desplegado en el control data-
puede utilizar como prefijo Ds para el nombre del Dataset. aware empleado.
Finalmente es probable que en este punto en su aplicación existan 3 Cada formulario tiene un objeto BindingContext que mantiene el rastro
componentes en la bandeja: Connection, DataAdapter y Dataset. Donde de todos los recursos de datos asociados con la forma. Para referirse a
la Conexión es una tuberia entre la aplicación y la base de datos, el una tabla dentro del Dataset utilice:
Adaptador de Datos es un intérprete entre la aplicación y la base de BindingContext(Dataset, "NombreTabla")
datos y el Dataset es la traducción de una copia local de los datos en la El objeto BindingContext tiene una propiedad Position que indica el
base de datos, ya que los datos en el Dataset son traducidos quizá registro actual y una propiedad Count que indica el Total de registros en
ahora pueden ser accesados por la aplicación. el Dataset. El primer registro tiene la posición 0, por lo que el último
Data-aware registro tiene la posición 1 menos el valor de Count.
Un control data-ware o Control Enlazado es un control que puede ser Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
ligado o vínculado a un Dataset, cuando el control es ligado System.EventArgs) _
automáticamente despliega la información que recibe del Dataset. Los Handles MyBase.Load
controles data-ware tienen una propiedad DataBound. DaContratos.Fill(DsContratos1)
Controles Enlazados
BindingContext(DsContratos1, BindingContext(DsContratos1,
"TDetDato_Serv_Param_Asoc").Position = 0 "TDetDato_Serv_Param_Asoc").Position = 0
LblCount.Text = BindingContext(DsContratos1, InfoReg()
"TDetDato_Serv_Param_Asoc").Count - 1 End Sub
InfoReg() Private Sub BtnLast_Click(ByVal sender As System.Object, ByVal e
End Sub As System.EventArgs) _
Private Sub BtnPrev_Click(ByVal sender As System.Object, ByVal e Handles BtnLast.Click
As System.EventArgs) _ BindingContext(DsContratos1,
Handles BtnPrev.Click "TDetDato_Serv_Param_Asoc").Position = _
If BindingContext(DsContratos1, BindingContext(DsContratos1,
"TDetDato_Serv_Param_Asoc").Position = 0 Then "TDetDato_Serv_Param_Asoc").Count - 1
MsgBox("Primer Registro") InfoReg()
Else End Sub
BindingContext(DsContratos1,
"TDetDato_Serv_Param_Asoc").Position -= 1 Manipulación de la Base de Datos
InfoReg() Una vez que se establece la conexión y se relacionan los datos con un
End If control que los visualice, es necesario crear controles a través de los
End Sub cuales se manipulen los datos obtenidos.
Private Sub BtnNext_Click(ByVal sender As System.Object, ByVal e Al momento de cargar los datos el control utilizado para visualizar los
As System.EventArgs) _ datos apunta al primer registro, pero ¿Que hay si se requiere ver un
Handles BtnNext.Click registro especifico o si se desea avanzar hacia el siguiente o retroceder
If BindingContext(DsContratos1, al anterior?.
"TDetDato_Serv_Param_Asoc").Position = _ ADO.NET almacena la información del registro actual y el número total
BindingContext(DsContratos1, de registros a través del objeto CurrencyManager que tiene cada
"TDetDato_Serv_Param_Asoc").Count - 1 Then conjunto de datos (DataSet) y cada Windows Form tiene un objeto
MsgBox("Último Registro") BindingContext que se encarga de almacenar la información de todos los
Else objetos CurrencyManager del formulario.
BindingContext(DsContratos1, Para desplazarse al primer registro utilice:
"TDetDato_Serv_Param_Asoc").Position += 1 Me.BindingContext(Ds1, "TParametro").Position = 0
InfoReg() lblPos.Text = Me.BindingContext(Ds1, "TParametro").Position
End If
End Sub
Para desplazarse al último registro utilice:
Private Sub InfoReg()
Me.BindingContext(Ds1, "TParametro").Position =
LblRegNum.Text = BindingContext(DsContratos1,
Me.BindingContext(Ds1, "TParametro").Count - 1
"TDetDato_Serv_Param_Asoc").Position
lblPos.Text = Me.BindingContext(Ds1, "TParametro").Position
End Sub
Private Sub BtnFirst_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) _ Para desplazarse al registro anterior utilice:
Handles BtnFirst.Click If Me.BindingContext(Ds1, "TParametro").Position = 0 Then
MsgBox("Primer Registro") Si la modificación de la base de datos se desea hacer a través de un
End If control DataGrid entonces considere lo siguiente:
Me.BindingContext(Ds1, "TParametro").Position -= 1 Si la propiedad ReadOnly del control DataGrid contiene el
lblPos.Text = Me.BindingContext(Ds1, "TParametro").Position valor False es posible modificar la base de datos.
Si la propiedad ReadOnly del control DataGrid contiene el
Para desplazarse al registro siguiente utilice: valor True no es posible modificar la base de datos.
If Me.BindingContext(Ds1, "TParametro").Position = Para almacenar los cambios realizados, escriba:
Me.BindingContext(Ds1, "TParametro").Count Try
- 1 Then OleAdapter.Update(Contratos1)
MsgBox("Último Registro") Catch ex As Exception
End If MsgBox(ex.ToString)
Me.BindingContext(Ds1, "TParametro").Position += 1 End Try
lblPos.Text = Me.BindingContext(Ds1, "TParametro").Position
Tip, si cambia el valor de la propiedad BackColor del DataGrid se
Donde, "TParametro", es el nombre de la tabla a la que se accede, produce un efecto en el cual el color de fondo del primer renglón aparece
lblPos.Text controla la posición del registro actual. con el color seleccionado y el renglón siguiente aparece en blanco.
Bases de Datos y DataGrid Web
Un control DataGrid presenta información a manera de tabla (renglones La versión inicial de Visual Basic .NET incluye Internet Explorer 6. Para
y columnas). hacer uso de las funciones de Internet Explorer en una aplicación Visual
El acceso a datos es controlado por los objetos DataSet y DataAdapter Basic .NET es necesario agregar una referencia a la biblioteca de
Para víncular un control DataGrid a una base de datos, se utilizan las objetos COM Microsoft Internet Controls (SHDocVw), para ello
propiedades DataSource y DataMember. seleccione project/Add Reference.
Establezca una conexión válida El objeto Internet Explorer está contenido en la Clase InternetExplorer la
Arrastre una tabla de la base de datos al diseñador cual es miembro de la biblioteca SHDocVw.
Genere un conjunto de datos (Data/Generate Dataset) Quizá el método que utilizará con frecuencia sea Navigate el cual abre
Víncule el control DataGrid a la base de datos. un documento cuya ubicación se especifica a través de uno de sus
DataSource - DataSet.Tabla parámetros llamado URL, Flags especifica si se agregará al historial o al
Una recomendación es que al generar el conjunto de datos, escriba caché de Internet Explorer, el único parámetro obligatorio es URL los
el nombre de la base de datos demás son opcionales.
En el evento Load del Formulario, escriba: Para visualizar un documento web siga estos pasos:
Contratos1.Clear() Agregue la referencia COM Microsoft Internet Controls
OleAdapter.Fill(Contratos1) Declare un objeto de tipo SHDocVw.InternetExplorer
Cree una instancia de SHDocVw.InternetExplorer
Utilice la propiedad Visible para ocultar o hacer visible IE
Donde Contratos1 es el nombre del conjunto de datos (DataSet).
Utilice el método Navigate para mostrar un documento en el
Modificación de la base de datos con DataGrid
IE.
Un objeto DataSet (conjunto de datos) contiene una copia original de la
base de datos, si requiere modificar los datos se hará a través del objeto
Dim oIE As SHDocVw.InternetExplorer
DataAdapter para almacenar los cambios.
oIE = New SHDocVw.InternetExplorer
oIE.Visible = True Visual Studio soporta Web Forms para la creación rápida y fácil de
interfaces-usuario para aplicaciones web ASP.NET, Web Forms
oIE.Navigate("file:///C:/webSite/informatique/vbNet/default.html#web") combina la velocidad y facilidad de un entorno de Desarrollo Rápido de
Aplicaciónes (RAD, Rapid Application Development) con el poder de la
compilación de los lenguajes de programación.
Si todo marcha bien, al ejecutar su aplicación se deberá abrir el
Cada Web Form está compuesta de dos archivos:
navegador Internet Explorer y visualizará en él el documento
Página Web Forms/User Interface Form (contiene páginas
específicado.
HTML y los controles para crear la interfaz de usuario
Si requiere controlar los eventos de IE, entonces tendrá que especificarlo
.aspx)
en la declaración a través de la palabra reservada WithEvents, además
Archivo de código correspondiente/Code-Behind (Módulo
de declarar el objeto a nivel formulario:
de código que contiene el código que corresponde a la
Public WithEvents oIE As SHDocVw.InternetExplorer
página Web Forms .aspx.vb)
Ahora tendrá que sobrecargar el evento que usted desee, por ejemplo:
En Visual Studio es posible ver los archivos ASPX y VB.NET como dos
Public WithEvents oIE As SHDocVw.InternetExplorer
vistas de la misma página. El servidor web compilará ambos archivos y
Private Sub btnOpenLoad_Click(ByVal sender As System.Object,
crea una nueva clase que contiene HTML estático, controles-servidor
ByVal e As System.EventArgs) _
ASP.NET y código de la forma compilado en conjunto, la clase genera el
Handles btnOpenLoad.Click
HTML que envia al cliente cada vez que la página es requerida.
oIE = New SHDocVw.InternetExplorer
Las Web Forms (requieren de .NET Framework en el servidor para
oIE.Visible = True
ejecutarse en la máquina-servidor) son similares a Windows Forms
oIE.Navigate(txtURL.Text)
(requieren de .NET Framework para ejecutarse en la máquina-cliente)
pues ambos son event driven, es decir, que se puede responder a
End Sub
eventos que ocurren en los controles-servidor de la página HTML. Los
Private Sub oIE_DocumentComplete(ByVal pDisp As Object, ByRef
manejadores de eventos para los controles-servidor son escritos en el
URL As Object) _
código detrás de la página utilizando sintaxis VB.NET.
Handles oIE.DocumentComplete
Una aplicación Web puede contener módulos de código (.vb),
MsgBox("El documento ha sido cargado")
documentos HTML (.htm/html), información de configuración
End Sub
(Web.config) y (Global.asax), así como otros componentes.
Las aplicaciones ASP.NET contienen un archivo especial llamado
Web Forms Global.asax utilizado para establecer cualquier objeto global requerido
Web Forms es un nuevo modelo de programación para interfaces de por la aplicación web. El archivo es compilado con la primer petición a
usuario de Internet basado en ASP.NET que sustituye a WebClasses y una página de la aplicación web. Cuando este archivo es modificado, el
el Diseñador de Web Forms sustituye al Diseñador de páginas DHTML. archivo es recompilado y la aplicación web reiniciara en la próxima
El Diseñador de Web Forms es parte de Visual Studio .NET (también petición de una página.
disponible para C# .NET). Para crear una aplicación Web de ASP.NET se utilizan los controles de
Web Forms es el componente de diseño de ASP.NET (plataforma de las secciones HTML o Web Forms de la caja de herramientas.
desarrollo Web para Microsoft rediseñada a partir de cero basándose Los controles Web Forms son controles de servidor, es decir, que se
en .NET Framework), que permite crear y administrar interfaces de ejecutan y pueden ser programados en el servidor web. Los controles
usuario de Internet o páginas web. HTML son por default controles cliente, es decir, que se ejecutan en el
navegador del usuario final, aunque es posible configurar estos controles
HTML como controles de servidor dando el valor Server a su propiedad recursos de base de datos, también facilita el mantenimiento de cuentas
Runat. y fortalece la seguridad de datos.
Los Controles HTML son los controles comunes utilizados en el HTML, Capa de Presentación - Presentation Layer
los Controles Web Forms son más potentes y poseen propiedades, La Capa de Presentación se ejecuta sobre la máquina del usuario
métodos y eventos. (cliente) y provee de una interfaz de aplicación, un cliente robusto realiza
No es necesario que un usuario tenga la última versión del navegador ya procesos significativos con menos carga en la capa de aplicación, un
que Visual Studio .NET contiene la propiedad targetSchema en el objeto cliente menos robusto tipicamente involucra un navegador (browser) que
DOCUMENT para especificar una versión del navegador y soporta despliega HTML con procesos poco significativos y requiere de una
Internet Explorer 3.02, 3.0, 5.0 y Navigator 4.0, por default tiene el valor mayor carga en la capa de aplicación.
de Internet Explorer 5.0, así que el valor seleccionado afecta el código Capa de Aplicación - Application Layer
HTML generado y las funciones disponibles en Visual Studio. La Capa de Aplicación provee varios módulos y servicios que son
Si requiere crear una aplicación Web en Visual Basic .NET, cree un esenciales para la solución, incluyendo el procesamiento basado en las
proyecto Aplicación Web ASP.NET (ASP.NET Web Application), reglas de negocio. Si las reglas de negocio cambian solamente los
también requiere de Windows 2000 o Windows XP Professional, IIS, servicios en la capa de aplicación necesitan ser cambiados para
Extensiones de FrontPage 2000 y bibliotecas .NET Framework, si tiene implementar los cambios a través del sistema.
XP Home Edition no podrá crear aplicaciones Web ASP.NET La Capa de Aplicación también provee un mediador entre los
localmente, pero si podrá crearlas si accede a un Servidor Web Remoto manejadores de la capa de aplicación y la capa de datos. Los
configurado adecuadamente. requerimientos del usuario para los servicios de datos son manejados
Se recomienda instalar IIS y Extensiones Front Page antes de instalar por la capa de aplicación la cual puede reducir el número de conexiones
.NET Framework y Visual Studio .NET, si trata de instalar IIS y a la base de datos, por ejemplo todos los usuarios pueden compartir una
Extensiones Front Page después de .NET Framework deberá repararlo conexión entre la capa de aplicación y la capa de datos, antes que cada
pues .NET Framework registra las extensiones a través de IIS. usuario (cliente) requiera de una conexión de datos.
Arquitectura Tres Capas (Three-Tier) Capa de Datos - Data Layer
Aplicaciones sofisticadas que involucran bases de datos y son con La Capa de Datos es la responsable de todos los accesos a la base de
frecuencia divididas en tres capas basadas en la partición lógica de datos requeridos por la solución, esta capa comunmente provee el
servicios fundamentales: soporte para agregar, eliminar, actualizar y recuperar información de la
Capa de Presentación/Presentation Layer, navegador en la base de datos.
máquina-cliente State Management
Capa de Aplicación/Application Layer, servidor web IIS que p> HTTP es un protocolo stateless (sin estado), es decir, cada petición
contiene las páginas ASP.NET de una nueva página web es procesada sin ningún conocimiento de
Capa de Datos/Data Layer, servidor de base de datos que contiene peticiones de páginas previas.
los archivos de base de datos y servicios ADO.NET State Management (administración de estados) se refiere a las técnicas
Las aplicaciones de tres capas protegen los recursos del servidor de en las cuales los desarrolladores mantienen el estado de una aplicación
base de datos reduciendo el número de conexiones actuales a la base web a través de múltiples peticiones de páginas.
de datos. Las conexiones al servidor de base de datos se realizan por En ASP.NET existen varias opciones para que los desarrolladores
las aplicaciones del servidor en lugar de ser realizadas por las máquinas mantengan el estado de un sitio web, algunas de ellas involucran
cliente. Los usuarios no requieren de conexiones individuales o mantener información en la máquina-cliente, otras en la máquina-
persistentes al servidor de base de datos, lo cual no sólo protege los servidor.
Técnicas de Administración de Estados del Lado del Cliente
Existen varias Técnicas de Administración de Estados del Lado del Técnicas de Administración de Estados del Lado del Servidor
Cliente (Client-Side State Management Techniques) disponibles en Existen también varias Técnicas de Administración de Estados del Lado
ASP.NET, las cuales involucran almacenamiento de información en la del Servidor (Server-Side State Management Techniques) disponibles en
máquina-cliente, un usuario puede manipular la información la cual ASP.NET. Ya que las opciones del lado del servidor almacenan
puede resultar en un estado incorrecto y crear un compromiso potencial información fuera del alcance del cliente la información es más segura.
de seguridad, por ello que la administración de estados de lado del Los estados de administración del lado del servidor deberían ser
cliente debería ser limitado a aplicaciones no criticas o seguras y incluidos en todas las aplicaciones que requieran soluciones seguras:
soluciones intranet: Application State
View State Application State (Estado de Aplicación), es la suma de todos los
Una página web es re-creada en cada petición, sin esfuerzos de archivos, páginas y código que reside en el servidor. Cuando se ejecuta
administración de estados, toda la información asociada con la página y una aplicación web, ASP.NET mantiene información referente a la
los controles en las páginas podrían perderse. ASP.NET provee una aplicación en el Application State, el cual es creado la primer vez que
facilidad llamada View State (estado de vista) que representa el estado un cliente hace una petición de un URL dentro de la aplicación
de la página cuando fué procesada en el servidor. Cuando la página es ASP.NET, el Application State se mantiene en la memoria del servidor
enviada de regreso al servidor ASP.NET utiliza el View State para hasta que un servidor web se apaga o hasta que la aplicación se
recuperar la información apropiada en la página. El View State es visible modifique.
en el código HTML siendo un asunto potencial de seguridad. El Application State permite a los desarrolladores crear variables de
Query String aplicación (application variables) que pueden establecerse y leerse a
Un Query String (Cadena de Consulta) es información que se agrega al través de la duración de vida de la aplicación. Una variable de aplicación
final del URL. Un Query String tipicamente comienzan con el caracter ? se compone de la palabra reservada Application seguido entre
seguido de información especifica para la aplicación, por ejemplo: paréntesis (y comillas) del nombre de la variable, por ejemplo:
http://informatique.com.mx?login?usuario=gangeles Application("UsuariosConectados"), estas variables se crean
Un Query String puede ser utilizado para intercambiar datos entre el automáticamente en la primer referencia. Las variables de aplicación son
cliente y el servidor, de una página a otra. Un Query String no es seguro de ámbito global y accesibles desde cualquier página de la aplicación
porque la información es visible en el navegador, además que la mayoria web y sus valores son independientes de un usuario especifico.
de los navegadores tienen una longitud máxima de 255 caracteres para Session State
el URL, lo cual limita la información que puede ser enviada utilizando un Una sesión es el período de tiempo que un único navegador interactua
Query String. con la aplicación web, cada vez que un nuevo navegador invoca una
Cookies aplicación web, una nueva sesión es creada para el navegador. Cuando
Una Cookie es un texto pequeño almacenado en la máquina-cliente, es una nueva sesión es creada, ASP.NET mantiene información referente a
decir, un archivo de texto y no un programa o plug-in, el navegador la sesión en el Session State.
anexa la Cookie en cada nueva petición HTTP antes que enviarla al El Session State permite a los desarrolladores crear variables de sesión
servidor para que los datos puedan ser leidos y respondidos (session variables) que pueden establecerse y leerse a través de la
apropiedamente. duración de vida de la sesión. Las variables de sesión se componen de
La información almacenada en una Cookie puede ser expuesta y por lo la palabra reservada Session seguido entre paréntesis (y comillas) del
tanto no es lo mejor para mantener información, además los usuarios nombre de la variable, por ejemplo: Session("User"), las variables de
podrían deshabilitar la opción en sus navegadores para no utilizar sesión pueden ser accesadas desde cualquier página de la aplicación
Cookies, entonces la aplicación no debería ser dependiente de un dato web por cada petición a la aplicación. Las sesiones y sus variables
en la Cookie. expiran después de veinte minutos de inactividad. Si el navegador hace
una petición después del tiempo de expiración (20 minutos) la aplicación recopilada también puede ser procesada por patrones creando
web crea una nueva sesión para el navegador. conocimiento. La inteligencia es la habilidad de adquirir conocimiento,
Database Support finalmente la sabiduría es un comportamiento apropiado guiado por el
Los datos almacenados en las variables de aplicación y sesión podrían conocimiento.
perderse, si la aplicación es interrumpida, para sobrevivir a estas Un Sistema Inteligente extiende la tradicional función de la computación
interrrupciones, es estado de información debería ser almacenado en la para también incluir la adquisición y aplicación de conocimiento.
base de datos. Una estrategia para capturar y utilizar el conocimiento es a través de
Mantener un estado de información en la base de datos es también útil heurísticas, una heurística es una regla de conocimiento basada en la
cuando la información a ser almacenada es significativa en tamaño, la experiencia o que induce a buscar la solución.
dimensión del procesamiento y almacenamiento puede ser cargado en la Las heurísticas pueden ser utilizadas por los Sistemas Inteligentes para
capa de datos permitiendo mejorar el desempeño de la capa de guíar el proceso de descubrimiento y a través de heurísticas-guía el
aplicación. comportamiento no es garantizado para ser optimo. Las heurísticas
Para una aplicación web profesional es muy común mantener un estado quizá sean de propósito general o dominio específico. Las heurísticas de
de información en al base de datos relacional por las siguientes razones: propósito general a menudo suenan como el sentido común, es decir, en
Seguridad, la información del usuario almacenada en la base a la experiencia que es la sabiduría. Las heurísticas de dominio
base de datos es un nivel extra eliminado de las capa de específico suenan como reglas o estrategias que son problemas
presentación, haciendo que los datos sean menos especificos, tipicamente es un comportamiento experto que incorpora
disponibles para uso indebido. Si la base de datos contiene conocimiento.
información importante puede ser protegida a través de un El uso del conocimiento heurístico para guiar el comportamiento es un
usuario y contraseña para evitar accesos no deseados. tipo de sistema inteligente.
Consultas, el almacenamiento de datos en la base de datos Una función heurística regresa un valor basado en un conocimiento
da a la aplicación el poder y funcionalidad de la base de heurístico, esta función puede ser utilizada para evaluar múltiples
datos en general, incluyendo la habilidad para consultar posibilidades y entonces seleccionar el mejor valor.
información específica. El aprendizaje involucra una modificación del comportamiento basado
Capacidad, las bases de datos son especialmente buenas en la experiencia. Los sistemas que aprenden son comunmente
para mantener cantidades grandes de información y los clasificados como sistemas inteligentes.
servicios de datos pueden fraccionarse a la capa de datos Un sistema informático puede ser construido para que mejore a través
que reside en uno o más servidores de datos, permitiendo a del aprendizaje de prueba y error basado en el refuerzo positivo o
la aplicación web evitar la disminución del desempeño. negativo.
Extracción de Datos, teniendo la capacidad de base de Agradecimientos a Juan Garcia por enviar el tutorial original de
datos una aplicación, podría mantener referencias sobre informatique.com.mx
cuantas veces el usuario ha visitado la aplicación web.
Sistemas Inteligentes
Los Sistemas Inteligentes se enfocan sobre el procesamiento y
producción de conocimiento.
Desde la perspectiva de la computación los datos se refieren a números,
caracteres o imagenes sin contexto, los datos por si solos no significan
nada o carecen de significado, cuando los datos son procesados en un
contexto se convierten en información, como la información es