COM+ vs .NET

20/11/2003 - 20:01 por l-t | Informe spam
Hola,
Desarrollé mi priemer componente .NET usando System.EnterpriseServices, System.Reflection, ServicedComponent (manejo de tranasacciones en el código y todo)... etc (uds. saben), éste trabaja muy bien. Cuando agrego una referencia a ese ensamblado (.DLL) desde mi proyecto de ASP.NET no tengo ningún problema.

Para publicar en COM+ utilicé las herramientas sn.xe, gacutil.exe y RegSvcs.exe como todos sabe hacerlo.

Todo bien excepto por el WARNING en el mensaje del RegSvcs.exe que aparece:

(mensaje)

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

WARNING: The assembly does not declare an ApplicationAccessControl Attribute. Application security will be enabled by default.
Installed Assembly:
Assembly: C:\VSProjects\clsProbe\bin\clsProbe.dll
Application: MathFunctions
TypeLib: C:\VSProjects\clsProbe\bin\clsProbe.tlb


Bueno, he probado éste componente usando VB 6.0 y trabaja perfectamente, pero tengo problemas en la siguiente situación:

Estoy trabajando con el IDE de VS.NET 2003 con mi aplicacion ASP.NET (VB) en la que deseo usar el componente servido en COM+, agrego la referencia a ese componente que cree buscandolo por el tab COM (recordar: NET|COM|Projects), en ese momento aparece el problema, un mensaj de error es mostrado:

"A reference to 'NombreDelComponente' could not be added Converting the type library to a .NET assembly failed. Type library NombreDelComponente was exported from a CLR assembly and can not be re-imported as a CLR assembly."

Mis dudas son:

Cuando desarrollo un componente para ser servido en COM+,
1. ¿Cómo puedo usarlo en mi WebForm?
2. Cuando desarrolo mi componente usando System.EnterpriseServices (manejando tranasaciones y todo), luago lo tomo y lo publico en COM+ Services, ¿es necesario buscar como sité anteriormente entre los componentes COM ese comoponente que hice y hacer una referencia a él?,
en otras palabras,
¿Cómo .NET Framework esas clases para hacer tranasaciones?, ¿acaso .NET Framework hará el trabajo que hace COM+? y por eso es que la referencia directa al assembly (.DLL) me funciona y no al COM?

Como pueden notar soy un nuevo al respecto, pero tengo esas dudas, me perece que el .NET Framework hace el trabajo del COM+, pero no me parece tampoo porque donde definiría roles y vería estadísticas y eventos, etc... Lo más probable es que esté haciendo algo mal. Si desean, puedo publicar el código y paso a paso cómo lo registro.

Gracias adelantadas,

l-t
 

Leer las respuestas

#1 Ricardo Gonzalez
21/11/2003 - 12:38 | Informe spam
Hola l-t,

La advertencia de seguridad se presenta unicamente en el framework 1.1
porque en el framework 1.0 por defecto no se incluye ese atributo de
seguridad en el assembly. El problema de la referencia es dado por lo
siguiente:

App ASP.NET --> ref wrapper a COM tlb --> COM tlb wrapper de assembly
.NET > assembly .NET

le estas haciendo un wrapper a un wrapper.

debes referenciar el componente .NET y no el tlb generado para com interop

Ricardo González Vargas.
MVP

"l-t" wrote in message
news:
Hola,
Desarrollé mi priemer componente .NET usando System.EnterpriseServices,


System.Reflection, ServicedComponent (manejo de tranasacciones en el código
y todo)... etc (uds. saben), éste trabaja muy bien. Cuando agrego una
referencia a ese ensamblado (.DLL) desde mi proyecto de ASP.NET no tengo
ningún problema.

Para publicar en COM+ utilicé las herramientas sn.xe, gacutil.exe y


RegSvcs.exe como todos sabe hacerlo.

Todo bien excepto por el WARNING en el mensaje del RegSvcs.exe que


aparece:

(mensaje)

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

WARNING: The assembly does not declare an ApplicationAccessControl


Attribute. Application security will be enabled by default.
Installed Assembly:
Assembly: C:\VSProjects\clsProbe\bin\clsProbe.dll
Application: MathFunctions
TypeLib: C:\VSProjects\clsProbe\bin\clsProbe.tlb


Bueno, he probado éste componente usando VB 6.0 y trabaja perfectamente,


pero tengo problemas en la siguiente situación:

Estoy trabajando con el IDE de VS.NET 2003 con mi aplicacion ASP.NET (VB)


en la que deseo usar el componente servido en COM+, agrego la referencia a
ese componente que cree buscandolo por el tab COM (recordar:
NET|COM|Projects), en ese momento aparece el problema, un mensaj de error es
mostrado:

"A reference to 'NombreDelComponente' could not be added Converting the


type library to a .NET assembly failed. Type library NombreDelComponente was
exported from a CLR assembly and can not be re-imported as a CLR assembly."

Mis dudas son:

Cuando desarrollo un componente para ser servido en COM+,
1. ¿Cómo puedo usarlo en mi WebForm?
2. Cuando desarrolo mi componente usando System.EnterpriseServices


(manejando tranasaciones y todo), luago lo tomo y lo publico en COM+
Services, ¿es necesario buscar como sité anteriormente entre los componentes
COM ese comoponente que hice y hacer una referencia a él?,
en otras palabras,
¿Cómo .NET Framework esas clases para hacer tranasaciones?, ¿acaso .NET


Framework hará el trabajo que hace COM+? y por eso es que la referencia
directa al assembly (.DLL) me funciona y no al COM?

Como pueden notar soy un nuevo al respecto, pero tengo esas dudas, me


perece que el .NET Framework hace el trabajo del COM+, pero no me parece
tampoo porque donde definiría roles y vería estadísticas y eventos, etc...
Lo más probable es que esté haciendo algo mal. Si desean, puedo publicar el
código y paso a paso cómo lo registro.

Gracias adelantadas,

l-t


Preguntas similares