Compartir a través de


Ciclo de vida de una solicitud de Silverlight a una aplicación web

Última modificación: miércoles, 07 de abril de 2010

Hace referencia a: SharePoint Foundation 2010

En este artículo
Escenario de ejemplo
Secuencia de eventos
Ilustración del ciclo de vida de la solicitud

En este tema se proporciona información general sobre los eventos y acciones principales que ocurren cuando una aplicación de Silverlight que se encuentra ubicada en un dominio diferente al de la aplicación web de SharePoint Foundation pero está expuesta a usuarios de SharePoint Foundation en un elemento web tiene acceso a datos de la aplicación web. Debido a que la aplicación de Silverlight es una aplicación externa, en este tema también se proporciona un ejemplo del funcionamiento de Acceso a datos entre dominios de Silverlight.

Escenario de ejemplo

El ciclo de vida de una solicitud de Silverlight a SharePoint Foundation se describirá en términos del siguiente ejemplo específico.

Una granja de servidores de SharePoint Foundation se encuentra ubicada en //www.contoso.com/Internal/Sites/. Dentro de la granja de servidores, /Personnel/default.aspx es la página principal del departamento de personal. Esta página contiene un elemento web de Silverlight (SilverlightWebPart). Se ha habilitado un proveedor de aplicación externa (EAP) para el servicio web que contiene la aplicación web. Esto hizo posible registrar el elemento web de Silverlight en XML de aplicación externa. Entre otras cosas, este XML especifica que la aplicación de Silverlight es el archivo http://www.fabrikam.com/Applications/PeopleBrowser.xap, lo que significa que está ubicado en un dominio distinto del de la aplicación web de SharePoint Foundation. Los usuarios pueden usar la aplicación de Silverlight para buscar y mostrar información sobre los empleados de listas de SharePoint Foundation en sitios web contenidos en la aplicación web. El código dentro de la aplicación de Silverlight consulta los datos de SharePoint Foundation realizando llamadas a una versión de Silverlight especial del Modelo de objetos cliente administrado. (Vea también Uso del modelo de objetos Silverlight.)

Debido a que el archivo .xap está ubicado en un servidor fuera del dominio de la aplicación web cuyos datos se están consultando, este escenario requeriría normalmente dar al servidor Fabrikam externo acceso completo al servidor Contoso de SharePoint Foundation. No obstante, Silverlight Cross-Domain Data Access (Silverlight CDA) proporciona un método para convertir estas llamadas en llamadas con permisos restringidos al modelo de objetos servidor de SharePoint Foundation.

Secuencia de eventos

Éstos son los principales eventos en el ciclo de vida del elemento web y una solicitud de datos de Silverlight.

  1. Un usuario navega a //www.contoso.com/Internal/Sites/Personnel/default.aspx y la página se abre en el explorador.

  2. El elemento web de Silverlight se carga, lee su propiedad ApplicationXml para encontrar la dirección URL de la aplicación de Silverlight y realiza una solicitud a http://www.fabrikam.com/Applications/PeopleBrowser.xap. Ésta es una solicitud del equipo del usuario directamente al servidor de www.fabrikam.com. La solicitud no pasa a través del servidor front-end web de SharePoint Foundation.

  3. Cierta información del XML de la aplicación externa se pasa a la aplicación de Silverlight desde el elemento web. Los elementos de información más críticos son:

    • El nombre de usuario de una entidad de seguridad de la aplicación. Dentro de la aplicación web de SharePoint Foundation, una entidad de seguridad de la aplicación es un objeto SPUser con ciertas propiedades establecidas de forma tal que puede representar una aplicación en vez de una persona real. Al igual que cualquier otro usuario, la entidad de seguridad de la aplicación recibe un conjunto de permisos. La aplicación de Silverlight solo podrá tener acceso a datos y realizar acciones que se encuentren dentro de los permisos de ambos, del usuario real que ha navegado hasta la página y de la entidad de seguridad de la aplicación. Para obtener más información sobre la entidad de seguridad de la aplicación, vea Procedimiento para crear un usuario de entidad de seguridad de aplicación.

    • La dirección URL, en el dominio www.fabrikam.com, de un tipo especial de controlador de solicitudes de HTTP llamado reenviador de solicitudes. Para obtener más información sobre la creación de este tipo de controlador, vea Procedimiento para crear un reenviador de solicitudes HTTP para aplicaciones externas.

    • Un token de solicitud. La aplicación de Silverlight incluirá una copia de este token en todas sus solicitudes a la aplicación web de SharePoint Foundation. Contiene información, como el identificador del usuario real que navegó a la página que contiene el elemento web, que permitirá a la aplicación web determinar qué permisos efectivos debería permitir la aplicación de Silverlight. Para impedir la alteración, el token incluirá un valor hash de servidor que se crea cuando se ejecuta el método CreateChildControls del elemento web. El hash está formado por dos entradas; el prefijo del token, que incluye toda la parte del token que se encuentra antes del valor hash, y una matriz de bytes interna secreta que se usa como "sal" para el algoritmo hash. La sal se crea cuando se crea el objeto SPWebService que representa el servicio web y la sal se recrea cada vez que se actualiza el objeto.

      Nota

      Si el servidor en el que reside la aplicación de Silverlight también necesita asegurarse de que los resultados que recibe de la aplicación web de SharePoint Foundation no se han alterado, también se puede incluir un hash de cliente en el token de solicitud que se intercambia. Para obtener más información, vea Procedimiento para crear un proveedor de aplicaciones externas personalizado.

  4. La aplicación de Silverlight se carga y su controlador de eventos de Startup llama a Init(IDictionary<String, String>) y le pasa cierta información de inicialización que incluye lo siguiente:

    • La dirección URL del reenviador de solicitudes.

    • El token de solicitud, que se agregará al encabezado de cada solicitud realizada por la aplicación de Silverlight.

  5. Cuando el usuario toma una acción en la UI de Silverlight que inicia una solicitud de datos de SharePoint Foundation, el código de construcción de consulta en la aplicación de Silverlight realiza llamadas a una versión de Silverlight especial del modelo de objetos cliente administrado. Este código debe hacer referencia a los ensamblados cliente de Silverlight especiales Microsoft.SharePoint.Client.Silverlight.dll y Microsoft.SharePoint.Client.Silverlight.Runtime.dll. Para obtener más información sobre el modelo de objetos cliente de Silverlight, vea Uso del modelo de objetos Silverlight y Implementación de Silverlight.

  6. Al final del código de consulta se realiza una llamada al método ExecuteQuery(). Por lo general, este método pasa la consulta al servidor front-end web SharePoint Foundation, pero Silverlight no realizará una solicitud entre dominios directa. Debido a que la aplicación de Silverlight se inicializó con la dirección URL del reenviador de solicitudes, envía la consulta al reenviador de solicitudes junto con la dirección URL de la aplicación web de SharePoint Foundation.

  7. A continuación, el reenviador de solicitudes envía la consulta, como código de servidor, al servidor front-end web, junto con las credenciales de usuario de la entidad de seguridad de la aplicación y el token de solicitud, que incluye el hash de servidor.

  8. El servidor front-end web SharePoint Foundation comprueba el hash de servidor y que tanto la entidad de seguridad de la aplicación como el usuario que ha navegado a la página del elemento web tienen permiso para hacer todo para lo que se escribió el código.

  9. Una vez comprobados el hash de servidor y los permisos, el servidor front-end web ejecuta el código y devuelve datos a la aplicación de Silverlight.

Ilustración del ciclo de vida de la solicitud

La figura 1 muestra los eventos principales del ciclo de vida de una solicitud de una aplicación de Silverlight.

Figura 1: Ciclo de vida de una solicitud de Silverlight

Cadena de eventos del ciclo de vida de solicitudes de Silverlight