jueves, junio 8, 2023

Utilizando .net Remoting, Programación en Capas, Programación Orientada a Objetos y patrones de programación, (SqlServer 2000 Back End) – Parte 5

<< Regresar al Indice del Artículo

Esta capa se encarga de la presentación visual de los datos hacia los usuarios finales u operadores del sistema. También se encarga de dar las facilidades para manipular la información.

Esta aplicación puede ser desarrollada en aplicaciones de Windows (Windows-Base Application), aplicaciones Web(ASP.NET) ó aplicaciones mobiles (Mobile Application), indistintamente del «Front End» seleccionado, los componentes vistos de la parte I a la parte IV son los mismos!!!. Esa es una de las ventajas de utilizar programación en capas. Y si se modifica alguna regla de negocios o acceso a datos, la interfaz de usuario no tiene que modificarse!!!.

En esta Capa se utilizan las referencias hacia Entity.dll (parte II) y mobileBO.dll (parte IV).

Bueno, pasemos a lo interesante. Para utilizar los objetos remotos ofrecidos por el servidor de componentes(parte I) las cuales son las fachadas, se tienen que registrar con el siguiente segmento de código:

private void FrmMain_Load(object sender, System.EventArgs e)
{
ChannelServices.RegisterChannel(new TcpClientChannel());
string servidorComponentes = ConfigurationSettings.AppSettings[«ServidorComponentes»].ToString();
RemotingConfiguration.RegisterActivatedClientType( typeof(mobileBO.Facade ),
«tcp://»+servidorComponentes+»:9946/TestCAO»);
}

Analizemos el código, lo que estamos haciendo aquí es, primero, registrando un canal de tipo Tcp, por que en el servidor también lo registramos así, luego obtenemos del archivo App.config el valor de la variable «ServidorComponentes», la cual nos da la Ip o el HostName del servidor de componentes, donde se encuentran publicadas nuestras fachadas con toda la funcionalidad para el sistema de la interfaz de usuario. Después utilizamos el método RegisterActivatedClientType de la clase RemotingConfiguration, el cual nos permite registrar la clase como remota, es decir que cuando se instancie esa clase en cualquier parte del código del sistema, la va a ir a buscar a esa Uri que le asignamos.

A continuación veremos un fragmento de código donde se utiliza la llamada a un método de la fachada para consultar una entidad para trabajar con ella en memoria:

// primero se instancia la fachada remota, si el servidor no esta listo aqui recibiremos un error de comunicación
mobileBO.Facade fachada = new mobileBO.Facade();

// buscar el estado para ver si es cambio o alta
estado = fachada.TraerEntidades(int.Parse(this.txtEstado.Text));
if (estado == null)
{
//no existe, por lo tanto se creara una instancia nueva para su posterior insercion, aqui automaticamente la entidad «estado», queda con el estatus de nueva, y al mandarse guardar se insertara en la base de datos
estado = new Entity.Entidad();
this.txtDescripcion.Text=»»;
this.cboPaises.SelectedIndex = -1;
}
else
{
// en esta parte, se obtienen los datos de la entidad «estado», para presentarlos, en las cajas de texto al usuario.
this.cboPaises.SelectedValue = estado.Pais.PaisId;
this.txtDescripcion.Text = estado.Descripcion;
}

Ahora veremos un fragmento de código donde se utiliza la llamada a un método de la fachada para almacenar una entidad en la base de datos:

//Instanciamos fachada remota

mobileBO.Facade fachada = new mobileBO.Facade();
listaEstados=new Entity.ListaEntidades();

//Asigno valores a la Entity entidad
estado.Estado = int.Parse(this.txtEstado.Text);
estado.Descripcion = this.txtDescripcion.Text;
estado.Pais = listaPaises.FindByPrimaryKey( int.Parse(this.cboPaises.SelectedValue.ToString()) );
listaEstados.Add(estado);
fachada.GuardarEntidad(ref listaEstados);

// Inicializamos valores
MessageBox.Show(«Se Guardo Correctamente!!!»);
this.InicializarControles();

Por último veremos como utilizar una entidad de colección como DataSource de un control:

// creamos la intancia de la fachada remota
mobileBO.Facade fachada = new mobileBO.Facade();
Entity.ListaEntidades listaEstados=new Entity.ListaEntidades();
listaEstados = fachada.TraerEntidades();
//enlazamos los datos al DatGrid, pero pudo haber sido unComboBox, ListView o cualquier control que acepte un ICollection como DataSource
this.dtgConsultaEstados.DataSource = listaEstados;

Bueno este fue el ultimo capitulo de la arquitectura de red, muchas gracias por dedicarle tiempo en leerlo y votarlo, si necesitan ver mas ejemplos o mas codigo fuente, con mucho gusto.

Gracias y hasta la próxima.

<< Regresar al Indice del Artículo

Espacios de nombres usados en el código de este artículo:

using Entity.dll;
using mobileBO.dll;
using System.Runtime.Remoting.Channels ;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Tcp ;

Descargar Solución ArqSoft_ClienteUI.zip




Artículo anteriorAlgoritmos Numéricos – Lección 3
Artículo siguienteRegresión
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

SQL Server MERGE

MERGE en SQL Server para Insert, Delete y Update con dos tablas

Ejemplo práctico usando MERGE para sincronizar dos tablas, Insert, Update y Delete en un solo query. Válido para SQL SERVER 2008 o superior.
SQL Server

Cómo saber la fecha que se modificó un procedimiento almacenado

Poder saber cuales objetos o procedimientos almacenados se modificaron recientemente es muy útil principalmente en bases de datos donde varios desarroladores tienen acceso
SQL Server

Format en SQL Server (Transact-SQL)

La función Format aplica desde SQL Server 2012 en adelante. Devuelve un valor con el formato previamente indicado. Se puede utilizar para definir el formato de una fecha y hora o para retornar un numero como varchar en un formato específico.

Últimos artículos

SQL Server MERGE

MERGE in SQL Server for Insert, Delete and Update with two tables

Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single query. Valid for SQL SERVER 2008 or...

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...