UTArlingtonX: LINK5.10x Data, Analytics, and Learning
Como en un CookBook, tener y disponer de una clase para:
- Capa de Datos
- Capa de Entidades
- Capa de Reglas de Negocio
- Capa de Presentacion
- Servicios, como web services Primero en la capa de Datos
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace CapaDatos { internal class Conexion { private static string cadenaConexion = ConfigurationManager.ConnectionStrings["conexionSQL"].ConnectionString;;// definir private static SqlConnection conex = new SqlConnection(cadenaConexion); private static bool conectar() { try { conex.Open(); return true; } catch (Exception) { return false; } } private static void desconectar() { conex.Close(); } public static void EjecutarOperacion(string sentencia, List****listaParametro, CommandType tipoComando) { if (conectar()) { SqlCommand comando = new SqlCommand(); comando.CommandText= sentencia; comando.CommandType = tipoComando; comando.Connection = conex; foreach (SqlParameter parametro in listaParametro) { comando.Parameters.Add(parametro); } comando.ExecuteNonQuery(); desconectar(); } else { throw new Exception("hubo problema al conectarse a la base de datos"); } } public static DataTable EjecutarConsulta(string sentencia, List listaParametro, CommandType tipoComando) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(sentencia, conex); adapter.SelectCommand.CommandType = tipoComando; foreach (SqlParameter parametro in listaParametro) { adapter.SelectCommand.Parameters.Add(parametro); } DataSet conjuntoDatos = new DataSet(); adapter.Fill(conjuntoDatos); return conjuntoDatos.Tables[0]; } } } }
Adicionamente debemos de tener una clase Manejador de base de datos y Proyecto donde se definirán las Entidades que se definieron en nuestro proyecto:
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio.AccesoDatos { public class ManejadorDatos { public static bool IniciarSesion(Entidades.Usuario objetoUsuario) { if (Conexion.EjecutarConsulta(string.Format("Select * from usuarios where usuario='{0}' and clave ={1}", objetoUsuario.Nombre, objetoUsuario.Clave ), new ListOtro proyecto seria la de entidades aca solo expondre una sola entidad donde es una tabla usuario que se llamaran los campos Usuario y clave(), System.Data.CommandType.Text).Rows.Count > 0) { return true; } else { return false; } } public static void RegistrarUsuario(Ejercicio.Entidades.Usuario objetoUsuario) { List lista = new List (); SqlParameter nombre = new SqlParameter("@p_nombre", objetoUsuario.Nombre); SqlParameter clave = new SqlParameter("@p_clave", objetoUsuario.Clave); lista.Add(nombre); lista.Add(clave); Conexion.EjecutarOperacion("Registrarusuario", lista, System.Data.CommandType.StoredProcedure); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio.Entidades { public class Usuario { private string nombre = string.Empty; private string clave = string.Empty; public string Nombre { get { return nombre; } set { nombre = value; } } public string Clave { get { return clave; } set { clave = value; } } } }CAPA DE REGLAS DE NEGOCIO
Se crea un proyecto con reglas de negocio y referenciar los componente de acceso a datos y demas
using Ejercicio.AccesoDatos; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ejercicio.LogicaNegocio { public class AdministradorUsuarios { private static int i=0; public static bool IniciarSesion(Entidades.Usuario objetoUsuario) { if (int.TryParse(objetoUsuario.Clave, out i)) { return ManejadorDatos.IniciarSesion(objetoUsuario); } else { throw new Exception("formato de clave invalida"); } } public static void RegistrarUsuario(Ejercicio.Entidades.Usuario objetoUsuario) { ManejadorDatos.RegistrarUsuario(objetoUsuario); } } }CAPA DE PRESENTACION
Para un Aplicación Distribuida esta capa se debe realizar un servicio Web o un servicio WCF al que espondremos aca:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using Ejercicio.Entidades; using Ejercicio.LogicaNegocio; ////// Summary description for Operaciones /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Operaciones : System.Web.Services.WebService { public Operaciones () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] public bool IniciarSesion(Usuario objetoUsuario) { return AdministradorUsuarios.IniciarSesion(objetoUsuario); } [WebMethod] public void RegistrarUsuario(Ejercicio.Entidades.Usuario objetoUsuario) { AdministradorUsuarios.RegistrarUsuario(objetoUsuario); } }