Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En este ejemplo se muestra el uso de la activación Just-in-time (JIT) y el agrupamiento de objetos en un entorno de .NET Framework. Una aplicación de servidor contiene un único objeto agrupado, que representa un archivo de registro. Varias aplicaciones cliente crean una instancia y llaman a la clase del objeto agrupado para mostrar que, con la activación JIT habilitada y un tamaño de agrupamiento máximo de un objeto, todas las llamadas al cliente se enrutan a través de una misma instancia de objeto. Se obtiene un archivo de registro único que documenta la actividad de COM+ y varias llamadas al cliente.
Para obtener información sobre el uso de los ejemplos, vea los siguientes temas:
Para generar el ejemplo desde el símbolo del sistema
Abra la ventana del símbolo del sistema y navegue hasta uno de los subdirectorios específicos de un lenguaje bajo el directorio Technologies\ComponentServices\ObjectPooling.
Escriba msbuild ObjectPoolingCS.sln o msbuild ObjectPoolingVB.sln, dependiendo del lenguaje de programación elegido, en la línea de comandos.
Para generar el ejemplo mediante Visual Studio
Abra el Explorador de Windows y navegue hasta uno de los subdirectorios específicos de un lenguaje bajo el directorio ObjectPooling.
Haga doble clic en el icono de ObjectPoolingCS.sln o de ObjectPoolingVB.sln, dependiendo del lenguaje de programación elegido, para abrir el archivo en Visual Studio.
En el menú Generar, haga clic en Generar solución. Los ensamblados OPDemoSvr.dll y OPDemo.exe se integran en el directorio \bin o \bin\Debug predeterminado.
Para registrar e instalar el ensamblado en la GAC
Navegue hasta el directorio que contiene el ensamblado generado.
Escriba regsvcs OPDemoSvr.dll en la línea de comandos para registrar el ensamblado.
Escriba gacutil -i OPDemoSvr.dll en la línea de comandos para instalar el ensamblado en la GAC.
Para ejecutar el ejemplo
Abra la ventana del símbolo del sistema o el Explorador de Windows y navegue hasta el directorio que contiene el nuevo archivo ejecutable.
En el submenú Herramientas administrativas del menú Todos los programas, abra la herramienta administrativa Servicios de componente.
Busque la aplicación OPDemoSvr COM+ expandiendo Servicios de componente\Equipos\Mi PC\COM+ Applications en el panel izquierdo del explorador COM+.
Busque el componente Microsoft.Samples.Technologies.ComponentServices.ObjectPooling.PooledLogFile expandiendo OPDemoSvr\Components. Haga clic con el botón secundario del mouse (ratón) en el componente PooledLogFile y seleccione Propiedades en el menú emergente. Haga clic en la ficha Activación y observe que la agrupación de objetos está habilitada.
Nota:El componente se configura con un tamaño de agrupación mínimo de cero y máximo de uno. Esto significa que, a lo sumo, existirá un objeto agrupado en cualquier momento, sin importar cuántos objetos crean instancias desde el código cliente. Estos atributos se establecen explícitamente en el código de ejemplo utilizando la clase ObjectPoolingAttribute. El tiempo de espera de creación de 60 segundos es un valor predeterminado que se aplica porque el código de ejemplo no solicita explícitamente un valor diferente.
Observe el contenido del campo de edición de construcción de objetos. Este campo contiene el nombre del archivo de registro basado en disco que creará el objeto agrupado del ejemplo. Su valor predeterminado es OPSvrLogCS.txt u OPSvrLogVB.txt. Puede cambiar el nombre o agregar información de la ruta de acceso al nombre de archivo (por ejemplo, C:\OPSvrLogCS.txt). Si no agrega información de la ruta de acceso al nombre de archivo, el archivo se crea en el directorio System32 actual.
Haga clic en Aceptar para cerrar el cuadro de diálogo de propiedades del componente OPDemoServer.
Inicie tres copias de OPDemo.exe en el Explorador de Windows o en la ventana del símbolo del sistema. Por ejemplo, en la ventana del símbolo del sistema, navegue hasta el directorio C:\Documents and Settings\nombre de usuario\Mis documentos\Samples\Technologies\ComponentServices\ObjectPooling\VB\ObjectPooling\bin y escriba opdemo.exe tres veces.
En cada aplicación cliente, haga clic en el botón Start Writing. Verá un asterisco parpadeante en la ventana cliente que indica que los datos se están escribiendo en el archivo de registro especificado en la cadena de construcción de objetos del componente OPDemoServer.
Después de que todas las aplicaciones cliente hayan empezado a escribir, espere varios segundos. A continuación, haga clic en el botón Stop Writing en cada aplicación cliente.
Busque y abra el archivo de registro en la aplicación de Notepad.exe u otro editor de texto. Debería ver una secuencia de instrucciones que indican llamadas de COM+ a IObjectControl. En medio de estas llamadas, verá mensajes escritos de cada aplicación cliente (identificados mediante su identificador de proceso), lo que demuestra que COM+ ha coordinado las llamadas a través de tres referencias de objeto frente a un solo objeto instanciado. Para obtener más información sobre la interfaz IObjectControl, vea los comentarios sobre el código de ejemplo y la plataforma SDK.
Nota:Para cambiar el nombre o eliminar el archivo de registro, debe salir de todas las instancias de la aplicación cliente y cerrar la aplicación OPDemoSvr en la herramienta administrativa Servicios de componente. Para ello, haga clic con el botón secundario en la aplicación COM+ en el panel izquierdo del explorador y seleccione Apagar en el menú emergente.
Requisitos
Plataformas: Windows 2000, Windows XP, Windows Server 2003
Versión de .NET Framework: 2.0, 1.1, 1.0
Comentarios
En este ejemplo se utiliza una cadena de construcción de objetos para especificar el nombre del archivo de registro y potencialmente su ruta de acceso completa. La activación de Just-in-time (JIT) es un servicio de COM+ que permite a los clientes crear y mantener una referencia de objeto durante un tiempo indefinido sin necesidad de que exista una instancia de objeto real subyacente. COM+ activa un objeto "Just in time" para un cliente cuando realiza una llamada a través de su referencia de objeto. Esta activación puede consistir en la creación de una nueva instancia de objeto o, cuando se utiliza en combinación con la agrupación de objetos de COM+, en pasar al llamante una referencia a un objeto agrupado. COM+ desactiva un objeto en función del bit de hechura en el contexto de objeto. Para los componentes que utilizan los servicios de .NET, se puede aplicar el atributo AutoCompleteAttribute a los métodos de clase, indicando que el objeto se puede desactivar al salir del método.
El componente C#, como se ve en la herramienta administrativa Servicios de componente, se denomina OPDemoServerCS.PooledLogFile. La versión de Visual Basic es OPDemoServerVB.PooledLogFile. Para más información sobre la creación binaria de ejemplos y los pasos del registro, revise los comentarios en los archivos de código fuente.
Nota: |
|---|
Debe utilizar Herramienta Caché de ensamblados global (Gacutil.exe) para instalar el ensamblado OPDemoSvr.dll en la caché de ensamblados global antes de ejecutar el ejemplo. Gacutil.exe se encuentra en el directorio SDK \<número de versión>\Bin. |
La agrupación de objetos de COM+ es un servicio que mantendrá un grupo de objetos activo, listos para que los utilice el cliente que solicite un componente configurado para la agrupación. El grupo se puede configurar administrativamente o utilizando el atributo ObjectPoolingAttribute. Los atributos de grupo incluyen un tamaño mínimo y máximo de grupo y un valor de tiempo de espera de solicitud de creación de objetos.
Los componentes habilitados para la activación de JIT y la agrupación de objetos pueden controlar cómo se volverán a utilizar implementando la interfaz IObjectControl. Los métodos IObjectControl sólo son llamados por COM+ para indicar eventos clave en el proceso de activación o desactivación del objeto o para determinar si el objeto se puede devolver al grupo de objetos. Este ejemplo sólo implementa IObjectControl para mostrar la interfaz que está utilizando COM+. Para obtener más información sobre la activación de JIT y la agrupación de objetos, consulte la documentación de la plataforma SDK.
Vea también
Referencia
Herramienta Caché de ensamblados global (Gacutil.exe)