Vous êtes sur la page 1sur 27

Introducción a Programación en Capas

con Visual Studio 2008


Si bien todos hemos oído hablar sobre la Programación en Capas, y de los
beneficios que trae como Mantenibilidad, escalabilidad, y reusabilidad de código,
no todos sabemos cuál es la mejor forma de llevarlo a cabo al empezar un
proyecto con tecnología Microsoft, y para este caso, con Visual Studio 2008.

En primer lugar, debemos definir cuántas capas va a tener nuestro proyecto. Por
lo general, todo proyecto consta de 3 capas: Presentación, Reglas de Negocio y
Acceso a Datos. Sin embargo, es posible que se añada una capa de Servicios
que exponga los métodos construidos en la capa de Reglas de Negocio para que
puedan ser consumidos por otros sistemas, y no sólo por nuestra capa de
Presentación.

Para comenzar a construir nuestra solución, debemos iniciar el VS2008. Hacemos


click en File -> Other Project Types -> Visual Studio Solutions -> Blank Solution ->
Introducimos el nombre de nuestra preferencia en Name -> OK.
A continuación, agregamos 3 carpetas, es decir, una para cada capa, las cuales
contendrán los proyectos que las conformarán. Hacemos click derecho en la
Solución creada previamente, que aparece en el panel de la derecha -> Add ->
New Solution Folder -> Introducimos el nombre de la carpeta. Repetir el
procedimiento para cada carpeta. Al finalizar, debemos tener lo siguiente:

Este paso no es estrictamente obligatorio, pero sirve para mantener un mayor


orden en el desarrollo de la aplicación.

Posteriormente, pasamos a añadir los proyectos que vayamos a utilizar a cada


una de las carpetas ya creadas.

Para la capa de Presentación, donde además de ser la interfaz de usuario,


también sirve para recolectar y validar data, debemos definir qué tecnología usar
dependiendo de las necesidades de nuestra aplicación. VS2008 nos provee 4
opciones: Windows Presentation Foundation, Windows Forms, Console
Application y ASP.NET Web Application. Para efectos de este ejemplo añadiré un
proyecto de WPF. Hacemos click derecho en la carpeta Presentacion -> Add ->
New Project… -> Seleccionamos la categoría Visual C# (o Visual Basic si es de su
preferencia) -> Windows -> WPF Application -> Introducimos el nombre en Name -
> OK.
Ahora bien, para la capa de Lógica de Negocios, donde están todos los métodos
relacionados directamente con la funcionalidad de nuestra aplicación (Ej: cálculo
de totales de facturas, realizar descuentos en compras al mayor, etc.), debemos
agregar, en primer lugar, un proyecto donde estarán todos los objetos de
negocio, quienes se comportarán como medio de transporte de datos entre las
distintas capas. Segundo, agregar el proyecto donde estén todas las clases con
sus métodos que nos ayuden a implementar la funcionalidad de la aplicación,
tales como los ejemplos ya mencionados. Estos 2 proyectos deben ser de tipo
Class Library, y se agregan de forma similar al proyecto de WPF. En esta capa
también podríamos usar algún proyecto de tipo Windows Workflow Foundation, el
cual será discutido en futuros posts.

Para la capa de Acceso a Datos, vamos a definir cuáles serán los métodos que
nos permitan interactuar con la BD, y poder implementar las operaciones CRUD.
Para lograr esto VS2008 con .NET Framework 3.5 provee distintos mecanismos,
desde el uso de objetos DataReader, DataAdapter, DataSets, pasando por LINQ,
hasta llegar al novedoso, pero cuestionado, Entity Framework, todos parte del
equipo de ADO.NET. Evidentemente, por su utilidad y complejidad, cada una de
estas tecnologías merece un post propio, por lo que quedarán para próximas
discusiones. En el presente ejemplo, sólo agregaremos un proyecto de tipo Class
Library, en el que se podrán implementar las clases pertinentes.

Por último, y para poder integrar los proyectos de nuestra solución, es necesario
asignar ciertas referencias. Por ejemplo, todas las capas deberán conocer los
objetos de negocio ya creados para poder trabajar con ellos. Para lograr esto es
necesario realizar lo siguiente: click derecho sobre nuestro proyecto de capa de
Presentación -> Add Reference… -> Projects -> Seleccionamos el proyecto de
Objetos de Negocio -> OK. De igual modo, recordemos que las clases que
formarán nuestros objetos deberán ser públicas (por default, son privadas), y
debemos agregar la sentencia “using ObjetosNegocio; ” en cada una de las clases
donde vayamos a hacer uso de los mismos. Repetir este procedimiento en cada
uno de los proyectos que hagan uso de los objetos de negocio. Asimismo,
debemos añadir las referencias del proyecto de métodos de negocio al proyecto
de presentación, así como el de acceso a datos al de métodos de negocio.

Para finalizar, la base de la solución creada quedará así:


Cabe destacar que, si en un futuro se decidiera usar otra tecnología diferente a
WPF para la capa de Presentación, sólo se deberá añadir el nuevo proyecto a la
solución ya creada, y al agregar las referencias pertinentes, podrá hacer uso de
todos los métodos de negocio y de acceso a datos ya desarrollados.

Desarrollo de Aplicación en Capas con Visual Studio 2008

Continuando con el post de “Introducción a Programación en Capas con Visual


Studio 2008“, el objetivo del presente artículo es dar un pequeño ejemplo técnico y
mucho más tangible del desarrollo en capas.

El objetivo de la aplicación a desarrollar es ingresar personas a una base de


datos, haciendo uso de los objetos de ADO.NET, y posteriormente calcular su
edad.

Para lograr esto, empezaremos por definir la base de datos, la cual sólo tendrá la
tabla “persona” con los campos: nombre, apellido y fechaNac.

Para efectos de este post no estoy considerando las mejores prácticas en la


implementación de base de datos, dado que el objetivo es ilustrar la programación
en capas.

A continuación, desarrollamos una ventana en el proyecto “UserInterfaceWPF”


denominada “PersonaUI”:
Para el desarrollo de esta ventana se utilizó el componente “DatePicker” para la
selección de fecha de nacimiento. Este componente forma parte de la extensión
WPF Toolkit, que además trae el “DataGrid” que no está incluido en el .NET
Framework 3.5. Cabe destacar que el proyecto de inicio por default debe ser el
de la capa de presentación. Para lograr esto hacemos click derecho sobre
“UserInterfaceWPF” y seleccionamos “Establecer como proyecto de inicio” o “Set
as startup project”.

Debemos recordar que para poder dar la funcionalidad requerida es necesario


agregar las referencias en cada proyecto. Para “UserInterfaceWPF” se debe
agregar como referencia a “MetodosNegocio” y “ObjetosNegocio”. Para
“MetodosNegocio” se debe agregar “MetodosAccesoDatos” y “ObjetosNegocio”. Y
para “MetodosAccesoDatos” se debe agregar “ObjetosNegocio”. Por último se
deben citar al inicio de las clases, por ejemplo, en la clase de la ventana
PersonaUI se debe añadir: “using ObjetosNegocio;” y “using MetodosNegocio;”.

Desarrollando funcionalidad para la clase “PersonaUI”, donde estarán los


manejadores de los botones “Guardar” y “Calcular edad”:
El objeto “PersonaON” utilizado para definir al objeto “persona”, se refiere al objeto
fuertemente tipado del proyecto “ObjetosNegocio”, definido de la siguiente
manera:
Por otro lado, los métodos de la clase “PersonaMN” utilizados para
“insertarPersona” y “calcularEdad” fueron definidos de la siguiente manera:
De igual modo, los métodos de la clase “PersonaAD” como “insertarPersona” o
“buscarPorNombre” fueron desarrollados como se muestra a continuación:
Como han podido observar, en los métodos de acceso a datos utilicé una
connectionString completamente legible. Ésta no es la manera más adecuada
de hacer uso de ella, sin embargo, este tema quedará para un futuro post. La
forma más fácil de generar una cadena de conexión es haciendo uso del Server
Explorer y del wizard que provee para realizar este tipo de actividades haciendo
click derecho en “Conexiones de datos” y “Agregar conexión”. Como siempre, hará
falta el nombre del servidor, instancia, base de datos, usuario y password.

Asimismo, tampoco se hizo manejo de excepciones, lo cual es parte importante de


una aplicación, tanto por robustez como por seguridad. Este tema también será
tratado en un próximo post.

La base de la solución en el “Solution Explorer” debió quedar de la siguiente


manera:
Por último, pondremos en ejecución la aplicación desarrollada:

Al hacer click en “Guardar” se almacenará a la persona en la base de datos, tal y


como lo hemos definido. Y al introducir el nombre “Alejandro” y hacer click en
“Calcular edad” nos devolverá su edad en días (tomando en cuenta que hoy es
14/08/2009):
Una vez más, espero que este post pueda ser de ayuda para sus actividades
como desarrolladores. Bienvenidos sus comentarios, sugerencias, o lo que tengan
a bien.

¿Comohaceruna aplicaciónenCapas?(ParteI)

Publicado porCristian Ayalaen10:32Etiquetas:Programacion en Capas

Programación en capas primero a entender que es?

¿Cuantas capas existen para programar?

En la actualidad Se han propuesto diversas técnicas de programación, cuyo


objetivo es mejorar tanto el proceso de creación de software como su
mantenimiento. Entre ellas se pueden mencionar las programaciones lineal,
estructurada, modular y orientada a objetos. Pero la programación en capas es el
mejor método para la facilidad de el programador por este motivo existen n-capas
pero El diseño más en boga actualmente es el diseño en tres niveles (o en tres
capas).
Programación en 3 capas o Three-Tier: es un estilo de programación en la que
el objetivo primordial es la separación de la lógica de negocios de la lógica de
diseño, un ejemplo básico de esto es separar la capa de datos de la capa de
presentación al usuario. La programación en capas es la técnica más efectiva en
aplicaciones empresariales, debido a la fácil administración que implica el dividir
los componentes de la aplicación en capas y la rapidez que esto implica en
programas orientados a Cliente-Servidor. Esta arquitectura consiste en dividir los
componentes primarios de la aplicación, programarlos por separado y después
unirlos en tiempo de ejecución

Definición: Una capa representa un elemento del sistema que procesa o trata la
información.

Características: Una capa puede residir (se ejecuta) en una maquina diferente o
en diferentes espacios o entornos de procesos dentro de la misma maquina.

Diseñando Aplicaciones Distribuidas.

El diseño de aplicaciones modernas involucra la división de una aplicación en


múltiples capas; la interface de usuario (IU), la capa media de objetos de
negocios, y la capa de acceso a datos. Si se programa en 4 Capas, se le agrega
una capa la cual es la de “Modelo” en la cual va una clase por cada tabla que haya
en la base de datos, ya que va a tener los atributos de cada tabla las clases
(Producto, Persona, etc).

Puede ser útil identificar los tipos de procesamiento que podemos esperar que una
aplicación realice. Muchas aplicaciones pueden, al menos, hacer lo siguiente:

• Cálculos u otros procesos de negocios.


• Ejecución de reglas de negocios.
• Validación de datos relacionados al negocio.
• Manipulación de datos.
• Ejecución de las reglas de datos relacional.
• Interactuar con aplicaciones externas o servicios.
• Interactuar con otros usuarios.

Nosotros podemos tomar estos tipos de servicios y generalizarlos dentro de los


tres grupos o capas que a continuación se resumen:

· Interface de usuario (Capa de Presentación)

• Interactuar con otros usuarios.


• Interactuar con aplicaciones externas o servicios.

· Procesos de negocios (Capa de Negocios)

• Cálculos u otros procesos de negocios.


• Ejecución de reglas de negocios.
• Validación de datos relacionados al negocio.

· Procesos de datos (Capa de Servicios de Datos).


• Manipulación de datos.
• Ejecución de las reglas de datos relacional.

La división de estos procesos de aplicaciones y su distribución entre diferentes


procesos cliente/servidor es conocido como Procesamiento Distribuido.
Generalizando estos procesos dentro de estas tres categorías o capas es una
distribución lógica y no refleja necesariamente alguna opción de diseño físico
sobre computadoras, terminales u otros equipos. Usted puede desarrollar una
aplicación cliente/servidor distribuida basada sobre estas tres capas de
Presentación, Lógica de Negocios y Servicios de Datos y tener la aplicación entera
corriendo sobre una simple computadora. Alternativamente, usted puede esparcir
estas tres capas a través de un gran número de diferentes computadoras sobre
una red. De cualquier forma usted ha desarrollado una aplicación cliente/servidor
de tres capas.

Capas o niveles

1 Capa de presentación (IU):

La capa de Presentación provee su aplicación con una interface de usuario (IU).


Aquí es donde su aplicación presenta información a los usuarios y acepta entradas
o respuestas del usuario para usar su programa (Generalmente son formularios
WindowsForm, o de tipo consola, etc). Idealmente, la IU no desarrolla ningún
procesamiento de negocios o reglas de validación de negocios. Por el contrario, la
IU debería relegar sobre la capa de negocios para manipular estos asuntos.
Aunque se puede poner validaciones sobre la IU, como validar datos de entrada
que no sean correctos, como por ejemplo, si pedís que ingrese un dato numérico e
ingresa un dato string (cadena), esa validación la haces en la IU, las validaciones
de Negocio, como que el numero sea entre $50 a $100 va en la capa de Negocio.
Comprende las responsabilidades de lógica de presentación:

• Navegabilidad del sistema


• Validación de datos de entrada
• Formateo de los datos de salida
• Internacionalización
• Reenderezado de presentación

Funciones de la capa de Presentación:

• Recoger la información del Usuario.


• Enviar esta información a la Capa de Negocios.
• Recoger resultados de la Capa de Negocios
• Presentar los resultados al usuario.

2 Capa de negocio:

Toda aplicación tiene código para implementar reglas de negocios, procesos


relacionados a los datos o cálculos y otras actividades relativas a los negocios. La
lógica de negocios debe mantenerse separada de la capa de presentación y de los
servicios de datos.

Deben encapsular la lógica de negocios en un conjunto de objetos o componentes


que no contienen presentación o código de servicios de datos. Teniendo separada
lógicamente su lógica de negocios de ambas, la capa de presentación y servicios
de datos, ganará en flexibilidad en término de donde usted puede almacenar
físicamente la lógica de negocios.

Los objetos de negocios son diseñados para reflejar o representar sus negocios.
Ellos se convierten en un modelo de sus entidades de negocios e interrelaciones.
Esto incluye tanto objetos físicos como conceptos abstractos. Estos son algunos
ejemplos de objetos del mundo real: un empleado, un cliente, un producto, una
orden de compra.

Puede crear objetos de negocios de una orden conteniendo el código necesario


para administrarse a si mismo, así usted nunca necesitará replicar código para
crear ordenes, usted solo usará el objeto. Similarmente, un objeto cliente contiene
y administra sus propios datos. Un buen diseño de un objeto cliente contiene todos
los datos y rutinas necesitadas para representarlo a través del negocio completo, y
puede ser usado a través de toda la aplicación de ese negocio.

No toda la lógica de negocio es la misma. Alguna lógica de negocio es un proceso


intensivo de datos, requiriendo un eficiente y rápido acceso a la base de datos.
Otras no requieren un frecuente acceso a los datos, pero es de uso frecuente por
una interface de usuario robusta para la validación en la entrada de campos u
otras interacciones de usuarios. Si nosotros necesitamos una validación al nivel de
pantallas y quizás cálculos en tiempos real u otra lógica de negocios, pudiéramos
considerar este tipo de lógica de negocios para ser parte de la IU, ya que en su
mayor parte es usada por la interface de usuario.

Una alternativa de solución es dividir la capa de lógica de negocios en dos:

• Objetos de negocios de la IU.


• Objetos de negocios de datos.

Un ejemplo del objeto Empleado de la capa objetos de negocios de la IU proveerá


propiedades y métodos para usar por el diseñador de la interface de usuario.
Ejemplo de propiedades y métodos pudieran ser: IDEmpleado, Nombre, Dirección,
etc., y como métodos crear una de compra, etc. El objeto Empleado de la capa de
objetos de negocios de datos será responsable de los mecanismos de
persistencias, interactuar con la base de datos. Los objetos de esta capa son
considerados sin estado, solo poseen métodos.

Comprende las responsabilidades de lógica de negocio (o dominio) del


sistema.

• Resultado del análisis funcional:


• Conjunto de reglas de negocio que abstraen el mundo real.
• La capa de negocio ha de ser independiente de la capa de presentación
y viceversa (en la medida de lo posible).

Funciones de la capa de Negocio:

• Recibir la información de la capa de presentación


• Interactuar con los servicios de datos para realizar la lógica de negocio y
de la aplicación.
• Enviar resultados a la capa de presentación

3 Capa de datos:

Es donde residen los datos. Está formada por uno o más gestor de bases de datos
que realiza todo el almacenamiento de datos, reciben solicitudes de
almacenamiento o recuperación de información desde la capa de negocio. Capa
que sirve entre como puente entre la capa lógica de negocio y el proveedor de
datos. Este capa pretende encapsular las especificidades del proveedor de datos
tales como (SQL, Oracle, Sybase, archivos XML, texto, hojas electrónicas), a la
siguiente capa. Hoy en día contamos con Enterprise Library, con la cual se
nos facilita mas la Capa de Datos, para traer datos, modificar o borrar, etc
(Mas adelante les hablare sobre esto).
Esta capa queda encargada de tomar la información de la base de datos dada una
petición de la capa de Reglas del Negocio, que a su vez es generada por la capa
de presentación.

Comprende las responsabilidades de lógica de persistencia de las entidades


que maneja el sistema en desarrollo.

• Inserción
• Eliminación
• Actualizaciones
• Búsquedas

Funciones de la capa de Datos:

• Almacenar Datos
• Recibir datos
• Mantenimientos de los datos
• Integridad de los datos

En una arquitectura de tres niveles, los términos "capas" y "niveles" no significan


lo mismo ni son similares.
El término "capa" hace referencia a la forma como una solución es segmentada
desde el punto de vista lógico:
- Presentación
- Lógica de Negocio
- Datos
En cambio, el término "nivel", corresponde a la forma en que las capas lógicas se
encuentran distribuidas de forma física. Por ejemplo:
Una solución de tres capas (presentación, lógica, datos) que residen en un solo
ordenador (Presentación+lógica+datos). Se dice, que la arquitectura de la solución
es de tres capas y un nivel.
Una solución de tres capas (presentación, lógica, datos) que residen en dos
ordenadores (presentación+lógica, lógica+datos). Se dice que la arquitectura de la
solución es de tres capas y dos niveles. Una solución de tres capas
(presentación, lógica, datos) que residen en tres ordenadores (presentación,
lógica, datos). La arquitectura que la define es: solución de tres capas y tres
niveles.

Ventajas de trabajar con Capas:

o Reutilización de capas;
o Facilita la estandarización
o Dependencias se limitan a intra-capa
o Contención de cambios a una o pocas capas
o darle seguridad y versatilidad al sistema
o porque con objetos es mas fácil hacer crecer la aplicación
o es mas ordenado
o Clara distribución de las responsabilidades.
o Es más fácil trabajar en equipo con otros desarrolladores y
hasta armar equipos de desarrolladores para cada capa.
o Podemos cambiar de repositorio de datos sin impacto en el
resto de la aplicación.

Desventajas de trabajar con Capas:

o A veces no se logra la contención del cambio y se requiere una


cascada de cambios en varias capas;
o Pérdida de eficiencia;
o Trabajo innecesario por parte de capas más internas o
redundante entre varias capas;
o Dificultad de diseñar correctamente la granularidad de las
capas.

¿Cuál es la diferencia con la programación tradicional?

¿Por qué esto es mejor que programar todo de una sola vez y qué diferencia
hay entre una arquitectura y otra?

Las gráficas nos ayudarán a visualizar mejor estas diferencias.

MODELO TRADICIONAL

Todas las capas están ubicadas en un único elemento y al actualizar un elemento


se tendrán que afectar todos

En este el cambio en la capa de presentación no afectará reglas del negocio y se


pueden actualizar las funciones de reglas del negocio sin tener que cambiar el
acceso a datos.

MODELO THREE-TIER
Como podemos apreciar en las gráficas, resulta mucho más práctico programar
las capas por separado, sobretodo en situaciones que tenemos un equipo de
trabajo de diferentes programadores o el proyecto es para una empresa con varias
sucursales con políticas independientes.

¿Cuándo es recomendable utilizar esta arquitectura?

• Cuando el proyecto es muy grande.


• Cuando son varios los programadores y existen dificultades para
coordinarlos, por ejemplo cuando el software se está desarrollando con
programadores freelance que están muy lejos unos de los otros.
• Cuando el programa es para una empresa con varias sucursales y cada
sucursal puede tener algunos métodos y políticas diferentes.

Arquitectura Tres Capas (Three-Tier)

Aplicaciones sofisticadas que involucran bases de datos y son con frecuencia


divididas en tres capas basadas en la partición lógica de servicios fundamentales:

Capa de Presentación/Presentation Layer, navegador en la máquina-cliente

Capa de Aplicación/Application Layer, servidor web IIS que contiene las


páginas ASP.NET

Capa de Datos/Data Layer, servidor de base de datos que contiene los


archivos de base de datos y servicios ADO.NET
Las aplicaciones de tres capas protegen los recursos del servidor de base de
datos reduciendo el número de conexiones actuales a la base de datos. Las
conexiones al servidor de base de datos se realizan por las aplicaciones del
servidor en lugar de ser realizadas por las máquinas cliente. Los usuarios no
requieren de conexiones individuales o persistentes al servidor de base de datos,
lo cual no sólo protege los recursos de base de datos, también facilita el
mantenimiento de cuentas y fortalece la seguridad de datos.

Capa de Presentación - Presentation Layer

La Capa de Presentación se ejecuta sobre la máquina del usuario (cliente) y


provee de una interfaz de aplicación, un cliente robusto realiza procesos
significativos con menos carga en la capa de aplicación, un cliente menos robusto
tipicamente involucra un navegador (browser) que despliega HTML con procesos
poco significativos y requiere de una mayor carga en la capa de aplicación.

Capa de Aplicación - Application Layer

La Capa de Aplicación provee varios módulos y servicios que son esenciales


para la solución, incluyendo el procesamiento basado en las reglas de negocio. Si
las reglas de negocio cambian solamente los servicios en la capa de aplicación
necesitan ser cambiados para implementar los cambios a través del sistema.

La Capa de Aplicación también provee un mediador entre los manejadores de la


capa de aplicación y la capa de datos. Los requerimientos del usuario para los
servicios de datos son manejados por la capa de aplicación la cual puede reducir
el número de conexiones a la base de datos, por ejemplo todos los usuarios
pueden compartir una conexión entre la capa de aplicación y la capa de datos,
antes que cada usuario (cliente) requiera de una conexión de datos.

Capa de Datos - Data Layer

La Capa de Datos es la responsable de todos los accesos a la base de datos


requeridos por la solución, esta capa comunmente provee el soporte para agregar,
eliminar, actualizar y recuperar información de la base de datos.

State Management

p> HTTP es un protocolo stateless (sin estado), es decir, cada petición de una
nueva página web es procesada sin ningún conocimiento de peticiones de páginas
previas.

State Management (administración de estados) se refiere a las técnicas en las


cuales los desarrolladores mantienen el estado de una aplicación web a través de
múltiples peticiones de páginas.
En ASP.NET existen varias opciones para que los desarrolladores mantengan el
estado de un sitio web, algunas de ellas involucran mantener información en la
máquina-cliente, otras en la máquina-servidor.

Técnicas de Administración de Estados del Lado del Cliente

Existen varias Técnicas de Administración de Estados del Lado del Cliente (Client-
Side State Management Techniques) disponibles en ASP.NET, las cuales
involucran almacenamiento de información en la máquina-cliente, un usuario
puede manipular la información la cual puede resultar en un estado incorrecto y
crear un compromiso potencial de seguridad, por ello que la administración de
estados de lado del cliente debería ser limitado a aplicaciones no criticas o
seguras y soluciones intranet:

View State

Una página web es re-creada en cada petición, sin esfuerzos de administración de


estados, toda la información asociada con la página y los controles en las páginas
podrían perderse. ASP.NET provee una facilidad llamada View State (estado de
vista) que representa el estado de la página cuando fué procesada en el servidor.
Cuando la página es enviada de regreso al servidor ASP.NET utiliza el View State
para recuperar la información apropiada en la página. El View State es visible en
el código HTML siendo un asunto potencial de seguridad.

Query String

Un Query String (Cadena de Consulta) es información que se agrega al final del


URL. Un Query String tipicamente comienzan con el caracter ? seguido de
información especifica para la aplicación, por ejemplo:

http://informatique.com.mx?login?usuario=gangeles

Un Query String puede ser utilizado para intercambiar datos entre el cliente y el
servidor, de una página a otra. Un Query String no es seguro porque la
información es visible en el navegador, además que la mayoria de los
navegadores tienen una longitud máxima de 255 caracteres para el URL, lo cual
limita la información que puede ser enviada utilizando un Query String.

Cookies

Una Cookie es un texto pequeño almacenado en la máquina-cliente, es decir, un


archivo de texto y no un programa o plug-in, el navegador anexa la Cookie en
cada nueva petición HTTP antes que enviarla al servidor para que los datos
puedan ser leidos y respondidos apropiedamente.
La información almacenada en una Cookie puede ser expuesta y por lo tanto no
es lo mejor para mantener información, además los usuarios podrían deshabilitar
la opción en sus navegadores para no utilizar Cookies, entonces la aplicación no
debería ser dependiente de un dato en la Cookie.

Técnicas de Administración de Estados del Lado del Servidor

Existen también varias Técnicas de Administración de Estados del Lado del


Servidor (Server-Side State Management Techniques) disponibles en ASP.NET.
Ya que las opciones del lado del servidor almacenan información fuera del alcance
del cliente la información es más segura. Los estados de administración del lado
del servidor deberían ser incluidos en todas las aplicaciones que requieran
soluciones seguras:

Application State

Application State (Estado de Aplicación), es la suma de todos los archivos,


páginas y código que reside en el servidor. Cuando se ejecuta una aplicación web,
ASP.NET mantiene información referente a la aplicación en el Application State,
el cual es creado la primer vez que un cliente hace una petición de un URL dentro
de la aplicación ASP.NET, el Application State se mantiene en la memoria del
servidor hasta que un servidor web se apaga o hasta que la aplicación se
modifique.

El Application State permite a los desarrolladores crear variables de aplicación


(application variables) que pueden establecerse y leerse a través de la duración de
vida de la aplicación. Una variable de aplicación se compone de la palabra
reservada Application seguido entre paréntesis (y comillas) del nombre de la
variable, por ejemplo: Application("UsuariosConectados"), estas variables se crean
automáticamente en la primer referencia. Las variables de aplicación son de
ámbito global y accesibles desde cualquier página de la aplicación web y sus
valores son independientes de un usuario especifico.

Session State

Una sesión es el período de tiempo que un único navegador interactua con la


aplicación web, cada vez que un nuevo navegador invoca una aplicación web, una
nueva sesión es creada para el navegador. Cuando una nueva sesión es creada,
ASP.NET mantiene información referente a la sesión en el Session State.

El Session State permite a los desarrolladores crear variables de sesión (session


variables) que pueden establecerse y leerse a través de la duración de vida de la
sesión. Las variables de sesión se componen de la palabra reservada Session
seguido entre paréntesis (y comillas) del nombre de la variable, por ejemplo:
Session("User"), las variables de sesión pueden ser accesadas desde cualquier
página de la aplicación web por cada petición a la aplicación. Las sesiones y sus
variables 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 web crea
una nueva sesión para el navegador.

Database Support

Los datos almacenados en las variables de aplicación y sesión podrían perderse,


si la aplicación es interrumpida, para sobrevivir a estas interrrupciones, es estado
de información debería ser almacenado en la base de datos.

Mantener un estado de información en la base de datos es también útil cuando la


información a ser almacenada es significativa en tamaño, la dimensión del
procesamiento y almacenamiento puede ser cargado en la capa de datos
permitiendo mejorar el desempeño de la capa de aplicación.

Para una aplicación web profesional es muy común mantener un estado de


información en al base de datos relacional por las siguientes razones:

• Seguridad, la información del usuario almacenada en la base de datos es


un nivel extra eliminado de las capa de presentación, haciendo que los
datos sean menos disponibles para uso indebido. Si la base de datos
contiene información importante puede ser protegida a través de un usuario
y contraseña para evitar accesos no deseados.
• Consultas, el almacenamiento de datos en la base de datos da a la
aplicación el poder y funcionalidad de la base de datos en general,
incluyendo la habilidad para consultar información específica.
• Capacidad, las bases de datos son especialmente buenas para mantener
cantidades grandes de información y los servicios de datos pueden
fraccionarse a la capa de datos que reside en uno o más servidores de
datos, permitiendo a la aplicación web evitar la disminución del desempeño.
• Extracción de Datos, teniendo la capacidad de base de datos una
aplicación, podría mantener referencias sobre 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 recopilada también puede ser
procesada por patrones creando conocimiento. La inteligencia es la habilidad de
adquirir conocimiento, finalmente la sabiduría es un comportamiento apropiado
guiado por el conocimiento.
Un Sistema Inteligente extiende la tradicional función de la computación para
también incluir la adquisición y aplicación de conocimiento.

Una estrategia para capturar y utilizar el conocimiento es a través de heurísticas,


una heurística es una regla de conocimiento basada en la experiencia o que
induce a buscar la solución.

Las heurísticas pueden ser utilizadas por los Sistemas Inteligentes para guíar el
proceso de descubrimiento y a través de heurísticas-guía el comportamiento no es
garantizado para ser optimo. Las heurísticas quizá sean de propósito general o
dominio específico. Las heurísticas de propósito general a menudo suenan como
el sentido común, es decir, en base a la experiencia que es la sabiduría. Las
heurísticas de dominio específico suenan como reglas o estrategias que son
problemas especificos, tipicamente es un comportamiento experto que incorpora
conocimiento.

El uso del conocimiento heurístico para guiar el comportamiento es un tipo de


sistema inteligente.

Una función heurística regresa un valor basado en un conocimiento heurístico,


esta función puede ser utilizada para evaluar múltiples posibilidades y entonces
seleccionar el mejor valor.

El aprendizaje involucra una modificación del comportamiento basado en la


experiencia. Los sistemas que aprenden son comúnmente clasificados como
sistemas inteligentes.

Un sistema informático puede ser construido para que mejore a través del
aprendizaje de prueba y error basado en el refuerzo positivo o negativo.

Vous aimerez peut-être aussi