Servidor de Aplicaciones (COM+)

14/05/2007 - 11:58 por AOG | Informe spam
Estoy desarrollando una aplicación distribuida con VS Net 2005. En la capa
lógica de negocio utilizo la librería Enterprise Services (COM+). El enfoque
que yo he dado a mi proyecto es el siguiente: Clientes (IU), servidor de
aplicaciones (donde se aloja la capa de negocio) y servidor de BBDD
(SQLServer o MySQL), esta división será también física, es decir, cada
cliente tendrá su PC, habrá un equipo servidor de aplicaciones y otro de BBDD.
Estoy en fase de desarrollo y en mi máquina de trabajo tengo el cliente y
servidor de aplicaciones y en otro PC el servidor de BBDD. Mi Problema es el
siguiente: como puedo separar o exponer los componentes de negocio en un
servidor de aplicaciones, es decir, que mi clientes acceda remotamente a la
capa de negocio.
Es fácil a través de Servicios Web (IIS), tener un servidor con IIS y
exponer los componentes COM+ instalados en este servidor. Y creo que es el
sistema más idóneo, pero cuando estamos hablando de cliente que está en otro
sitio geográfico. Es más la pienso utilizar este sistema, pero para este tipo
de clientes. El problema es que la mayoría de clientes estarán en una red
local, y tengo entendido que el rendimiento no está bueno o no se
aprovecharía para este tipo de cliente (red local) mi pregunta es ¿como puede
exponer mi lógica de negocio (centralizado) a los cliente en una red local?
He oído Net remoting, pero no se como funciona y es un poco complejo,
también he oído de exportar los componentes COM+ de mi lógica de negocio en
Proxy de aplicaciones e instalarlos en los clientes para acceder al servidor.
Lo he intentado pero me da errores de acceso, etc. y no se si esto
funcionaría.
¿Qué me aconsejáis?, y si no os importa una pequeña explicación como se
perdía hacer lo que me aconsejáis.

Un saludo.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
14/05/2007 - 13:07 | Informe spam
"AOG" wrote in message
news:
[...]
también he oído de exportar los componentes COM+ de mi lógica de negocio
en
Proxy de aplicaciones e instalarlos en los clientes para acceder al
servidor.



Ya que tienes los componentes dentro de COM+, lo que más sencillo te
resultaría es usar el Proxy de COM+, ya que así no tienes que programar nada
mientras que con Remoting o Web Services tendrías que añadir a tu código
toda la lógica necesaria para exponer la funcionalidad del componente.

Para usarlo, una vez que tengas la dll registrada en los servicios de
componentes (en el servidor), te vas a la herramienta de administración de
los Servicios de componentes en el panel de control, pulsas con el botón
derecho sobre el componente, y buscas la opción de Exportar. Sale un Wizard
que te da dos opciones: exportar todo el componente o exportar sólo el
proxy. En tu caso, te interesa exportar el Proxy. Esto genera un archivo de
instalación (.msi). Te lo llevas a los PCs y lo ejecutas, con lo cual te
crea el proxy en los PCs. Este proxy crea en el Registro las entradas
necesarias para que el PC se crea que tiene instalado un componente COM con
la funcionalidad de tu componente COM+, pero en realidad retransmite al
servidor todas las llamadas que se le hagan para que las ejecute el
servidor.
Para usarlo desde .Net, no debes poner en el proyecto cliente una
Referencia de tipo COM, sino una Referencia a la DLL de .Net. Al ejecutarlo,
.Net ya se da cuenta de que estás usando un componente de
EnterpriseServices, y enruta la llamada a través del Proxy en lugar de
ejecutar directamente la DLL a la que pusiste la referencia.
Respuesta Responder a este mensaje
#2 AOG
16/05/2007 - 12:42 | Informe spam
Hola Alberto,

He estado haciendo la prueba en 2 PC clientes y mi PC de trabajo como
servidor todos con Win XP Professional
Tengo varios errores:

1º Cuando instalo el Proxy en el primer PC cliente no hay problema en la
instalación del proxy, pero cuando voy a instalar el Proxy en el 2º pc
cliente, me da el error Error registrando Com+ aplicación, contacte con su…
He le ido en un foro que hay que hacer (exportar) un Proxy por cada PC, lo
hago así ya no me da error a instalar en el 2º cliente. Pienso que es un
trabajo tediosa cuando se vaya a instalar en un cliente con 50 PC (hacer 50
Proxy e instalar 50 Proxy) , seguro que hay otra forma de hacer.

2º Error: Una ves instalado el Proxy en los PC clientes ha ejecutar el
ejecutable cliente que accede al Proxy me da un error: Acceso denegado.
(Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))

Configuración o propiedades de mis Componente Com+

En la pestaña Seguridad:
Exigir comprobación de acceso para esta aplicación, sin marcar
Realizar comprobaciones de acceso sólo… sin marcar
Realizar comprobaciones de acceso en los niveles… marcado
Aplicar directivas de restricciones… sin marcar
Niveles de autenticación para llamada:
Paquetado, Suplantar

En la pestaña Identidad:
Cuenta del sistema:
Usuarios interactivo: Usuario conectado… marcado
Este usuario, sin marcar

En la pestaña Activacion:
Aplicación de biblioteca, sin marcar
Aplicación de servidor, marcado
Ejecutar la aplicación como servicio NT, sin marcar
Usa Soap, sin marcar

en verdad ya he cambiado varias combinaciones de configuración pero me sigue
dando dicho error de acceso.

Un saludo.







"Alberto Poblacion" wrote:

"AOG" wrote in message
news:
> [...]
> también he oído de exportar los componentes COM+ de mi lógica de negocio
> en
> Proxy de aplicaciones e instalarlos en los clientes para acceder al
> servidor.

Ya que tienes los componentes dentro de COM+, lo que más sencillo te
resultaría es usar el Proxy de COM+, ya que así no tienes que programar nada
mientras que con Remoting o Web Services tendrías que añadir a tu código
toda la lógica necesaria para exponer la funcionalidad del componente.

Para usarlo, una vez que tengas la dll registrada en los servicios de
componentes (en el servidor), te vas a la herramienta de administración de
los Servicios de componentes en el panel de control, pulsas con el botón
derecho sobre el componente, y buscas la opción de Exportar. Sale un Wizard
que te da dos opciones: exportar todo el componente o exportar sólo el
proxy. En tu caso, te interesa exportar el Proxy. Esto genera un archivo de
instalación (.msi). Te lo llevas a los PCs y lo ejecutas, con lo cual te
crea el proxy en los PCs. Este proxy crea en el Registro las entradas
necesarias para que el PC se crea que tiene instalado un componente COM con
la funcionalidad de tu componente COM+, pero en realidad retransmite al
servidor todas las llamadas que se le hagan para que las ejecute el
servidor.
Para usarlo desde .Net, no debes poner en el proyecto cliente una
Referencia de tipo COM, sino una Referencia a la DLL de .Net. Al ejecutarlo,
..Net ya se da cuenta de que estás usando un componente de
EnterpriseServices, y enruta la llamada a través del Proxy en lugar de
ejecutar directamente la DLL a la que pusiste la referencia.



Respuesta Responder a este mensaje
#3 Alberto Poblacion
16/05/2007 - 13:46 | Informe spam
"AOG" wrote in message
news:
Cosas que veo:

En la pestaña Identidad:
Cuenta del sistema:
Usuarios interactivo: Usuario conectado… marcado
Este usuario, sin marcar



La opcion de "Usuario interactivo" solo vale cuando estás desarrollando
sobre el propio equipo. Pero cuando el equipo es un servidor y vas a llamar
desde fuera al componente, deberías marcar la opción "Este usuario..." y
seleccionar un usuario adecuado. De hecho, lo más normal será que en el
servidor no haya ningún usuario interactivo (se refiere al usuario que ha
hecho login en consola).

Otra cuestión más: Revisar los permisos de DCOM, a ver si el usuario que
está lanzando la aplicación desde el PC tiene permisos para ejecutar el
componente en el servidor.
Respuesta Responder a este mensaje
#4 AOG
16/05/2007 - 20:18 | Informe spam
... en "Este usuario..." he probado con con varios usuarios que están creados
en ambas maquinas,
sobre el tema de permisos DCOM, no se como se mira los permiso, ¿donde y
como?, te agradecería que me dieras algunas nociones.

Recibe un cordial saludo.

"Alberto Poblacion" wrote:

"AOG" wrote in message
news:
Cosas que veo:

> En la pestaña Identidad:
> Cuenta del sistema:
> Usuarios interactivo: Usuario conectado… marcado
> Este usuario, sin marcar

La opcion de "Usuario interactivo" solo vale cuando estás desarrollando
sobre el propio equipo. Pero cuando el equipo es un servidor y vas a llamar
desde fuera al componente, deberías marcar la opción "Este usuario..." y
seleccionar un usuario adecuado. De hecho, lo más normal será que en el
servidor no haya ningún usuario interactivo (se refiere al usuario que ha
hecho login en consola).

Otra cuestión más: Revisar los permisos de DCOM, a ver si el usuario que
está lanzando la aplicación desde el PC tiene permisos para ejecutar el
componente en el servidor.


Respuesta Responder a este mensaje
#5 Alberto Poblacion
16/05/2007 - 21:03 | Informe spam
"AOG" wrote in message
news:
... en "Este usuario..." he probado con con varios usuarios que están
creados
en ambas maquinas,
sobre el tema de permisos DCOM, no se como se mira los permiso, ¿donde y
como?, te agradecería que me dieras algunas nociones.



Ejecuta el DCOMCNFG, despliega Servicios de componentes -> equipos ->
MiPC, pincha con el botón derecho en MiPC y selecciona "Propiedades". En la
lengüeta de "Seguridad COM predeterminada", prueba a cambiarle los permisos.
Te recomiendo permitir todo para el usuario "Todos", y si así funcionan las
cosas, entonces ya pruebas a restringir los permisos hasta dejar solo los
necesarios.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida