2011-11-08 17 views

Respuesta

22

Esta es una respuesta de tiempo de espera para la pregunta. pero déjame explicarte las diferencias de las que soy consciente.

Para comprender esto, debe invocar las diferencias entre una aplicación COM y COM +.

Registre sus tipos como COM - crea un objeto de la demanda cada vez que un código intenta inicializar el objeto

Registro de sus tipos como aplicación COM + - crea un objeto, es compatible con la agrupación de objetos, soporta transacciones, soportes mejorado Windows seguridad y más.

Para comprender la puesta en común, Tomo prestado una respuesta de http://www.tek-tips.com/viewthread.cfm?qid=116249

COM + 'principal método de añadir escalabilidad y el rendimiento se hace a través de la agrupación de objetos s. Desafortunadamente, esto requiere un componente de subproceso libre, que es algo que VB6 no puede hacer. Pero ... .NET (cualquier idioma) y C++ pueden.

Lo que hace la agrupación de objetos es decirle a MTS/COM + que cree un conjunto de objetos disponibles, desde un mínimo que se crea cuando se inicia COM +, hasta un máximo (que no sé si es un máximo difícil, o es flexible). Lo que hace la agrupación para usted es proporcionarle a la persona que llama un objeto preinicializado. Esto es mucho más rápido que esperar a que se cree un objeto (especialmente a través de una red). La persona que llama se conecta al objeto, realiza llamadas a métodos y se desconecta. El objeto vuelve a la piscina.

Requiere un cambio fundamental en la arquitectura del programa. Antes de COM +, todos abrirían una conexión a una base de datos y la dejarían abierta mientras dure la aplicación. Esto estuvo bien cuando la población de usuarios era < 100, ya que la carga en el servidor era manejable (cada conexión ocupa RAM). Pero para grandes poblaciones o cantidades desconocidas de usuarios (por ejemplo, usuarios de Internet), el servidor de la base de datos se sobrecarga rápidamente. Alguien se dio cuenta de que cada usuario transaccional estaba haciendo un trabajo real un pequeño porcentaje del tiempo, el resto del tiempo estaban inactivos.

Por lo tanto, sus programas deben hacer una conexión, realizar una solicitud, obtener los resultados y luego desconectarse (esto también se aplica a objetos que no son de base de datos). Esto también implica que la aplicación sea apátrida (el estado del programa no se mantiene entre solicitudes). Porque ... el objeto que estás usando actualmente pertenecía a otra persona hace 200 milisegundos. Y cuando termine de usar el objeto, otro usuario lo usará después de usted. Por lo tanto, los objetos no pueden guardar información; deben ser solo códigos.

regasm - Registra a .net tipos de ensamblaje como COM. Lo que esto significa es que el regasm selecciona los tipos expuestos públicamente de su ensamblado .Net y luego escribe las entradas de registro apropiadas en HKCR ....; (que es la forma en que funciona regsvr32).

  • regasm puede generar un archivo de TLB para usted (al igual que Tlbexp.exe)
  • regasm puede código base de su ensamblaje .Net. Es decir, si no tiene su ensamblado .Net en el GAC, puede codificar el COM en la ubicación del archivo donde está presente el ensamblado .Net. Y desde aquí el COM Marshaller elegirá ejecutar el ensamblado con CLR.
  • regasm le permite crear un archivo .reg haciendo doble clic en el cual puede actualizar las entradas del registro. usted tiene que asegurarse de que el ensamblado de .NET se instala en el GAC becase/interruptor regfile en regasm no le permite a/código base (si lo hace base de código, entonces no tiene sentido)

regsvcs - Crea una aplicación COM + Aplicación desde un ensamblado de .Net. Lo que esto significa es que los regsvcs seleccionan los tipos expuestos públicamente de su ensamblado .Net y además de escribir las entradas de registro apropiadas, también crean una aplicación COM + que puede administrar a través de la consola de Componet Services Manager (% systemroot% \ system32 \ comexp.msc)

  • regsvcs crea una aplicación COM + en base a la información transmitida a la misma desde la línea de comandos, o en base a la información de la elección entre los DLL .Net.

  • regsvcs le permite combinar sus tipos COM + a una aplicación COM + existente. Eche un vistazo a comexp.msc para atravesar y comprender una aplicación COM + y COmponets que maneja un COM +.

Si se escribe una clase C# con ComVisible (verdadero) -> Los tipos comunes de esta clase (Foo) está listo para ser registrado con un regasm para COM.

// Set the COM visibility attribute to true 
[ComVisibleAttribute(true)] 
public class Foo{....} 

Si se escribe una clase C# con ComVisible (verdadero), que hereda de System.EnterpriseServices.ServicedComponent (y más ajuste por supuesto ..) -> Esta clase (FooBar) está listo para ser registrado como una aplicación COM +.

// Set the COM visibility attribute to true 
[ComVisibleAttribute(true)] 
    public class FooBar: System.EnterpriseServices.ServicedComponent{.....} 

Creando una aplicación COM + desde .Net - Puede comenzar aquí. Recuerde que COM + proporciona administración avanzada de transacciones para un objeto expuesto a COM.

http://support.microsoft.com/kb/306296 http://my.execpc.com/~gopalan/dotnet/complus/complus.net_accountmanager.html http://www.codeproject.com/Articles/3845/Creating-COM-Objects-using-EnterpriseServices-in-N

+2

Esta es la mejor descripción de la diferencia entre '' regasm' y regsvcs'. ¡Gracias por eso! :) –

Cuestiones relacionadas