Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Aplicación en 3 Capas Utilizando ASP
Aplicación en 3 Capas Utilizando ASP
NET
CONTENIDO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Capa de presentacin
3.2.
Tambin conocida como capa de aplicacin, capa de negocios, capa lgica, o capa media; Es la
capa que controla la funcionalidad de la aplicacin mediante procesamiento detallado de acuerdo a los
requisitos otorgados por la capa de presentacin.
3.3.
Esta capa consiste de servidores de bases de datos. Aqu la informacin es almacenada y recibida.
Mantiene a los datos de una manera neutral e independiente a la capa de presentacin y/o la capa de
negocios.
5.1.
6.2.
Primeramente crearemos un proyecto de tipo Librera de Clases que albergara solo el mapeo de la base
de datos. No consideraremos a este proyecto como una capa.
El nombre de mi solucin va de acuerdo a lo que quiero hacer yo, en este caso, un gestor de deportes. El
nombre Entidades es el nombre que asignare a mi proyecto que alberga mi archivo .dbml.
6.3.
Para poder manejar nuestra base de datos de manera ms cmoda, mapearemos nuestra base de datos
a clases. De esta manera utilizaremos nuestras tablas como si fuesen objetos.
Para este objetivo, crearemos una clase Linq To SQL Classes
Un archivo .dbml o data base markup language es un archivo de modelamiento que hace eso
precisamente, modelar nuestra base de datos y convertirla para nosotros, de esta manera podemos
referirnos a las tablas que tengamos como objetos y a sus campos como atributos.
6.4.
Hacemos click en Server Explorer para poder ver que motores de bases de datos tenemos
actualmente corriendo y de ah extraeremos la base de datos o inclusive, solo las tablas necesarias para
el proyecto que llevaremos a cabo.
Hacemos click en Conectar a una base de datos.
Posteriormente saltara una pantalla que nos pida el nombre de nuestra instancia de SQL Server, adems
de la base de datos a la cual queremos hacer referencia.
Una vez hayamos hecho click en Ok, podemos ver que nuestro explorador de servidores, ya contamos
con nuestra base de datos:
Finalmente, arrastraremos las tablas que necesitamos, en m caso arrastrare todas las tablas de mi base
de datos al medio de la pantalla:
Para finalizar, presionaremos F6 para construir la solucin y poder usar la base de datos.
Ok, ya tenemos dos proyectos en nuestra solucin, pero como es que estos proyectos se comunican si
es que son independientes?
La respuesta es haciendo referencias, ahora veremos cmo hacer una referencia desde un proyecto a
otro:
7.1.
Recordemos que la base de datos mapeada est ubicada en el proyecto Entidades, por tanto la haremos
una referencia a dicho proyecto de la siguiente manera:
Hacemos click derecho en Referencias, y luego click en Anadir Referencia:
A continuacin veremos la siguiente pantalla, donde nos indica otros proyectos existentes en la
solucin, hacemos click en Entidades y luego en Ok, de esta manera ya podemos hacer referencias a
nuestra base de datos desde nuestra capa de acceso a datos.
Tambin haremos referencia a System.Data.Linq que se encuentra en la pestaa .NET de la ventana de
referencias.
7.2.
Para poder ahorrar cdigo, crearemos una clase llamada BASEDA, de la cual nuestras clases en la capa
de acceso a datos heredaran dos mtodos:
- Un mtodo que nos permita interactuar con la base de datos llamado GETDC()
- Un mtodo que llevara los valores obtenidos de querys que hagamos a una lista para poder
manejarlos de manera ms cmoda.
7.3.
Adems de tener una clase padre para todas nuestras clases, crearemos una Interfaz, de manera que
podamos mantener nuestro cdigo ordenado. Con la creacin de un Interface forzamos a nuestras
clases a tener los mismos mtodos.
Pero por que querramos algo as?
Queremos por ejemplo que cada clase tenga los mtodos:
- Adicionar
- Eliminar
- Modificar
- DevolverTodo (devolver todos los elementos de una tabla)
Para nuestro Interface, aadiremos una nueva clase al proyecto AccesoDatos y lo llamaremos
InterfazDA.
Veamos el cdigo de nuestro Interface:
z
Noodles Tech Club
Jorge Cupi
jorgecupi@hotmail.com
7.4.
Para la creacin de esta clase, echaremos un vistazo a cada uno de los mtodos que tiene, los mtodos
se replican para todas las siguientes clases, as que veremos con detalle que hace cada uno.
7.4.1. Referencias
Recuerden que es importante hacer referencia al proyecto Entidades ya que es en el en el que nuestra
base de datos esta albergada:
En este caso tenemos la clase DeportistaDA, mis otras clases vendran a ser :
<nombre_de_mi_clase>DA
Podemos observar que nuestro constructor hereda dos cosas:
- Hereda los mtodos de la clase BaseDA
- Hereda los mtodos de la Interfaz IDataAccess
Las letras que vemos de color plomo son el nombre de una regin de cdigo, si hacemos click en ellas, la
regin se expandir se la siguiente manera, mostrndonos as los mtodos que albergan, es una manera
ms elegante de separar cdigo, por ejemplo en esta regin tendremos a los mtodos heredados de la
Interfaz IDataAccess:
7.5.
Tendremos que hacer lo mismo para todas las tablas que tengamos en la base de datos, o al menos,
haremos esto para las tablas en las cuales querramos adicionar, eliminar, y actualizar registros.
Si se dan cuenta, en esta capa, no validamos los datos de los deportistas, o paises, las validaciones y
otros requerimientos los realizaremos en la capa de negocios o capa logica, que es la que se encarga de
estas tareas.
8.1.
Referencia al proyecto Entidades para poder manejar a nuestras clases (tablas de la base de
datos)
Referencia al proyecto AccesoDatos por que llamaremos a sus mtodos (mtodos de
adicin, eliminacin, y otras consultas) desde esta capa.
8.2.
Al igual que en la capa de acceso a datos, utilizaremos una Interfaz en esta capa, todo con el propsito
de mantener un cdigo ordenado y ms entendible.
No es necesario realizar interfaces en una aplicacin en tres capas, pero esta vez lo haremos por las
razones previamente mencionadas.
Crearemos una clase en el proyecto LogicaNegocio, y la denominaremos IBusinessLogic, debajo vemos el
cdigo empleado en esta interfaz:
8.3.
Tal como lo hicimos con la clase DeportistaDA, daremos un vistazo a los mtodos de esta clase, uno por
uno.
8.3.1. Referencias
Recuerden que es importante hacer referencia al proyecto Entidades, as como tambin al proyecto
AccesoDatos:
Noodles Tech Club
Jorge Cupi
jorgecupi@hotmail.com
En este caso tenemos la clase DeportistaBL, mis otras clases vendran a ser :
<nombre_de_mi_clase>BL
Podemos observar que nuestro constructor hereda los mtodos de la Interfaz IDataAccess, esto con el
propsito de tener los mtodos ya vistos (adicin, eliminacin, actualizacin y obtener todos los
registros).
Sin embargo, podramos realizar un par de cambios en este mtodo, o bien, podramos crear otro
mtodo adicionar que verifique que los datos introducidos sean correctos:
Con este nuevo mtodo Adicionar, podemos verificar por ejemplo que el tamao del campo
id_deportista no exceda el limite asignado en nuestra base de datos, tambin verificamos por ejemplo
que el pas del que proviene el deportista exista en la base de datos.
La capa de lgica de negocios esta para esto, como podemos ver, utilizamos un mtodo ms el mtodo
NoSeEncuentra() que devuelve un booleano true si el pas no se encuentra en la base de datos, y
devuelve un false si el pas si se encontrara.
Si lo notaron, hago referencia al pas de nuestro deportista, como si fuera un atributo propio.
Recordemos los atributos de Deportista y de Pas:
Lo notan?
Nuestro deportista no tiene un atributo Pas como tal, lo que hace nuestro archivo DBDEportes.dbml es
hacer un join por detrs, de tal manera que nos ahorramos escribir una consulta parecida a lo siguiente:
Entonces, lo que hacemos con nuestra base de datos mapeada es en realidad tratar a nuestras tablas
como:
deportista tiene pas
Y no algo as como
deportista tiene un cdigo de pas y pas tiene un cdigo pas,
Por tanto buscaremos el pas cuyo cdigo de pas sea igual al cdigo de pas el deportista
Que viene a ser mucho ms incmodo y tedioso, esto nos ayuda a preocuparnos ms en la lgica que
apliquemos en nuestro software y no preocuparnos demasiado por lo que est pasando con la base de
datos por detrs.
Con este ejemplo, espero quede en claro la funcionalidad de la capa de lgica de negocios.
No haremos ni modificaremos los mtodos de Eliminar o Actualizar ya que vendran a ser algo parecido.
Solo echaremos un vistazo a los mtodos por defecto que tenemos
9.1.
Referencia al proyecto Entidades para poder manejar a nuestras clases (tablas de la base de
datos)
Referencia al proyecto LogicaNegocio por que llamaremos a sus mtodos (mtodos de
adicin, eliminacin, y otras consultas) desde esta capa.
9.2.
Traduciendo el error, nos dice que no podemos iniciar nuestra solucin a partir de un proyecto de
Librera de Clases, lo cual es cierto. Dado que un nuestros proyectos de librera de clases no tenemos
nada que desplegar hacia nuestro cliente, para corregir este problema, la asignamos el ttulo de
proyecto iniciador a nuestro proyecto que alberga la capa de presentacin.
9.3.
Hacemos click derecho en nuestro proyecto Presentacin y luego click en la opcin Establecer como
proyecto inicial.
Con este paso le decimos a nuestra solucin que es este el proyecto que tiene que iniciarse una vez que
intentemos debuggear o correr la aplicacin como tal.
9.4.
Una vez hayamos corregido este problema, presionemos una vez ms F5 y veamos la primera corrida de
nuestra aplicacin:
Como podemos observar, se est desplegando en nuestro navegador por defecto (Google Chrome en mi
caso) el contenido de la pgina Default.aspx
9.5.
Podemos observar que en pantalla tenemos desplegado el Code Behind de nuestra pgina ASP.NET y
tras haber hecho doble click en el Botn, acabamos de generar el evento Button1_Click.
Esto quiere decir que se ejecutara el cdigo que escribamos aqu cada vez que hagamos click a nuestro
botn.
Podemos observar que ya tenemos una lista desplegable y un botn en nuestra pgina, presionemos el
botn y veamos que pasa:
9.6.
Ya podemos desplegar datos en nuestra pgina, pero eso no es todo lo que haremos en nuestras
pginas, tambin vamos a desear adicionar, eliminar o modificar datos.
As que en el siguiente ejemplo veremos cmo funciona la adicin de informacin en nuestra base de
datos
A grandes rasgos, estamos creando un objeto de tipo Pas , y a este le estamos dando los valores
introducidos en la pgina web.
Posteriormente utilizamos el mtodo AdicionarValidado de la clase PaisBL perteneciente a la capa de
negocios que lo que hace es verificar ciertos errores como vemos a continuacin:
Lo que hace este mtodo es verificar si el cdigo de pas no excede los tres caracteres y adems verifica
que el cliente no introduzca datos errneos en el campo Continente.
Si es que no hay errores, devuelve un mensaje de Datos introducidos satisfactoriamente e introduce
los datos en la base de datos utilizando la capa de acceso a datos.
Si por otro lado, hay errores, devuelve un mensaje conteniendo el error y NO introduce la informacin
en la base de datos.