Share via


Asignaciones de adaptador

Actualización: noviembre 2007

Un adaptador define un conjunto de características para un dispositivo solicitante concreto. Supongamos que está diseñando un dispositivo nuevo basado en Palm Pilot, y desea efectuar modificaciones y mejoras de hardware. Para desarrollar páginas Web de ASP.NET Mobile para el dispositivo nuevo, necesita un adaptador de dispositivo personalizado que utilice en su totalidad el conjunto de características mejoradas de hardware.

En el archivo Web.config, asigne cada uno de los controles móviles al adaptador personalizado que ha creado para este fin. No sólo puede especificar conjuntos de adaptadores de dispositivos individuales para la personalización específica de dispositivos, sino que también puede efectuar más personalizaciones heredando un conjunto de adaptadores de dispositivos de otro conjunto, personalizando de este modo el comportamiento de combinaciones específicas de dispositivos/controles.

En el archivo Web.config

Para asignar controles móviles y adaptadores de dispositivos, puede configurarlos de forma declarativa en la sección <mobileControls> del elemento <system.web>. Puede hacerlo en el archivo Web.config para que los cambios afecten a una aplicación determinada. Los valores de configuración en el nivel de servidor están en el archivo Machine.config para la instalación de .NET Framework, en el directorio de Microsoft Windows. En los archivos de configuración puede especificar los conjuntos de adaptadores individuales que se seleccionan en tiempo de ejecución.

Nota:

Si no hay una sección <mobileControls> en el archivo Web.config, puede agregarla en cualquier parte como un elemento secundario del elemento <system.web>.

Declarar un conjunto de adaptadores

Un conjunto de adaptadores de dispositivos es el mecanismo de asignación existente en el archivo Web.config. Para cada control que utiliza un adaptador de dispositivos personalizado, debe incluir la información siguiente dentro del conjunto de adaptadores de dispositivos:

  • una clase de predicado

  • un método de predicado

  • un adaptador de página

  • el nombre del control y el adaptador de dispositivo asociado

Para agregar un conjunto de adaptadores de dispositivos al archivo Web.config de la aplicación, debe declarar un conjunto de adaptadores de dispositivos utilizando un elemento <device> en la sección <mobileControls> del archivo Web.config, como se muestra en el ejemplo de código siguiente.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <!-- Other settings previously specified reside here. -->
    <mobileControls>
      <device name="myDeviceAdapter"
        predicateClass="fullyQualifiedAdapterClass"
        predicateMethod="specificMethodToInvoke"
        pageAdapter="fullyQualifiedPageAdapter">
          <control name="fullyQualifiedControl"
            adapter="fullyQualifiedPageAdapter"/>
          <!-- Add additional control names here. -->
      </device>
    </mobileControls>
  </system.web>
</configuration>

Definir atributos de dispositivo

Como se mostraba en el ejemplo de código anterior, debe incluir en cada conjunto de adaptadores los atributos que se definen en la tabla siguiente.

Término

Definición

name

Identifica de manera única el conjunto de adaptadores de dispositivos.

InheritsFrom

(Opcional) Indica que el conjunto de adaptadores de dispositivos actual se hereda de otro conjunto, que se identifica por su nombre. El conjunto de adaptadores de dispositivos primario puede residir en cualquier lugar de la misma sección <mobileControls> del mismo archivo Web.config o puede residir en un archivo Web.config primario.

PredicateClassy PredicateMethod

Señalan a un método estático al que se llama para evaluar si el conjunto de adaptadores es apropiado para el dispositivo actual. El método toma un único parámetro de tipo HttpContext y devuelve un valor booleano que indica si el conjunto de adaptadores es aplicable. El método puede examinar funciones del dispositivo de destino utilizando la propiedad Browser del objeto HttpContext proporcionado, que devuelve un objeto MobileCapabilities.

PageAdapter

Identifica la clase de adaptador de página para el conjunto de dispositivos (un tipo que implementa la interfaz IPageAdapter).

Si una sección <device> contiene el atributo InheritsFrom, no es necesario declarar el atributo PredicateClass, PredicateMethod o PageAdapter. En su lugar, el conjunto de adaptadores de dispositivos puede heredarlos de la definición del conjunto de adaptadores de dispositivos primario.

Nota:

Aunque estos atributos no son obligatorios, se pueden definir si lo requiere la aplicación.

Puede colocar cualquier número de elementos <control> dentro de un conjunto de adaptadores. Cada uno proporciona una asignación de adaptador de control concreta (una clase que implementa IControlAdapter). Un elemento <control> tiene dos atributos: un atributo name que especifica la clase del control que se va a asignar y un atributo adapter que especifica la clase del adaptador de control.

Consideraciones sobre asignación

Aunque hay una asignación unívoca entre control y adaptador, no es necesario escribir una clase de adaptador de control independiente para cada combinación control/dispositivo. En general, si un control móvil nuevo utiliza la herencia o la composición simple y no requiere resultados personalizados, tampoco requiere un adaptador de control. Considere las alternativas siguientes:

  • Un adaptador o un conjunto de adaptadores se pueden aplicar a un tipo general de dispositivo. Por ejemplo, todos los dispositivos de HTML 3.2 pueden tener el mismo conjunto de adaptadores de dispositivos. Sin embargo, para algunos controles, podría haber adaptadores de dispositivos más especializados para dispositivos más específicos. Por ejemplo, puede escribir un adaptador de dispositivo de control Calendar que sea especial para Pocket PC.

  • Un adaptador de control puede estar asociado a una clase base de control, en lugar de estarlo a controles individuales. Por ejemplo, un adaptador único puede ser suficiente para representar todos los controles del validador que se heredan de la clase BaseValidator.

  • Es posible escribir controles móviles totalmente funcionales que no utilicen adaptadores de dispositivos. Sin embargo, es muy recomendable que los desarrolladores escriban adaptadores de dispositivos cuando sea procedente, porque gran parte de la flexibilidad de la arquitectura se pierde si algún control individual de la página no utiliza adaptadores de dispositivos.

  • Los controles nuevos creados mediante la extensión de controles existentes (controles de usuario, controles compuestos y controles creados mediante herencia y que contienen controles existentes) no necesitan adaptadores de dispositivos, porque se utilizan los adaptadores de los controles contenidos.

Comprender el proceso de selección de adaptadores de dispositivos

El proceso siguiente describe cómo se selecciona un conjunto de adaptadores de dispositivos para una página:

  1. ASP.NET recorre en iteración la colección de conjuntos de adaptadores de dispositivos definidos en las secciones <device> del archivo Web.config. Primero se examina el archivo Web.config más próximo a la página solicitada y, después, cada archivo Web.config que ocupe una posición superior en la jerarquía de configuración. El archivo Machine.config se examina en último lugar.

  2. El predicado asociado para cada conjunto de adaptadores de dispositivos se evalúa mediante los atributos predicateClass y predicateMethod.

  3. Cada predicado utiliza el objeto HttpContext proporcionado para examinar las funciones del dispositivo de destino, y devuelve true o false para indicar si los conjuntos de adaptadores de dispositivos son aplicables.

  4. En el momento en que un predicado devuelve true, ese conjunto de adaptadores de dispositivos se considera seleccionado. Llegados a este punto, el sistema utiliza el atributo pageAdapter del elemento <device> para determinar de qué clase se ha de crear una instancia para crear el adaptador.

  5. Si ninguno de los predicados del archivo Web.config devuelve true, el proceso se repite para los conjuntos de adaptadores de dispositivos del archivo Web.config del directorio primario.

Para cada control, se llama a la página con el fin de proporcionar un adaptador de dispositivo para el tipo de control especificado. ASP.NET sigue los pasos que se indican a continuación para seleccionar el adaptador de control apropiado:

  1. El conjunto de adaptadores de dispositivos utilizado es el mismo que se selecciona para el adaptador de dispositivo de la página.

  2. Si el conjunto de adaptadores de dispositivos contiene un elemento <control> que asigna directamente la clase de control a una clase de adaptador de dispositivo, se crea una instancia de la clase de adaptador especificada.

  3. Si el conjunto de adaptadores de dispositivos no se puede asignar directamente, se crea una instancia nueva de la clase base para el control.

    Este proceso se repite hasta que se llega a la clase base Control. Si, en cualquier momento, se encuentra una asignación directa, se crea una instancia nueva de la clase de adaptador de dispositivo especificada.

  4. Si no se encuentra todavía una asignación, y el conjunto de adaptadores de dispositivos se hereda de otro conjunto de adaptadores, los pasos para la selección de adaptador se repiten para el conjunto de adaptadores primario. Este proceso continúa ascendiendo en la jerarquía de conjuntos de adaptadores hasta que se encuentra una asignación.

Los resultados de la búsqueda se almacenan en caché, de modo que la búsqueda especificada necesita realizarse sólo una vez para el primer control relevante. El comportamiento descrito más arriba se conserva.

Vea también

Otros recursos

Agregar nuevos adaptadores de dispositivos y compatibilidad con dispositivos