27
Grupo de Estudio C# desde Cero- Sesion IV {Roberto Alvarado Taborda – MVP C#} Consultor Senior - MCP Director BDotNet Microsoft MVP en C#

Arquitectura N-Capas y ADo.NET

Embed Size (px)

DESCRIPTION

Clase 4 del Curso C# desde Cero 2014 con el tema de arquitectura de N-Capas y ADO.NET

Citation preview

Grupo de Estudio C# desde Cero- Sesion IV

{Roberto Alvarado Taborda – MVP C#}Consultor Senior - MCPDirector BDotNetMicrosoft MVP en C#

www.BogotaDotNet.orgComunidad de Desarrolladores Profesionales

Patrocinadores

¿Qué es POO?

La P.O.O. (también conocida como O.O.P., por sus siglas en inglés) es lo que se conoce como un paradigma o modelo de programación. Esto significa que es una forma de programar, una manera de plantearse la programación.

Características

Abstracción: Es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc.

Encapsulación: Se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita.

Características

Herencia: La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra. (Clase e Instancia de la clase)

Polimorfismo: la posibilidad de acceder a un variado rango de funciones distintas a través del mismo interfaz. Establecido mediante El polimorfismo se puede establecer mediante la sobrecarga, sobre-escritura y la ligadura dinámica. (Sobrecarga)

¿Qué es una Clase?

Una clase no es más que una serie de código que define a todos los elementos relacionados con ella.

Algo así como el concepto de lo que queremos hacer, es como la idea que da forma a un objeto que crearemos.

La estructura del objeto que queremos definir.

Constructores y Destructores

Constructor: Método especial de una clase que es llamado automáticamente siempre que se crea un objeto de esa clase.

Destructor: Método que libera la memoria cuando ya no se utiliza el objeto, .Net se encarga de hacerlo automáticamente a través del garbage collector .

Instancia

Una clase es como la definición de un objeto, pero no es el objeto en sí, del modo como una idea no es una cosa física.

Así que para sentarnos necesitaremos convertir esa idea en algo, en un objeto real; a ese objeto lo llamamos instancia.

Estructura de una Clase

• NameSpace al que pertenece la clase

• Definición de la Clase • Variables Internas (Son de uso interno de la clase, por lo

que se restringe su uso fuera de ellas con la palabra clave private)

• Constructor de la Clase• Propiedades, Métodos y Eventos de la Clase (no

necesariamente en ese orden, pero es una buena forma de organizarlo).

• Por supuesto, una clase bien hecha contiene además comentarios con información sobre la clase, la forma de usarla, su autor, etc.

EventosSon el medio como interactúa una clase con otras o con el propio usuario, se encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra.

Sobrecarga: Cuando el mismo método se define varias veces con distinto número y/o distinto tipo de parámetros.

DEMO

ADO.NETConexiones a los Motores de Base de Datos

Estructura de ADO.NET

Arquitectura de datos desconectados

DataSet

El API de ADO .NET proporciona una superclase que encapsula lo que sería la base de datos a un nivel lógico: tablas, vistas, relaciones, su integridad, etc., pero siempre con independencia del tipo de fabricante que la diseñó.

Las clases de ADO .NET

System.Data : clases genéricas de datos de ADO .NET, integra la gran mayoría de clases que habilitan el acceso a los datos de la arquitectura .NET.• System.Data.SqlClient: clases del proveedor de datos de SQL Server, permiten el acceso a proveedores SQL Server en su versión 7.0 y superior.• System.Data.OleDb: clases del proveedor de datos de OleDB, permiten el acceso aproveedores .NET que trabajan directamente contra controladores basados en los ActiveX de Microsoft.• System.Data.SqlTypes: definición de los tipos de datos de SQL Server, proporciona laencapsulación en clases de todos los tipos de datos nativos de SQL Server y sus funciones de manejo de errores, ajuste y conversión de tipos, etc.• System.Data.Common: clases base, reutilizables de ADO .NET, proporcionan la colección de clases necesarias para acceder a una fuente de datos (como por ejemplo una Base de Datos).

Dentro del espacio de nombres System.Data encontramos las clases compartidas que constituyen el eje central de ADO.NET, y son las siguientes:

• DataSet: almacén de datos por excelencia en ADO .NET. Representa una base dedatos desconectada del proveedor de datos. Almacena tablas y sus relaciones.• DataTable: un contenedor de datos. Estructurado como un conjunto de filas(DataRow) y columnas (DataColumn).• DataRow: registro que almacena n valores. Representación en ADO .NET de unafila/tupla de una tabla de la base de datos.• DataColumn: contiene la definición de una columna. Metadatos y datos asociados asu dominio.• DataRelation: enlace entre dos o más columnas iguales de dos o mas tablas.• Constraint: reglas de validación de las columnas de una tabla.• DataColumnMapping: vínculo lógico existente entre una columna de un objeto delDataSet y la columna física de la tabla de la base de datos.• DataTableMapping: vínculo lógico existente entre una tabla del DataSet y la tabla física de la base de datos.

MODELO DE PROGRAMACION

N-CAPAS

Arquitectura de N-Capas

Capa de Presentación

Capa de Negocio

Esta capa estará representada dentro de la solución por un proyecto de tipo Class library en el cual se encontraran las diferentes clases de tipo Manager para cada una de las pantallas de la aplicación.

Esta capa será la encargada de conectar la capa de Acceso a datos con la capa de Presentación, en esta capa se utilizara la capa de Infraestructura Transversal a toda la aplicación con lo cual solo viajara a través de ella, clases de tipo entidad, colecciones o tipos de datos nativos de Framework .NET.

Capa Manejo de Datos

Esta capa intermedia entre la capa de lógica de negocios y de Acceso a datos es la encargada de enviar los diferentes sentencias SQL a la base de datos para su ejecución, en esta capa van a estar las diferentes sentencias o instrucciones SQL para realizar consultas de cualquier tipo sobre la base de datos.

Capa de Infraestructura Transversal

Esta capa es la encargada de la definición de los diferentes objetos y colecciones a manejar en la solución.

En esta capa vamos a tener básicamente dos tipos de clases: las clases de tipo Entidad (Entity) en las cuales se hace el mapeo de los datos de las diferentes tablas que corresponden con cada una de las clases de tipo entidad.

Vamos a tener tantas clases de tipo entidad como tablas tengamos en la base de datos, ya que se corresponden uno a uno.

Las clases entidad van a seguir la siguiente regla para su nombrado: el nombre de la tabla de la base de datos a la que representa y el sufijo Entity, las diferentes propiedades de la clase serán del tipo de datos correcto de acuerdo a los tipos de datos que expone el Framework .NET

Capa de Infraestructura Transversal II

Capa de Infraestructura Transversal III

El segundo tipo de clases en esta capa son las clases de tipo colección, estas

clases no contienen mayor código pues toda la funcionalidad para el manejo de las

colecciones ya viene implementado en el propio Framework de .NET y lo podemos

utilizar al heredar de la esta clase creando nuestras propias colecciones.

using System.Collections.ObjectModel;

namespace SisbenNetMovil

{

public class Usuarios : Collection<UsuarioEntity>

{

}

}

Para crear estas colecciones debemos agregar la referencia al proyecto de

System.Collections si no está agregada, agregar el using de

System.Collections.ObjectModel y la clase hacerla que herede de Collections<T>.

Capa de Acceso a Datos

Esta capa es la que interactúa directamente con la base de datos, en esta capa vamos a utilizar ADO.NET que implementa Framework .NET para conectarnos a la base de datos y realizar las diferentes operaciones que necesitemos sobre el repositorio de datos.Esta capa si es necesario se podría cambiar para adaptarla a un motor de base de datos diferente de SQL Server sin afectar en gran medida las capas superiores.