2011-03-26 16 views
9

Utilizo alrededor de 15-20 DLL COM de C++ de 32 bits heredadas en mi aplicación web, algunas de estas DLL de 32 bits tienen dependencias de terceros que son DLL COM o nativas adicionales.DLL COM de legado de 32 bits en Windows Azure

Estoy considerando mudarme a Windows Azure, que entiendo es una plataforma de 64 bits. ¿Alguien puede aconsejar si mis archivos DLL de 32 bits funcionarán? (Sé que ahora es posible regsvr32 ellos).

Con una semana o dos de trabajo podría recompilar mis DLL a 64 bits, sin embargo, esto no es posible para las dependencias de terceros ya que no tengo la fuente.

Entiendo que Windows Azure usa 64 bits, entonces me pregunto cuál sería el mejor enfoque aquí para migrar mi aplicación.

es decir, ¿debo mover las DLL de 32 bits y confiar en WoW64? ¿Esto funcionará? No me importa un pequeño golpe de rendimiento.

¿O sería mejor recompilar mis aplicaciones de 64 bits y de alguna manera usar las DLL de 32 bits?

Respuesta

9

La respuesta es sí. Windows Azure es como un Windows Server 2008 x64 normal y tiene un subsistema de 32 bits. La única limitación aquí es que el rol web y el proceso de alojamiento de roles de trabajador es de 64 bits.

Con esto en mente, tendrá que hacer algún tipo de interoperabilidad entre el proceso de host de 64 bits y las DLL de 32 bits. Por supuesto, los objetos COM en proceso no funcionarán en este caso. Es difícil dar consejos más específicos aquí sin conocer los detalles:

  1. ¿Qué tipo de interfaces COM (compatible con automatización o no)?
  2. Qué tipo de referencias admiten (sólo en proceso o fuera de proceso)
  3. Si el cálculo de referencias funciona en todos los procesos, ¿tiene control sobre cómo registrar objetos (en proceso o fuera de proceso)?
  4. Cuán fácil es crear un contenedor gestionado para su objeto (como un ensamblado de interoperabilidad C++/CLI personalizado alojado por proceso de 32 bits y capaz de comunicarse con el host de 64 bits utilizando la automatización COM o WCF)

No sé si funcionaría, pero otra opción a considerar es intentar forzar el grupo de aplicaciones para que se ejecute como un proceso de 32 bits. Tendrá que ejecutar en modo IIS con plena confianza y ejecutar esto como su tarea de inicio de función:
appcmd conjunto de aplicaciones /apppool.nombre:/enable32BitAppOnWin64: true
Deberá determinar el nombre del grupo de aplicaciones que se usará su aplicación . Y de nuevo, no estoy seguro de que eso funcione en absoluto, pero supongo que vale la pena intentarlo, porque si funciona sería la opción más fácil para usted.

+1

¡Muchas gracias! El enable32BitAppOnWin64 está funcionando hasta el momento y debería ser mucho más fácil que convertir de 32 bits a 64 bits y organizar esas DLL de terceros. –

+0

Esto puede sonar como una forma de ejecutar aplicaciones antiguas, pero explícate que esto no es lo que Microsoft admite a largo plazo. WOW64 se convierte en una parte opcional de Windows Server (desde 2012) y ya no está instalado de manera predeterminada. Pure 64 bit es ahora una ruta que debes adoptar lo antes posible. –

2

Este laboratorio "Advanced Web and Worker Roles" en el Kit de capacitación de Windows Azure cubre el uso de un DLL heredado COM en Azure.

+3

Se movió a https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032483917&culture=en-US –

Cuestiones relacionadas