Pregunta Com+

21/12/2007 - 17:56 por Napoleon | Informe spam
Saludos,
Tengo una duda , espero me puedan ayudar..
Tengo un proyecto en VB.net y c# 2005, un com+ esta diseñado en c#,
lo registro y lo incluyo en los servicios com+ del servidor,,
la inquietud que tengo es que los proyectos desarrollados en VB, usan el com
usando la sintaxis
Dim t As Type = Type.GetTypeFromProgID("ServicedCOM.SimpleComponent", True)
Dim obTraslados As Object = Activator.CreateInstance(t)
y sin necesidad de hacer refencia al proy com...y funciona perfectamente,,

el problema surge en C#, no puedo realizar algo similar,, y lo que tengo que
hacer es una referencia al proyecto com y ahi puedo hacer uso del mismo...
Mi pregusnta es,, para usar el com+ en c# debe ser simpre refenciado al com y
asi su respectivo uso, o existe otro metodo,, o que estoy haciendo mal...

De antemano gracias por su tiempo y gran ayuda.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
21/12/2007 - 19:29 | Informe spam
"Napoleon" wrote in message
news:
Tengo una duda , espero me puedan ayudar..
Tengo un proyecto en VB.net y c# 2005, un com+ esta diseñado en c#,
lo registro y lo incluyo en los servicios com+ del servidor,,
la inquietud que tengo es que los proyectos desarrollados en VB, usan el
com
usando la sintaxis
Dim t As Type = Type.GetTypeFromProgID("ServicedCOM.SimpleComponent",
True)
Dim obTraslados As Object = Activator.CreateInstance(t)
y sin necesidad de hacer refencia al proy com...y funciona perfectamente,,

el problema surge en C#, no puedo realizar algo similar,, y lo que tengo
que
hacer es una referencia al proyecto com y ahi puedo hacer uso del mismo...
Mi pregusnta es,, para usar el com+ en c# debe ser simpre refenciado al
com y
asi su respectivo uso, o existe otro metodo,, o que estoy haciendo mal...



En C# se puede crear el Objeto exactamente igual que en Visual Basic, lo que
pasa es que luego, cuando vayas a llamar a sus propiedades y métodos no
podrás hacerlo directamente como en VB desde el Object, porque C# no te
admite la sintaxis de "late binding" (ni el VB tampoco si le pones el
"Option Strict On", cosa que en general siempre deberías hacer con una
posible excepción que es precisamente esta (para usar "late binding")). Si
quieres hacer lo mismo con C# tendrás que usar Reflexion, con lo cual el
código fuente te quedará bastante engorroso (aunque se ejecutará igual que
el de VB).

Lo ideal, tanto en C# como en VB, es poner la Referencia al proyecto com+ y
usar "early binding" en ambos. En ambos casos, en tiempo de ejecución, se
pasa a través de los Servicios de Componentes, aunque hayas puesto en el
Proyecto una Referencia directa a la librería de clases.
Respuesta Responder a este mensaje
#2 Napoleon
21/12/2007 - 23:16 | Informe spam
Gracias por responder..
conrealcion al mismo punto,
al momento que genero el com+ en el servidor, saco un instalador del com ,
de tipo proxy el cual ira instalado en el cliente,, y como te comentaba en vb
no tengo problema,,pues defino
Dim t As Type = Type.GetTypeFromProgID("com+","server contiene com server")
y con esto se intancia el objeto, pero el problema surge en c# pues no
conosco el metodo para poder generar el objeto de este com+ proxy y definir
de que servidor deseo crear el objeto.

antes q nada agradesco tu tiempo,,

Gracias..






"Alberto Poblacion" wrote:

"Napoleon" wrote in message
news:
> Tengo una duda , espero me puedan ayudar..
> Tengo un proyecto en VB.net y c# 2005, un com+ esta diseñado en c#,
> lo registro y lo incluyo en los servicios com+ del servidor,,
> la inquietud que tengo es que los proyectos desarrollados en VB, usan el
> com
> usando la sintaxis
> Dim t As Type = Type.GetTypeFromProgID("ServicedCOM.SimpleComponent",
> True)
> Dim obTraslados As Object = Activator.CreateInstance(t)
> y sin necesidad de hacer refencia al proy com...y funciona perfectamente,,
>
> el problema surge en C#, no puedo realizar algo similar,, y lo que tengo
> que
> hacer es una referencia al proyecto com y ahi puedo hacer uso del mismo...
> Mi pregusnta es,, para usar el com+ en c# debe ser simpre refenciado al
> com y
> asi su respectivo uso, o existe otro metodo,, o que estoy haciendo mal...

En C# se puede crear el Objeto exactamente igual que en Visual Basic, lo que
pasa es que luego, cuando vayas a llamar a sus propiedades y métodos no
podrás hacerlo directamente como en VB desde el Object, porque C# no te
admite la sintaxis de "late binding" (ni el VB tampoco si le pones el
"Option Strict On", cosa que en general siempre deberías hacer con una
posible excepción que es precisamente esta (para usar "late binding")). Si
quieres hacer lo mismo con C# tendrás que usar Reflexion, con lo cual el
código fuente te quedará bastante engorroso (aunque se ejecutará igual que
el de VB).

Lo ideal, tanto en C# como en VB, es poner la Referencia al proyecto com+ y
usar "early binding" en ambos. En ambos casos, en tiempo de ejecución, se
pasa a través de los Servicios de Componentes, aunque hayas puesto en el
Proyecto una Referencia directa a la librería de clases.



Respuesta Responder a este mensaje
#3 Alberto Poblacion
22/12/2007 - 11:04 | Informe spam
"Napoleon" wrote in message
news:
conrealcion al mismo punto,
al momento que genero el com+ en el servidor, saco un instalador del com ,
de tipo proxy el cual ira instalado en el cliente,, y como te comentaba en
vb
no tengo problema,,pues defino
Dim t As Type = Type.GetTypeFromProgID("com+","server contiene com
server")
y con esto se intancia el objeto, pero el problema surge en c# pues no
conosco el metodo para poder generar el objeto de este com+ proxy y
definir
de que servidor deseo crear el objeto.



No hace falta generar el objeto con ninguna instrucción. Basta con que
hagas un "new" de la clase si lo configuras todo asi:
1) En la máquina de desarrollo tienes los dos proyectos (el Exe en C# y
la Dll que instalas en COM+). Desde el Exe pones la referencia a la Dll y te
compila sin problemas.
2) En el Servidor, instalas la DLL en COM+, y desde la herramienta de
administración de los servicios de componentes generas el .msi con el proxy.
3) En el Cliente, instalas el .msi del proxy, y copias el EXE que en
tiempo de desarrollo tenía la referencia a la DLL. No hay que hacer más, con
eso el exe va al proxy y a través del proxy conecta con el servidor donde se
generó éste, cada vez que haces un "new" de una de las clases que están en
esa dll.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida