Servidor de componentes

04/09/2007 - 20:26 por Fabio Sierro Cartolano | Informe spam
Hola grupo

Mi problema es el siguiente: actualmente estoy desarrollando una aplicación
en 3-capas, el lenguaje que uso es Visual Basic .NET, Framework 2.0, la base
de datos que uso es SQL Server 2000.
Para la capa de datos uso Microsoft Data Aplication Block puesto que es un
bloque optimizado justamente para SQL Server, la capa de negocios este
implementada por medio de COM+ y por ultimo como dije anteriormente la capa
de usuarios. En la capa de negocios defini interfaces para que los metodos
estén expuestos en el servidor de componentes y no existan problemas de
incompatibilidad al momento de actualizar las clases. Las llamadas a los
métodos de la capa de negocio y de datos y los formularios de la capa de
usuarios las hago por medio de un método genérico basado en uno que saque de
la página de "El Guille" (garcias Guille!! :-)), esto lo hice así para no
tener que crear referencias en cada uno de los proyectos y poder distribuir
las capas en diferentes servidores. Tambien hay una "capa" de entidades que
son las que uso para pasar la info entre las otras capas... hasta acá esta
todo muy bonito y funciona todo perfecto... pero si todo esta puesto en
maquinas con Windows 2000 (Servidor y Clientes), si en algún punto cambio el
S.O. ya no me funciona el proyecto.. he descubierto que el problema
aparentemente esta en la capa de negocios porque si saco la herencia
"Inherits ServicedComponent" (que tengo que hacerla para que el componente
se registre en el servidor de componentes) todo funciona bien en cualquier
S.O... pero obviamente pierdo toda la potencia de COM+.

El siguiente código es el método genérico para la creación de todos los
objetos de las diferentes capas de la aplicación:

Public Function CrearObjeto(ByVal Servidor As String, ByVal Ensamblado
As String, ByVal Clase As String, ByVal pParam As Parametros) As Object

Try
Dim Ass As System.Reflection.Assembly =
System.Reflection.Assembly.LoadFrom(Servidor + Ensamblado)
Dim Tipo As Type = Ass.GetType(Clase)
Dim Obj As Object = Activator.CreateInstance(Tipo, pParam)

Return Obj
Catch ex As Exception
Throw ex
End Try

End Function

pParam lo utilizo para pasar parámetros entre las clases y formularios y
este se usa en cada uno de los contructores de dichas clases.

Como dije anteriormente todo funciona perfecto si está bajo windows 2000 (no
lo he probado todo bajo Windows 2003), el problema viene cuando el SO difere
entre la PC servidor y las PCs clientes. Perdón por lo largo de la pregunta,
pero es medio complicado de explicar... si alguien me puede dar una manita
de mas esta decir MIL GRACIAS!!!.

Saludos, Fabio.

Preguntas similare

Leer las respuestas

Search Busqueda sugerida