sábado, diciembre 21, 2024
Inicio C# Utilizando .net Remoting , Programación en Capas, Programación Orientada a Objetos y patrones de programación, (SqlServer 2000 Back End) – Parte 1

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

0

<< Regresar al Indice del Artículo

La funcionalidad principal de esta aplicación, la cual correra como un servicio de windows, es exponer remotamente las fachadas a traves de un puerto TCP en este caso (que tambien pudiera ser HTTP), para sus intanciamientos remotos y asi brindar todas las funcionalidades de la capa reglas de negocios.
Esta aplicacion se debe de instalar en el equipo de computo que sera el servidor de componentes

Pasos a seguir para instalar el servidor de Componentes:

1. Copiar los 2 archivos Xml de configuración (Parametros.xml y server.exe.config) en la carpeta %WinDir%System32 de la maquina que fungira como servidor de componentes.

2. Correr el script de tablas y procedimientos para el ejemplo, para crear las tablas y procedimientos.

3. En una ventana de comandos, correr la utileria del .net framework «installutil ServidorComponenetes.exe», para instalar el servicio de windows que atendera las peticiones remotas

4. iniciar el servicio, puede ser desde la ventana de comandos con NET START «.Net Remoting»,

ó desde el panel de control, herramientas administrativas, Servicios, ahi buscar .Net Remoting, y dar iniciar.

Donde le Dijimos a la aplicacion que el servicio se llamaba «.NET Remoting»?

public static string serviceName = «.NET Remoting»;

Dentro de los atributos de la clase RemotingService.

El patrón fachada (Facade pattern, GoF)

El patrón fachada trata de simplificar la interface entre dos sistemas o componentes de software ocultando un sistema complejo detrás de una clase que hace las veces de pantalla o fachada.

La idea principal es la de ocultar todo lo posible la complejidad de un sistema, el conjunto de clases o componentes que lo forman, de forma que solo se ofrezca un (o unos pocos) punto de entrada al sistema tapado por la fachada.

Una ventaja más de usar una clase fachada para comunicar las dos partes o componentes, es la de aislar los posibles cambios que se puedan producir en alguna de las partes. Si cambias, por porner un ejemplo, el medio de comunicación o de almacenamiento de una de las partes, la otra, que por ejemplo hace la presentación, no tiene porque enterarse, y viceversa.

Este patrón es bastante fácil de explicar en palabras (aunque no estoy seguro de haberlo conseguido), pero no tanto de poner un ejemplo, al menos no uno completo. Intentaré hacerlo basándome en un caso personal.

En el trabajo teníamos un sistema de varias capas, un servidor DMS (Document Managment System), un proxy para distintos DMS escrito en C/C++ y una aplicación web desarrollada con servlets (y motores de plantillas) como interface al usuario. El aspecto más peliagudo era la comunicación entre el proxy para DMS y nuestra aplicación Java, que se producía por medio de sockets TCP/IP y mensajes XML. Podeis imaginaros que entre las clases propias de la comunicación (sockets, streams, handlers de la comunicación, etc), las clases de proceso del XML (parsers, codificadores, conversores xml a PDF, etc) y las clases de nuestro sistema (documentos, listas de resultados, etc) resultaba un sistema bastante complejo, complejidad que no era necesario que la conociera la aplicación web.

Nota:
En el archivo de configuracion Parametros.Xml esta el string de coneccion hacia la base de datos
En el archivo server.exe.config esta la configuracion del puerto TCP y los nombres de las fachadas a exponer remotamente
Finalmente en el archivo ClienteUI.exe.config esta la IP de donde se encuentra el Servidor de Componentes al cual se conectara el cliente.

Ir a parte II: Manejo de Entidades y Colecciones

<< Regresar al Indice del Artículo

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

using System;
using System.Diagnostics;
using System.ServiceProcess;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

Descargar solución ArqSoft_ServidorComponentes.zip

Dejar respuesta

Please enter your comment!
Please enter your name here