Componente transaccional en .NET

23/03/2005 - 16:43 por Jaimito | Informe spam
Hola compañeros...

He creado una clase que hereda de la clase ServicedComponent del espacio de
nombres System.EnterpriseServices. Esta clase es prácticamente una fábrica de
transacciones que luego pueden ser usadas por otros componentes para
empaquetar todas sus operaciones en una transacción.

Bueno, tengo otra clase que hace uso de la fábrica de transacciones para
ejecutar sus operaciones en un contexto transaccional.

Ya tengo generados los assemblies (con strong name) de cada una de estas
clases.

La pregunta radica en:

Al pasar estos assemblies al servidor de PRODUCCIÓN cuál clase debo meter en
el MTS? sólo la fábrica de transacciones? ambos?

Cómo hago para meter una clase en el MTS? hay que registrar los assemblies
DLL's como se hacía con las antiguas DLL's?

En fin agradezco la asesoría para utilizar estos assemblies en PRODUCCIÓN.

Gracias...

Preguntas similare

Leer las respuestas

#1 A.Poblacion
23/03/2005 - 17:32 | Informe spam
"Jaimito" wrote in message
news:
Hola compañeros...

He creado una clase que hereda de la clase ServicedComponent del espacio


de
nombres System.EnterpriseServices. Esta clase es prácticamente una fábrica


de
transacciones que luego pueden ser usadas por otros componentes para
empaquetar todas sus operaciones en una transacción.

Bueno, tengo otra clase que hace uso de la fábrica de transacciones para
ejecutar sus operaciones en un contexto transaccional.

Ya tengo generados los assemblies (con strong name) de cada una de estas
clases.

La pregunta radica en:

Al pasar estos assemblies al servidor de PRODUCCIÓN cuál clase debo meter


en
el MTS? sólo la fábrica de transacciones? ambos?

Cómo hago para meter una clase en el MTS? hay que registrar los assemblies
DLL's como se hacía con las antiguas DLL's?



- Las clases que hay que registrar en MTS son las que hereden de
ServicedComponent.
- Para registrarlas, se recomienda que primero las instales en el GAC y
luego ejecutes un "regsvcs miassembly.dll", aunque no es imprescindible
porque los componentes COM+ desarrollados con .Net se autoregistran la
primera vez que los llamas con la condición de que el usuario que los
ejecuta sea Administrador. El comando REGSVCS.EXE está en el directorio del
Framework.
- No te olvides de ponerles los atributos <Guid(...)> porque sino cada
vez que registres los assemblies te generará una copia nueva en MTS (los
distingue por el Guid y no por el nombre, y si no lo pones expresamente
genera un valor aleatorio).
- No se te ocurra tratar de registrarlas como las antiguas (con
regsvr32) porque entonces no funcionan.
Respuesta Responder a este mensaje
#2 Jaimito
23/03/2005 - 18:51 | Informe spam
Gracias compañero...

Cuando comentas lo del GUID te refieres al atributo que se encuentra en el
archivo AssemblyInfo.vb?

Estoy intentando crear un instalador para la DLL que hereda del
ServicedComponent, al cual le indico que tome el archivo generado por el
proyecto de la DLL, hasta aquí todo bien; pero me gustaría que después de
instalar la DLL lo inserte en el GAC ¿cómo le digo eso al instalador?

Gracias...

"A.Poblacion" wrote:

- Las clases que hay que registrar en MTS son las que hereden de
ServicedComponent.
- Para registrarlas, se recomienda que primero las instales en el GAC y
luego ejecutes un "regsvcs miassembly.dll", aunque no es imprescindible
porque los componentes COM+ desarrollados con .Net se autoregistran la
primera vez que los llamas con la condición de que el usuario que los
ejecuta sea Administrador. El comando REGSVCS.EXE está en el directorio del
Framework.
- No te olvides de ponerles los atributos <Guid(...)> porque sino cada
vez que registres los assemblies te generará una copia nueva en MTS (los
distingue por el Guid y no por el nombre, y si no lo pones expresamente
genera un valor aleatorio).
- No se te ocurra tratar de registrarlas como las antiguas (con
regsvr32) porque entonces no funcionan.
Respuesta Responder a este mensaje
#3 A.Poblacion
23/03/2005 - 19:24 | Informe spam
"Jaimito" wrote in message
news:
Cuando comentas lo del GUID te refieres al atributo que se encuentra en el
archivo AssemblyInfo.vb?



No solo a ese. Es conveniente también asignar un Guid a cada una de las
clases e interfaces que publiques en COM+.

Estoy intentando crear un instalador para la DLL que hereda del
ServicedComponent, al cual le indico que tome el archivo generado por el
proyecto de la DLL, hasta aquí todo bien; pero me gustaría que después de
instalar la DLL lo inserte en el GAC ¿cómo le digo eso al instalador?



Si lo quieres por linea de comandos, hay que ejecutar "gacutil -i
nombre.dll".
Si usas el instalador que te crea Visual Studio, tienes que desplegar el
menu de contexto en la lista de carpetas del "file system editor",
seleccionar "Add Special Folder" y luego "Global Assembly Cache", y agregar
a esa carpeta tu dll.
Respuesta Responder a este mensaje
#4 Jaimito
23/03/2005 - 20:45 | Informe spam
Gracias nuevamente, pero no sé como hacer realmente lo del GUID a cada una de
las clases e interfaces.

Puedes decirme cómo lo hago? quién o de dónde saco los GUID?

Gracias.
"A.Poblacion" wrote:

No solo a ese. Es conveniente también asignar un Guid a cada una de las
clases e interfaces que publiques en COM+.

Si lo quieres por linea de comandos, hay que ejecutar "gacutil -i
nombre.dll".
Si usas el instalador que te crea Visual Studio, tienes que desplegar el
menu de contexto en la lista de carpetas del "file system editor",
seleccionar "Add Special Folder" y luego "Global Assembly Cache", y agregar
a esa carpeta tu dll.
Respuesta Responder a este mensaje
#5 A.Poblacion
23/03/2005 - 21:21 | Informe spam
"Jaimito" wrote in message
news:
Gracias nuevamente, pero no sé como hacer realmente lo del GUID a cada una


de
las clases e interfaces.

Puedes decirme cómo lo hago? quién o de dónde saco los GUID?



Si no quieres usarlos, no es obligatorio, pero facilitan el uso de tus
componentes al tener un Guid fijo y conocido en lugar de uno aleatorio.
Se indica metiéndolo en un atributo por delante de tu clase, por ejemplo:
<Guid("41506772-C88A-4125-A5FD-EDB16A144B87"),
Transaction(TransactionOption.Supported), JustInTimeActivation()> _
Public Class MiClase
...
End Class

El valor que metes dentro lo puedes generar desde el Visual Studio,
seleccionando en el menu Herramientas -> Crear GUID, y elegir la opción
"Registry Format". Con el botón Copy lo copias al portapapeles, y luego lo
pegas en tu código fuente. Tendrás que borrar las llaves "{...}" que se
generan con este método.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida