creación de aplicaciones windows phone 7 con...

98
Creación de aplicaciones Windows Phone 7 con Productos de SharePoint 2010 y Unified Access Gateway Este documento se proporciona «tal cual». Es posible que la información y los puntos de vista reflejados en este documento, incluidas la dirección URL y otras referencias a sitios web de Internet, cambien sin previo aviso. El usuario asume el riesgo de su uso. Algunos ejemplos descritos en este documento se proporcionan únicamente con fines ilustrativos y son ficticios. No se pretende indicar ni debe deducirse ninguna asociación ni conexión real. Este documento no proporciona ningún derecho legal sobre la propiedad intelectual e industrial de ningún producto de Microsoft. Este documento puede copiarse y usarse para fines internos y de referencia. Este documento puede modificarse para fines internos de referencia. Microsoft, SharePoint , Silverlight, Visual Studio y Windows Phone 7 son marcas registradas o marcas comerciales de Microsoft Corporation en Estados Unidos y/o en otros países. © 2011 Microsoft Corporation. Todos los derechos reservados.

Upload: truonghanh

Post on 01-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

Creación de aplicaciones Windows Phone 7 con Productos de SharePoint 2010 y Unified Access Gateway

Este documento se proporciona «tal cual». Es posible que la información y los puntos de vista reflejados en

este documento, incluidas la dirección URL y otras referencias a sitios web de Internet, cambien sin previo

aviso. El usuario asume el riesgo de su uso.

Algunos ejemplos descritos en este documento se proporcionan únicamente con fines ilustrativos y son

ficticios. No se pretende indicar ni debe deducirse ninguna asociación ni conexión real.

Este documento no proporciona ningún derecho legal sobre la propiedad intelectual e industrial de ningún

producto de Microsoft. Este documento puede copiarse y usarse para fines internos y de referencia. Este

documento puede modificarse para fines internos de referencia.

Microsoft, SharePoint , Silverlight, Visual Studio y Windows Phone 7 son marcas registradas o marcas

comerciales de Microsoft Corporation en Estados Unidos y/o en otros países.

© 2011 Microsoft Corporation. Todos los derechos reservados.

Page 2: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

2

Creación de aplicaciones Windows Phone 7 con Productos de SharePoint 2010 y Unified Access Gateway

Dave Pae

Microsoft Corporation

Todd Baginski

Aptillon, Inc.

Matthew McDermott

Aptillon, Inc.

Ben Ari

Microsoft Corporation

Marzo de 2011

Se aplica a: Microsoft® SharePoint® Server 2010, Microsoft SharePoint Foundation

2010, Microsoft Forefront Unified Access Gateway, Windows Phone 7™

Resumen:

Estas notas del producto incluyen escenarios empresariales para el desarrollo de aplicaciones

móviles que usan las características de los Productos de SharePoint 2010 para colaboración y se

autentican a través de Microsoft Forefront Unified Access Gateway (UAG). En la parte principal

de estas notas del producto se ofrece una introducción a los conceptos y código necesarios para

acceder a los datos de lista de SharePoint de forma segura desde Windows Phone 7. En el

apéndice se describe de forma detallada el proceso de instalación y configuración de una

instancia de programador de UAG para probar y desarrollar aplicaciones móviles con Productos

de SharePoint 2010.

Page 3: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

3

Contenido Contents ........................................................................................................................................................... 3 Overview and Goals ............................................................................................................................................ 5 Architecture ....................................................................................................................................................... 6

SharePoint 2010 Products Intranet ................................................................................................................. 6

UAG ........................................................................................................................................................... 6 Intranet Collaboration Scenario ............................................................................................................................ 6

Business Value of Collaboration ..................................................................................................................... 7

The Application ............................................................................................................................................ 7 Security .......................................................................................................................................................... 12

Credential Storage ..................................................................................................................................... 12

Authentication ........................................................................................................................................... 12 SharePoint Services .......................................................................................................................................... 13

Consuming Services ................................................................................................................................... 13

Accessing SharePoint List Data by Using the OData Client Library .................................................................... 13

Activity Feed RSS ....................................................................................................................................... 22

User Profile Service - Colleagues .................................................................................................................. 24

User Profile Service - User Profile Data ......................................................................................................... 27 Testing ........................................................................................................................................................... 30

Testing the Application on the Emulator ........................................................................................................ 30

Testing the Application on a Device .............................................................................................................. 30 Marketplace Considerations ............................................................................................................................... 30 Conclusion....................................................................................................................................................... 34 Appendix – Installation and Configuration of UAG for SharePoint 2010 Products ....................................................... 35

1. Create a SharePoint Server Virtual Machine and a UAG Virtual Machine. ........................................................ 35

2. Set Up Hyper-V Host Machine Virtual Networks .......................................................................................... 36

3. Set Up Hyper-V Virtual Machine Networks ................................................................................................. 38

4. Prepare the UAG Server Virtual Machine for UAG Installation ....................................................................... 41

5. Snapshot the UAG Server Virtual Machine ................................................................................................. 42

6. Install the UAG Server ............................................................................................................................ 42

7. Snapshot the UAG Server Virtual Machine ................................................................................................. 48

8. Initial UAG Server Configuration and Activation .......................................................................................... 48

9. Create the HTTP Trunk to Publish the SharePoint Site ................................................................................. 64

10. Create the SharePoint Application ........................................................................................................... 74

11. Configure the SharePoint Application ...................................................................................................... 84

12. Activate the Configuration ..................................................................................................................... 86

13. Configure and Verify SharePoint Alternate Access Mappings ....................................................................... 88

Page 4: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

4

14. Add Hosts File Entries to the Development Environment ............................................................................ 88

15. Test the Configuration ........................................................................................................................... 89

16. Test the Newsfeed RSS ......................................................................................................................... 94 Resources ....................................................................................................................................................... 97

Forefront Unified Access Gateway on TechNet ................................................................................................ 97

Closer to the Edge Blog .............................................................................................................................. 97

Silverlight Web Services Team Blog .............................................................................................................. 97 About the Authors ............................................................................................................................................ 97

Todd Baginski, MVP .................................................................................................................................... 97

Matthew McDermott, MVP ........................................................................................................................... 97

Ben Ari ..................................................................................................................................................... 98

Page 5: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

5

Información general y objetivos A medida que las organizaciones crecen, cambian e intentan mantenerse al día con la tecnología, es posible que sus empleados se sientan desconectados de la comunidad corporativa. Los Productos de Microsoft® SharePoint 2010 son compatibles con muchas características que hacen posible el compromiso y la colaboración de los empleados, desde listas y bibliotecas que almacenan y administran documentos e información, a perfiles de usuario centralizados que permiten a los empleados describirse a sí mismos y describir el rol que desempeñan en la organización, y etiquetas y notas que facilitan la obtención de información dentro y fuera del firewall. Windows Phone 7™ es la versión más reciente de dispositivos móviles que respalda el punto de vista de Microsoft sobre un lugar de trabajo móvil. Windows Phone se presenta con muchas características que admiten «Office en la nube», incluidas aplicaciones que pueden abrir y leer documentos de Microsoft Office. La experiencia de desarrollo de Windows Phone 7 está diseñada para el programador de .NET que ya cuenta con sólidos conocimientos sobre el desarrollo de .NET y Microsoft Silverlight®. En estas notas del producto se intenta salvar la distancia entre el programador de Windows Phone y el programador de SharePoint que desean crear aplicaciones empresariales que puedan usar las prestaciones de los Productos de SharePoint 2010 desde Windows Phone.

Nota En estas notas del producto, Productos de SharePoint 2010 hace referencia a Microsoft SharePoint® Server 2010 y Microsoft SharePoint Foundation 2010, a menos que se indique de otro modo. En los ejemplos y escenarios se usa SharePoint Server 2010.

El objetivo de este documento es aclarar los siguientes escenarios de desarrollo:

¿Cómo se debe preparar la conexión a los Productos de SharePoint 2010 desde las aplicaciones de Windows Phone 7?

¿Cómo se establece conexión con SharePoint a través de Unified Access Gateway?

¿Cómo se lleva a cabo la conexión, autenticación y consumo de servicios web de SharePoint?

¿Cómo se crean y actualizan los elementos de lista de SharePoint?

¿Cómo se consumen los canales RSS proporcionados por SharePoint?

Page 6: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

6

Arquitectura En el escenario ilustrado en estas notas del producto, Contoso permite que sus

empleados se conecten a los Productos de SharePoint 2010 a través de Forefront

Unified Access Gateway (UAG). UAG convierte el nombre de host externo

configurado en el teléfono en el nombre de host interno configurado en

SharePoint y agrega una capa de seguridad y autenticación que las organizaciones

necesitan para proteger y controlar sus propiedades web corporativas.

Intranet de Productos de SharePoint 2010 La intranet de Contoso es una implementación empresarial de Productos de

SharePoint 2010. El sitio se configura mediante una Aplicación de servicio de

perfiles de usuario y una Aplicación de servicio de búsqueda. La aplicación móvil

usará el servicio web del Servicio de perfiles de usuario para permitir que los

empleados vean la información del perfil de usuario en sus teléfonos móviles.

Para obtener más información sobre la configuración de la Aplicación de

servicio de perfiles de usuario, vea Administración del servicio de perfiles de

usuario (SharePoint Server 2010) (http://technet.microsoft.com/es-es/library/ee721050.aspx).

UAG Publicar un sitio de SharePoint a través de un servidor de UAG en un entorno de desarrollo implica configurar

redes en el equipo host Hyper-V, el servidor que ejecuta SharePoint Server 2010 y el servidor de UAG,

además de instalar y configurar el servidor de UAG.

En el apéndice se describe cómo configurar estas redes e instalar y configurar un servidor de UAG para

publicar un sitio de SharePoint para el desarrollo de Windows Phone 7. Estos pasos son adecuados para un

entorno de desarrollo u otro tipo de entorno que no sea de producción. Vea la publicación Guía de la

solución de publicación SharePoint (http://go.microsoft.com/fwlink/?LinkID=206256) en TechNet cuando

implemente un entorno de este tipo en un entorno de producción.

Escenario de colaboración en la Intranet Contoso cuenta con muchas personas con talento que trabajan en distintas áreas de producción, incluidas las

áreas farmacéutica y electrónica. El equipo de dirección de Contoso tiene una visión para la integración de

personas y software de modo que el lugar de trabajo sea más productivo y esté más conectado desde la

perspectiva del empleado. Contoso desea que todos puedan disfrutar de la interacción con los datos para

que el personal esté satisfecho y sea productivo. Contoso cuenta con una sólida base de partida gracias a la

implementación de Productos de SharePoint 2010. SharePoint se considera la aplicación de empresa

principal que consolida los datos de usuario y las actividades. Contoso desea ir más allá y ofrecer una

solución de movilidad a sus asociados. Con este fin, Contoso desea desarrollar una aplicación móvil que

Page 7: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

7

permita a los usuarios visualizar sus actividades desde SharePoint, realizar un seguimiento de sus

compañeros y actualizar listas hospedadas en la intranet de SharePoint.

Valor de la colaboración para la empresa Aunque para algunas compañías resulta un reto correlacionar directamente el valor empresarial con las

características de colaboración de los Productos de SharePoint 2010, Contoso ha encontrado una relación

directa entre conectar las personas entre sí y crear un sentido de comunidad con SharePoint. Cuanto más

conectados se sientan los empleados con sus amigos en el trabajo, más probable es que sean felices en su

trabajo. Esta felicidad y satisfacción en el trabajo dan lugar a una mayor permanencia de los empleados (y una

mayor facilidad en la contratación de nuevos empleados). Una mayor permanencia de los empleados supone

una reducción de los costos de contratación y mejores resultados de la empresa.

La aplicación A través de su aplicación móvil, Contoso desea replicar muchas de las características que la característica

Mis sitios de SharePoint ofrece en un explorador web. El flujo de la aplicación consistirá en una página

panorámica con cuadros de lista para Personas visitadas recientemente, Mi suministro de noticias, Mis

actividades y Mis compañeros. Desde cualquier punto en que un usuario seleccione la imagen de otro

usuario, el perfil de usuario que seleccione se abrirá en una página nueva. Los resultados de la búsqueda se

presentarán en un cuadro de lista y, al seleccionar un usuario, se visualizará su perfil. Estos componentes se

ilustran en la figura 1.

Figura 1: Funcionalidad social de SharePoint que Contoso desea usar en su aplicación Windows Phone 7

Lista de tareas personales Cada sitio personal tiene una lista de tareas que el empleado puede mantener para realizar un seguimiento

del progreso personal en las asignaciones. La aplicación se conectará a la lista de tareas del sitio personal y

permitirá al empleado crear, actualizar y eliminar tareas.

Page 8: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

8

Mi suministro de noticias Mi suministro de noticias (figura 2) en Mi sitio de SharePoint es el lugar en el que los usuarios obtienen las

noticias más recientes de la empresa. Mi suministro de noticias es extensible, por lo que las organizaciones

como Contoso pueden agregar canales adicionales para eventos de actividad de otros sistemas.

Figura 2: Mi suministro de noticias en un sitio de SharePoint tal como se visualiza en un explorador web

Mis compañeros Esta lista de compañeros mantenida por un usuario («personas a las que sigo») es un recurso muy valioso

(figura 3). Contoso desea duplicar esta lista en la experiencia móvil.

Page 9: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

9

Figura 3: Mi compañeros en un sitio de SharePoint tal como se visualiza en un explorador web

Page 10: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

10

La aplicación Windows Phone usará el control panorámico para visualizar la información, incluidos los

últimos perfiles a los que se ha accedido, en un panel continuo (figura 4).

Figura 4: Control panorámico que muestra la vista holística de la aplicación de Windows Phone 7

Tarjeta de perfil Al seleccionar un usuario, se visualizarán los detalles de su perfil (figura 5). La tarjeta de perfil también

mostrará información acerca del usuario en la vista móvil.

Page 11: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

11

Figura 5: Detalles acerca de un usuario en un sitio de SharePoint tal como se visualizan en un explorador web

Figura 6: Detalles acerca de un usuario en un sitio de SharePoint tal como se visualizan en la aplicación de

Windows Phone 7

Page 12: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

12

Seguridad El programador de Windows Phone debe tener en cuenta la seguridad tanto para los datos durante el

tránsito como para los datos en reposo. El almacenamiento seguro de credenciales se logra con el uso de

almacenamiento cifrado y aislado. Para obtener más información sobre las capacidades de seguridad del

teléfono, vea Seguridad para Windows Phone (http://go.microsoft.com/fwlink/?LinkId=215977) en MSDN.

Almacenamiento de credenciales Windows Phone 7 admite los siguientes algoritmos criptográficos:

AES

HMACSHA1

HMACSHA256

Rfc2898DeriveBytes

SHA1

SHA256

Es muy importante que el programador de una aplicación móvil que almacene credenciales en el teléfono

tenga en cuenta la seguridad de las credenciales almacenadas en caso de pérdida del dispositivo o si este se

encuentra en situación de riesgo.

Autenticación Windows Phone 7 no admite la autenticación NTLM. Las solicitudes de servicios web desde el teléfono a

través de UAG deben crear el encabezado de autenticación correcto; para ello, deben recuperar las

credenciales del usuario del almacenamiento cifrado y luego adjuntar las credenciales al encabezado del

objeto HttpWebRequest. Las solicitudes web deben realizarse a través de HTTPS y los encabezados de

autenticación deben pasarse como se muestra en el siguiente ejemplo.

upsRequest.Headers["Authorization"] = "Basic " +

Convert.ToBase64String(

Encoding.UTF8.GetBytes(AppSettings.Username + ":" + AppSettings.Password)) +

System.Environment.NewLine;

Cuando se usa una referencia de servicio WCF, el encabezado puede agregarse al cliente SOAP accediendo a

OperationContextScope, como en el siguiente ejemplo.

using (OperationContextScope scope =

new OperationContextScope(ups.InnerChannel))

{

//Crear la propiedad de mensaje de solicitud

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Crear el encabezado de autenticación y de agente móvil

request.Headers[System.Net.HttpRequestHeader.Authorization] =

Page 13: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

13

"Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Username + ":" +

AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Agregar los encabezados a la solicitud

OperationContext.Current.OutgoingMessageProperties.Add(

HttpRequestMessageProperty.Name, request);

//Llamar al método

ups.GetUserColleaguesAsync(account);

}

Servicios de SharePoint

Consumo de servicios La aplicación consumirá varios servicios de SharePoint para cumplir los requisitos empresariales, como se

resume en la siguiente tabla.

Requisito URL del servicio Método

Leer y actualizar

datos de lista

http://sharepoint/_vti_bin/listdata.svc Biblioteca de cliente

OData

Visualizar suministro

de noticias de

usuario

http://mysitehost/_layouts/activityfeed.aspx?consolidate

d=true

Consumir la fuente RSS

proporcionada

Visualizar

compañeros del

usuario

http://mysitehost/_vti_bin/userprofileservice.asmx GetUserColleagues

Visualizar perfil de

usuario

http://mysitehost/_vti_bin/userprofileservice.asmx GetUserProfileByName

Acceso a datos de lista de SharePoint mediante la biblioteca de cliente OData Publicar una colección de sitios de SharePoint a través de un servidor de UAG permite la integración entre las

aplicaciones de Windows Phone 7 y las API REST de SharePoint. Gracias a OData Client Library for Windows

Phone 7 Series CTP (http://go.microsoft.com/fwlink/?LinkId=215984), los dispositivos con Windows Phone 7

Page 14: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

14

pueden consumir fuentes OData. Las API REST de SharePoint pueden llamarse mediante la biblioteca de

cliente OData para proporcionar operaciones de creación, lectura, actualización y eliminación (CRUD) en

datos de lista de SharePoint. Esto ofrece la capacidad de integrar dispositivos con Windows Phone 7 con

aplicaciones de colaboración creadas en la plataforma SharePoint. El siguiente código de ejemplo muestra

cómo usar la biblioteca de cliente OData y las API REST de SharePoint para llevar a cabo operaciones CRUD

en los datos de lista de SharePoint.

Dado que no es posible agregar referencias de servicio para las API REST de SharePoint a una aplicación de

Windows Phone 7, debe generar manualmente una clase proxy y agregarla como referencia al proyecto en

Microsoft Visual Studio®. Para generar la clase proxy, se usa DataSvcUtil.exe

(http://go.microsoft.com/fwlink/?LinkID=215987). En este escenario, la clase proxy se denomina

ContosoIntranetDataContext. En los ejemplos de código siguientes se hace un uso extensivo de esta clase.

El método LoadTask muestra cómo cargar tareas desde una lista de tareas de SharePoint. En este método, la

clase ContosoIntranetDataContext usa la configuración de IsolatedStorage para determinar el sitio de

SharePoint con el que se debe establecer conexión. El controlador de eventos SendingRequest se asigna a la

instancia de ContosoIntranetDataContext. Este controlador de eventos se activa cuando la clase

ContosoIntranetDataContext invoca una solicitud para las API REST de SharePoint. requestUri define la

operación REST y el método BeginExecute envía la solicitud. El método BeginExecute también registra el

método de devolución de llamada asíncrona que se activa cuando se completa la consulta.

private void LoadTasks()

{

Deployment.Current.Dispatcher.BeginInvoke(() =>

{

if (allTasks == null)

{

allTasks = new ObservableCollection<Task>();

}

ObservableCollection<TasksItem> tasks = new

ObservableCollection<TasksItem>();

//Recuperar la configuración del almacenamiento aislado

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurar el contexto ODATA para que apunte al sitio de SharePoint

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Registrar el controlador de eventos usado para la autenticación ante UAG

Page 15: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

15

context.SendingRequest += new EventHandler<SendingRequestEventArgs>(

context_SendingRequest);

//Establecer el URI para consultar la lista de tareas

//Se usa expansión para recuperar los valores de la columna de búsqueda

Uri requestUri = new Uri(context.BaseUri.OriginalString +

"/Tasks()?$expand=AssignedTo,CreatedBy,ModifiedBy");

//Iniciar la llamada asíncrona para consultar SharePoint

context.BeginExecute<TasksItem>(requestUri, QueryCallback, null);

});

}

El controlador de eventos SendingRequest se activa cuando se envía la consulta OData a los productos de

SharePoint 2010. El código de este controlador de eventos es importante: sin este código, un servidor de

UAG no pude identificar correctamente un dispositivo con Windows Phone 7 e interactuar correctamente

para autenticar un usuario. El encabezado User-Agent hace que un servidor de UAG responda con un

mensaje HTTP 401 en lugar de un mensaje 302. El encabezado Authorization incluye las credenciales cifradas

para el usuario que accede a la fuente OData. El servidor de UAG usa las credenciales cifradas para

autenticar el usuario.

private void context_SendingRequest(object sender, SendingRequestEventArgs e)

{

e.RequestHeaders["User-Agent"] = "Microsoft Office Mobile";

e.RequestHeaders["Authorization"] = "Basic " + Convert.ToBase64String(

Encoding.UTF8.GetBytes(App.Credential.Name + ":" +

App.Credential.Password)) + System.Environment.NewLine;

}

Una vez que se ha completado la consulta para el servidor que ejecuta SharePoint Server, se activa el método

QueryCallback. Este método analiza los resultados que devuelve la consulta y los agrega al objeto

ObservableCollection enlazado a los elementos de la interfaz de usuario de la aplicación del teléfono.

private void QueryCallback(IAsyncResult asyncResult)

{

IEnumerable<TasksItem> results;

allTaskItems = new ObservableCollection<TasksItem>();

Page 16: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

16

results = context.EndExecute<TasksItem>(asyncResult).ToList()

as IEnumerable<TasksItem>;

ObservableCollection<Task> returnedTasks =

new ObservableCollection<Task>();

foreach (TasksItem tasksItem in results)

{

//Código omitido por razones de concisión: recuperar metadatos acerca de la

tarea…

//Crear la tarea nueva y establecer sus propiedades

Task task = new Task()

{

Title = tasksItem.Title,

Priority = taskPriority,

TaskStatus = taskStatus,

Body = tasksItem.Description,

Author = authorUser.Name,

Editor = editorUser.Name,

AssignedTo = assignedToUser.Name,

StartDate = DateTime.Parse(tasksItem.StartDate.ToString()),

Modified = DateTime.Parse(tasksItem.Modified.ToString()),

Created = DateTime.Parse(tasksItem.Created.ToString()),

DueDate = DateTime.Parse(tasksItem.DueDate.ToString()),

UIVersion = 1,

Last_x0020_Modified =

DateTime.Parse(tasksItem.Modified.ToString()),

Created_x0020_Date =

DateTime.Parse(tasksItem.Created.ToString()),

PercentComplete = (int)finalPercentComplete,

ListID = tasksItem.Id

};

//Agregar cada tarea al objeto ObservableCollection enlazado a los elementos

de la interfaz de usuario.

returnedTasks.Add(task);

Page 17: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

17

allTaskItems.Add(tasksItem);

}

allTasks = returnedTasks;

//Métodos de devolución de llamada de la interfaz de usuario omitidos por

razones de concisión

}

El método SaveTask crea tareas nuevas y actualiza tareas existentes. El siguiente código muestra cómo usar

la biblioteca de cliente OData para crear tareas nuevas o para actualizar tareas existentes en una lista de

tareas de SharePoint desde un dispositivo con Windows Phone 7. La clase TasksItem representa una tarea

en una lista de tareas. Se crea una instancia de TasksItem y sus propiedades se establecen en los valores con

el formato usado para crear o editar tareas. A continuación, la instancia de TasksItem se compara con las

tareas que ya se han cargado en el teléfono para ver si la tarea ya existe. Esta comprobación determina si se

usa la biblioteca de cliente OData para crear una tarea nueva en la lista de tareas de SharePoint o para

actualizar una tarea existente. El método BeginSaveChanges invoca la operación apropiada y registra el

método de devolución de llamada saveChangesCallBack.

public void SaveTask(Task task, Action<Task> callback)

{

taskToSave = task;

#region Create/update new task object

saveTaskCallback = callback;

//Recuperar la configuración del almacenamiento aislado

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurar el contexto ODATA para que apunte al sitio de SharePoint apropiado

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Registrar el controlador de eventos usado para la autenticación ante UAG

context.SendingRequest +=

new EventHandler<SendingRequestEventArgs>(context_SendingRequest);

TasksItem tasksItem = new TasksItem();

Page 18: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

18

tasksItem.Title = task.Title;

tasksItem.Description = task.Body;

tasksItem.AssignedToId = assignedToUserID;

tasksItem.PriorityValue = task.Priority.DisplayString;

tasksItem.StartDate = task.StartDate;

tasksItem.DueDate = task.DueDate;

//Establecer el porcentaje completado

if (task.PercentComplete > 0)

{

tasksItem.Complete = (double)task.PercentComplete / 100;

}

else

{

tasksItem.Complete = (double)0;

}

//Establecer el estado de la tarea

tasksItem.StatusValue = task.TaskStatus.DisplayString;

//Si la tarea ya existe, actualizarla

if (allTasks.Count > 0 && DoesTaskExist(taskToSave) && task.ListID != 0)

{

tasksItem.Id = task.ListID;

context.AttachTo("Tasks", tasksItem, "*");

context.UpdateObject(tasksItem);

}

//Si la tarea no existe, crearla

else

{

context.AddToTasks(tasksItem);

}

Deployment.Current.Dispatcher.BeginInvoke(

() =>

Page 19: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

19

{

//Iniciar la llamada asíncrona a SharePoint para confirmar los cambios

context.BeginSaveChanges(saveChangesCallBack, context);

}

);

}

Una vez completada la consulta, se activa saveChangesCallBack. Este método analiza los resultados que

devuelve la consulta y actualiza el objeto ObservableCollection enlazado a los elementos de la interfaz de

usuario del teléfono.

private void saveChangesCallBack(IAsyncResult asyncResult)

{

Deployment.Current.Dispatcher.BeginInvoke(

() =>

{

//Obtener el contexto de datos de la respuesta

context = asyncResult.AsyncState as ContosoIntranetDataContext;

//Llamar al método endsavechanges para confirmar el cambio

DataServiceResponse response = context.EndSaveChanges(asyncResult);

//Si la tarea ya existe, actualizarla

if (allTasks.Count > 0 && DoesTaskExist(taskToSave))

{

for (int i = 0; i < allTasks.Count; i++)

{

if (allTasks[i].ListID == taskToSave.ListID)

{

//Actualizar la tarea correspondiente en la colección en memoria

allTasks[i] = taskToSave;

//Llamar al método de devolución de llamada para indicar a la interfaz

de usuario que la operación de guardar ha terminado

saveTaskCallback.DynamicInvoke(taskToSave);

break;

}

}

}

Page 20: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

20

//Si la tarea no existe, crearla

else

{

//Agregar la tarea a la colección en memoria

allTasks.Add(taskToSave);

//Llamar al método de devolución de llamada para indicar a la interfaz de

usuario que la operación de guardar ha terminado

saveTaskCallback.DynamicInvoke(taskToSave);

}

}

);

}

El método DeleteTask muestra cómo usar la biblioteca de cliente OData para eliminar tareas de una lista de

tareas de SharePoint desde un dispositivo con Windows Phone 7. Este método obtiene el Id. asociado con una

tarea seleccionada en la aplicación de Windows Phone 7 y crea un objeto Task basado en el Id. El objeto Task se

usa para localizar la instancia de TasksItem correspondiente en el contexto de biblioteca de cliente OData

asociado con la lista de tareas de SharePoint. Una vez que se ha localizado la entrada correspondiente, se

marca para su eliminación. El método de devolución de llamada BeginSaveChanges invoca la API REST de

SharePoint y registra el método de devolución de llamada DeleteCallback.

public void DeleteTask(int ID, Action callback)

{

deleteTaskCallback = callback;

taskToDelete = GetTask(ID);

//Recuperar la configuración del almacenamiento aislado

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurar el contexto ODATA para que apunte al sitio de SharePoint apropiado

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Registrar el controlador de eventos usado para la autenticación ante UAG

context.SendingRequest +=

new EventHandler<SendingRequestEventArgs>(context_SendingRequest);

Page 21: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

21

foreach (TasksItem tasksItem in allTaskItems)

{

if (tasksItem.Id == taskToDelete.ListID)

{

context.MergeOption = MergeOption.OverwriteChanges;

context.AttachTo("Tasks", tasksItem, "*");

context.DeleteObject(tasksItem);

//Iniciar la llamada asíncrona a SharePoint para confirmar la eliminación

context.BeginSaveChanges(DeleteCallback, context);

break;

}

}

}

Una vez terminada la consulta, se activa el método DeleteCallback. Este método analiza los resultados que

devuelve la consulta y elimina la tarea en el objeto ObservableCollection enlazado a los elementos de la

interfaz de usuario del teléfono.

private void DeleteCallback(IAsyncResult asyncResult)

{

Deployment.Current.Dispatcher.BeginInvoke(

() =>

{

//Obtener el contexto de datos de la respuesta

context = asyncResult.AsyncState as ContosoIntranetDataContext;

//Llamar al método endsavechanges para confirmar el cambio

DataServiceResponse response = context.EndSaveChanges(asyncResult);

// Quitar la tarea también de la colección en memoria

if (taskToDelete != null)

{

//Quitar la tarea de la colección en memoria

GetAllTasks().Remove(taskToDelete);

//Llamar al método de devolución de llamada para indicar a la interfaz de

usuario que la operación de eliminar ha terminado

deleteTaskCallback.DynamicInvoke();

Page 22: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

22

}

}

);

}

RSS de fuente de actividades

El suministro de noticias principal y las actividades recientes se publican desde el host Mi sitio como una

fuente RSS. La aplicación simplemente debe solicitar la fuente RSS, descargar la cadena y agregar los

resultados en un objeto de colección. Las actividades se publican desde el host Mi sitio en el URL

http://<host_mi_sitio>/_layouts/activityfeed.aspx?consolidated=true. (Antes de intentar acceder a la fuente

RSS a través del enfoque de código que se describe a continuación, asegúrese de que ha probado la fuente

RSS; para ello, siga las instrucciones que se indican en el apéndice al final de este documento.)

El método LoadNewsfeed muestra cómo solicitar la fuente de actividades consolidada para el usuario

autenticado a través de UAG. Se crea una nueva solicitud HtpWebRequest pasando el URI de la fuente de

actividades consolidada. Los encabezados de cliente necesarios se agregan a la solicitud. La cuenta y la

contraseña son variables a las que se accede desde el almacenamiento aislado. Para facilitar el uso del patrón

Modelo Vista Vista Modelo, se usa MVVM Light Toolkit (para obtener más información, vea el sitio web de

MVVM Light Toolkit (http://go.microsoft.com/fwlink/?LinkId=216135)). En este ejemplo, se llama a

DispatcherHelper.CheckBeginInvokeOnUI para manejar ResponseStream y los resultados se pasan a

AddNewsfeedItems para extraer los valores de resultado y agregarlos a la colección NewsfeedItems.

private void LoadNewsfeed()

{

//URL del RSS de Mi suministro de noticias

string url =

String.Format("{0}/my/_layouts/activityfeed.aspx?consolidated=true",

AppSettings.Url);

System.Uri authServiceUri = new Uri(url);

HttpWebRequest client =

WebRequest.CreateHttp(authServiceUri) as HttpWebRequest;

//Agregar los encabezados necesarios para UAG

client.Headers["User-Agent"] = "Microsoft Office Mobile";

client.Headers["Authorization"] = "Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Username + ":" +

AppSettings.Password))+

System.Environment.NewLine;

Page 23: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

23

client.AllowReadStreamBuffering = true;

client.AllowAutoRedirect = true;

// Llamar y manejar la respuesta

client.BeginGetResponse((asResult) =>

{

DispatcherHelper.CheckBeginInvokeOnUI(

() =>

{

try

{

var response = client.EndGetResponse(asResult);

StreamReader reader = new

StreamReader(response.GetResponseStream());

string responseString = reader.ReadToEnd();

AddNewsfeedItems(responseString);

}

catch (WebException failure)

{

throw failure;

}

});

},

null);

}

Una vez completada la descarga, AddNewsfeedItems agrega los resultados a la colección enlazada a la

interfaz de usuario. La cadena responseString se analiza en un XDocument y se agregan los dos espacios de

nombres. Se usa LINQ para consultar la colección de entradas y crear objetos MyNewsfeedViewModel que

almacenan los elementos de suministro de noticias resultantes e información sobre el autor. Por último, los

elementos se agregan a la colección MyNewsFeedItems.

private void AddNewsfeedItems(string responseString)

{

//Analizar la respuesta XML

XDocument newsfeedDoc = XDocument.Parse(responseString);

//Agregar los espacios de nombres necesarios

XNamespace ns = "http://www.w3.org/2005/Atom";

Page 24: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

24

XNamespace af = "AF";

//Usar LINQ para extraer la información en un modelo ViewModel

IEnumerable<MyNewsfeedViewModel> entries = from entry in

newsfeedDoc.Descendants(XName.Get("entry", ns.NamespaceName))

select new MyNewsfeedViewModel()

{

Summary = entry.Element(ns + "summary").Value,

Published = entry.Element(ns + "published").Value,

Author =

(from author in entry.Descendants(XName.Get("author",

ns.NamespaceName))

select new PersonViewModel(NavigationService)

{

AccountName = author.Element(af + "AccountName").Value,

Name = author.Element(ns + "name").Value,

PersonalSiteUrl = author.Element(ns + "uri").Value,

Email = author.Element(ns + "email").Value,

PictureUrl = author.Element(af + "Picture").Value

}).FirstOrDefault()};

//Agregar los elementos resultantes en la colección enlazada a los controles

de la interfaz de usuario

DispatcherHelper.CheckBeginInvokeOnUI(() =>

{

foreach (MyNewsfeedViewModel e in entries.ToList())

{

MyNewsfeedItems.Add(e);

}

});

}

Servicio de perfiles de usuario: Compañeros El Servicio de perfiles de usuario de SharePoint proporciona la capacidad de visualizar, crear, editar y

administrar información de perfiles de usuario en productos de SharePoint 2010. El servicio es el punto de

entrada principal que tiene la aplicación para recuperar información acerca de compañeros del usuario y

Page 25: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

25

perfiles de usuario. El siguiente código muestra cómo llamar al Servicio de perfiles de usuario desde Windows

Phone 7 a través de UAG.

Creación de la referencia del Servicio de perfiles de usuario Para empezar, agregue una referencia de servicio al proyecto de Windows Phone 7. Especifique el URL del

punto final del Servicio de perfiles de usuario de SharePoint, como, por ejemplo:

http://spwp7intranet.contoso.com/_vti_bin/userprofileservice.asmx

Asigne a la referencia de servicio un nombre reconocible, como UserProfileService y haga clic Aceptar.

Método web GetUserColleagues El método LoadColleagueData usa el método GetUserColleaguesAsync del Servicio de perfiles de usuario para

devolver una colección de compañeros como objetos ContactData. Una vez que se ha creado BasicHttpBinding y

EndpointAddress, se crea un nuevo UserProfileServiceSoapClient con los parámetros necesarios. En Silverlight,

las llamadas al servicio deben realizarse de forma asíncrona. Se agrega un nuevo controlador de eventos

OnCompleted para el evento GetUserColeaguesCompleted. Para agregar los encabezados necesarios para UAG,

se usa un OperationContextScope y se crea un una HttpRequestMessageProperty que va a contener los dos

encabezados necesarios para la autenticación ante UAG. Los encabezados se agregan al mensaje saliente y la

llamada asíncrona se realiza para GetUserColleaguesAsync usando la cuenta de usuario como parámetro.

private void LoadColleagueData()

{

string url =

String.Format("{0}/_vti_bin/userprofileservice.asmx", AppSettings.Url);

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress endpoint = new EndpointAddress(url);

UserProfileService.UserProfileServiceSoapClient ups =

new UserProfileServiceSoapClient(binding, endpoint);

//Agregar el controlador de eventos completados

ups.GetUserColleaguesCompleted +=

new EventHandler<GetUserColleaguesCompletedEventArgs>(

ups_GetUserColleaguesCompleted);

//Agregar las credenciales

using (OperationContextScope scope =

new OperationContextScope(ups.InnerChannel))

Page 26: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

26

{

//Crear la propiedad de mensaje de solicitud

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Crear el encabezado de autenticación y de agente móvil

request.Headers[System.Net.HttpRequestHeader.Authorization] =

"Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Account +

":" + AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Agregar los encabezados a la solicitud

OperationContext.Current.OutgoingMessageProperties.Add(

HttpRequestMessageProperty.Name, request);

//Llamar al método

ups.GetUserColleaguesAsync(account);

}

}

Cuando el método GetUserColleaguesAsync devuelve resultados, se llama al evento

ups_GetUserColleaguesCompleted. Si no existe ningún error, se usa LINQ para crear una lista de

PersonViewModels a partir de los datos ContactData resultantes. El último paso consiste en agregar los

modelos PersonViewModels de la lista a ColleaguesList en el subproceso de la interfaz de usuario llamando

a CheckBeginInvoke y pasando la lista de PersonViewModels.

private void ups_GetUserColleaguesCompleted(object sender,

GetUserColleaguesCompletedEventArgs e)

{

if (e.Error == null)

{

//Crear una lista de PersonViewModels

IEnumerable<PersonViewModel> colleagues =

from contact in e.Result

select new PersonViewModel()

{

AccountName = contact.AccountName,

UserProfileID = contact.UserProfileID.ToString(),

Page 27: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

27

Name = contact.Name,

Title = contact.Title,

Email = contact.Email,

PersonalSiteUrl = contact.Url

};

//Cargar la lista de compañeros en el subproceso de la interfaz de usuario

DispatcherHelper.CheckBeginInvokeOnUI(() =>

{

foreach (PersonViewModel c in colleagues.ToList())

{

Colleagues.Add(c);

}

});

}

else

{

Debug.WriteLine("Error loading the Colleagues List: {0}",

e.Error.Message);

}

}

Servicio de perfiles de usuario: Datos de perfil de usuario El método web GetUserColleagues no devuelve perfiles de usuario. El método devuelve datos ContactData

que pueden pasarse de nuevo al método GetUserProfileByName del Servicio de perfiles de usuario que

devuelve un objeto de perfil de usuario completo, que posteriormente puede usarse para visualizar un perfil

de usuario completo. El método siguiente se usa para devolver los detalles del perfil de usuario para nuestros

compañeros. Específicamente, devolveremos los campos AboutMe, WorkPhone, MobilePhone y PictureURL.

El método GetUserProfileProperties toma un objeto PersonViewModel para la persona cuyo perfil deseamos

recuperar. En este método, construimos un inspector de mensajes para resolver un problema que hace que el

valor devuelto por PropertyData no se analice correctamente. A continuación, creamos un

BasicHttpMessageInspectorBinding que toma el inspector de mensajes como parámetro, pasa el enlace y el

punto final al constructor para UserProfileServiceSoapClient y registra el controlador de eventos

GetUserProfileByNameCompleted. Para agregar los encabezados de solicitud necesarios para UAG, un

OperationContextScope agrega los encabezados Authorization y UserAgent a la solicitud. Por último, llamamos al

Page 28: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

28

método GetUserProfileByNameAsync y pasamos el Account Name para el usuario y el PersonViewModel que

queremos actualizar.

private void GetUserProfileProperties(PersonViewModel person)

{

//URL para el servicio

string url = String.Format("{0}/_vti_bin/userprofileservice.asmx",

AppSettings.ServerUrl);

//Crear el inspector de mensajes

SPAsmxMessageInspector messageInspector = new SPAsmxMessageInspector();

//Aplicar el inspector de mensajes al enlace

BasicHttpMessageInspectorBinding binding = new

BasicHttpMessageInspectorBinding(messageInspector);

EndpointAddress endpoint = new EndpointAddress(url);

UserProfileService.UserProfileServiceSoapClient ups = new

UserProfileServiceSoapClient(binding, endpoint);

//Agregar el controlador de eventos completados

ups.GetUserProfileByNameCompleted += new

EventHandler<GetUserProfileByNameCompletedEventArgs>

(ups_GetUserProfileByNameCompleted);

using (OperationContextScope scope = new

OperationContextScope(ups.InnerChannel))

{

//Crear la propiedad de mensaje de solicitud

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Crear el encabezado de autenticación y de agente móvil

request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.UserName + ":" +

AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Agregar los encabezados a la solicitud

Page 29: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

29

OperationContext.Current.

OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, request);

Debug.WriteLine("Getting User Profile for: {0}", person.AccountName);

//Llamar al método

ups.GetUserProfileByNameAsync(person.AccountName, person);

}

}

Cuando se llama a GetUserProfileByNameCompleted, los valores de propiedad devueltos (si se devuelve alguno) se inspeccionan y asignan a la propiedad adecuada en PersonViewModel.

private void ups_GetUserProfileByNameCompleted(object sender,

GetUserProfileByNameCompletedEventArgs e)

{

if (e.Error == null)

{

Debug.WriteLine("Got the user profile for {0}",

((PersonViewModel)e.UserState).AccountName);

foreach (UserProfileService.PropertyData propertyData in e.Result)

{

switch (propertyData.Name)

{

case "AboutMe":

((PersonViewModel) e.UserState).AboutMe = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string): String.Empty;

break;

case "WorkPhone":

((PersonViewModel)e.UserState).WorkPhone = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string) : String.Empty;

break;

case "CellPhone":

((PersonViewModel)e.UserState).MobilePhone = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string) : String.Empty;

break;

Page 30: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

30

case "PictureURL":

((PersonViewModel)e.UserState).PictureUrl = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string) : String.Empty;

break;

}

}

}

else

{

Debug.WriteLine(e.Error.Message);

}

}

Nota: se recomienda usar el inspector de mensajes de este ejemplo únicamente en un entorno en el que se hayan

aplicado las últimas actualizaciones de Silverlight. Para obtener más información, vea Solución alternativa para

acceder a algunos servicios de ASMX desde Silverlight 4 (http://go.microsoft.com/fwlink/?LinkID=216134 ) y GUID

de servicio de perfiles de usuario de Silverlight y SharePoint (http://go.microsoft.com/fwlink/?LinkId=216136).

Pruebas

Pruebas de la aplicación en el emulador La aplicación de este ejemplo se prueba en el emulador de desarrollo de Windows Phone 7. El emulador usa la

conexión de red del equipo de desarrollo host. Si es necesario, pueden agregarse entradas de archivo host al

equipo de desarrollo de modo que el emulador pueda resolver las direcciones del servidor de UAG de desarrollo.

Pruebas de la aplicación en un dispositivo Para poder probar la aplicación en un dispositivo Windows Phone físico, el teléfono debe estar conectado a

una conexión Wi-Fi disponible públicamente que proporcione DNS y enrutamiento al servidor de UAG de

prueba de destino o a un servidor de UAG de prueba expuesto en Internet.

Consideraciones sobre el catálogo de soluciones Una vez que haya desarrollado la aplicación de Windows Phone 7, es importante que lleve a cabo los pasos

adecuados para publicar correctamente la aplicación en el Catálogo de soluciones de Windows Phone.

Microsoft ha implementado varios mecanismos para evitar la piratería de software de aplicaciones de

Windows Phone 7. Para obtener más información acerca de estas medidas, vea el documento Notas del

Page 31: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

31

producto Modelo antipiratería de Windows Phone Marketplace

(http://go.microsoft.com/fwlink/?LinkId=216137).

A nivel general, para publicar una aplicación de Windows Phone 7 en el Catálogo de soluciones de Windows

Phone de, como mínimo, crear una cuenta de programador y publicar la aplicación en el catálogo de soluciones.

En el artículo Tutorial de registro de programadores en App Hub

(http://go.microsoft.com/fwlink/?LinkId=216138) se describe cómo registrar una cuenta de programador. Es

importante tener en cuenta que la cuenta de un programador puede estar asociada a un individuo o a una

empresa. En función de sus necesidades, puede suscribirse a la cuenta que más le convenga. Ambos tipos de

cuenta tienen la misma tarifa de registro. En el artículo Tutorial de envío de la aplicación Windows Phone 7

(http://go.microsoft.com/fwlink/?LinkId=216139) se describe cómo enviar la aplicación para su comprobación y

publicación. Si la aplicación cumple los requisitos estipulados en Requisitos de certificación de la aplicación

Windows Phone 7 [PDF] (http://go.microsoft.com/?linkid=9730558), se publicará en el Catálogo de soluciones

de Windows Phone.

En el momento de publicar estas notas del producto, no existe ningún «catálogo de soluciones privado» para

las organizaciones para evitar la distribución pública de sus aplicaciones. Vea el sitio App Hub

(http://create.msdn.com) para obtener información sobre las actualizaciones y sobre la capacidad de las

organizaciones de publicar aplicaciones de forma privada.

Microsoft ha implementado muchas medidas de seguridad, no obstante, deben tomarse todas las

precauciones necesarias para proteger el código en caso de que alguna persona obtenga una copia del

archivo .xap que representa la aplicación de Windows Phone 7. Antes de seguir los pasos necesarios para

publicar la aplicación en el Catálogo de soluciones de Windows Phone, debe asegurarse de que protege las

aplicaciones para proteger su propiedad intelectual. Existen varias herramientas disponibles para proteger

las aplicaciones de Windows Phone 7.

Es muy probable que la siguiente lista no sea completa, pero constituye un buen punto de partida para

explorar las opciones disponibles actualmente.

PreEmptive Solutions Dotfuscator Windows Phone Edition

(http://www.preemptive.com/windowsphone7.html)

RedGate SmartAssembly 6 EAP (http://www.red-gate.com/MessageBoard/viewforum.php?f=116)

DeepSea Obfuscator (http://www.deepseaobfuscator.com/)

La protección adecuada es un proceso iterativo para cuya prueba y comprobación se requiere tiempo.

Asegúrese de prever tiempo en el plan del proyecto para proteger las aplicaciones de Windows Phone 7,

probarlas y comprobar que el nivel de protección satisface sus necesidades.

Puede usar la herramienta Windows Phone 7 Application Deployment (figura 7) para probar las aplicaciones

de Windows Phone 7 protegidas. Esta herramienta permite implementar las aplicaciones de Windows Phone

7 protegidas en un dispositivo con Windows Phone 7 real que haya registrado con su cuenta de programador

o en el emulador de Windows Phone 7.

Page 32: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

32

Figura 7: Herramienta Windows Phone 7 Application Deployment

Una vez que haya implementado y probado una aplicación protegida de Windows Phone 7, es posible que

detecte que en niveles muy altos de protección (en los que se activan todas las opciones posibles para

proteger el código) la aplicación no se ejecute correctamente en un dispositivo con Windows Phone 7 o en el

emulador de Windows Phone 7. Por otro lado, es posible que observe que el uso de un nivel mínimo de

configuración de protección sea suficiente para garantizar la ejecución correcta de la aplicación, pero que el

nivel de protección no satisfaga sus necesidades.

Puede seguir los pasos que se indican a continuación para determinar el nivel de protección que una

herramienta de protección aplica a su aplicación. En primer lugar, localice el archivo .xap que representa su

aplicación de Windows Phone 7 y cambie el nombre de la extensión por .cab o .zip. A continuación, abra el

archivo y extraiga su contenido. Use una herramienta como RedGate .NET Reflector para abrir el montaje

Page 33: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

33

que corresponde a su aplicación. Al abrir el nodo de recursos podrá ver todos los archivos XAML y guardarlos

en el disco duro (figura 8).

Figura 8: Almacenamiento de archivos XAML con .NET Reflector

A continuación, puede examinar los archivos XAML para ver el nivel de protección que se ha aplicado al código.

Quizás le sorprenda ver que los niveles bajos de protección no cambian en absoluto el contenido de un archivo

XAML y que en los niveles altos de protección simplemente se quita un espacio en blanco. Esto fomenta el uso

del patrón Modelo Vista Vista Modelo para separar el código y la lógica de presentación de las capas de acceso

a datos.

También puede examinar el código de los montajes en los que se basa su aplicación de Windows Phone 7. En la

figura 9 se muestra un montaje protegido.

Page 34: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

34

Figura 9: Protección aplicada a un montaje de aplicación de Windows Phone 7

En cuanto a la protección, es muy importante no olvidar que no existe ningún nivel de protección que pueda

impedir que un hacker muy decidido realice una operación de ingeniería inversa en la mayor parte del código

fuente. Las técnicas de protección están diseñadas para proteger la propiedad intelectual proporcionando

una barrera que dificulta llevar a cabo una operación de ingeniería inversa del código y robarlo.

Conclusión El programador de Windows Phone 7 tiene muchos recursos a su disposición. El punto de partida es App Hub

en MSDN, http://create.msdn.com. Los artículos, blogs y foros ayudan a los programadores en los escenarios

de desarrollo de los más simples a los más avanzados. Los Productos de SharePoint 2010 proporcionan un

amplio abanico de capacidades para las organizaciones que desean colaborar y compartir conocimientos,

experiencia e información. Las aplicaciones empresariales que usan las capacidades de la movilidad y de

SharePoint proporcionarán una gran ventaja a las empresas que pueden administrar, mantener e

implementar de forma eficiente soluciones basadas en la plataforma .NET.

Page 35: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

35

Apéndice: Instalación y configuración de UAG para Productos de SharePoint 2010 En esta sección se describe cómo configurar las redes e instalar y configurar un servidor de UAG para publicar

un sitio de SharePoint para el desarrollo de Windows Phone 7. Estos pasos son adecuados para un entorno

de desarrollo. Para obtener información sobre la implementación en un entrono de producción, vea Guía de

la solución de publicación UAG (http://go.microsoft.com/fwlink/?LinkID=206256) en TechNet. Durante el

proceso de instalación, el servidor de UAG solicitará como mínimo 4 GB de RAM. En un entorno de

demostración, 2 GB son suficientes y la advertencia puede omitirse sin problema alguno.

1. Cree una máquina virtual SharePoint Server y una máquina virtual UAG En este ejemplo, se usa 2010 Information Worker Demonstration and Evaluation Virtual Machine (RTM)

(http://go.microsoft.com/fwlink/?LinkID=189314) para la máquina virtual SharePoint Server. Para crear una

máquina virtual servidor de UAG, instale Windows Server 2008 R2 en una nueva máquina virtual, instale

todas las actualizaciones mediante Windows Update y proceda con los pasos que se indican a continuación.

Redes El siguiente diagrama ilustra cómo están conectados el servidor que ejecuta SharePoint Server, el servidor de

UAG y el equipo de desarrollo de Windows Phone 7. En la documentación que sigue se describe cómo

implementar este escenario.

Page 36: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

36

Windows 7 Development Machine Hyper-V Host Machine

UAG Server Virtual Machine

SharePoint Server Virtual Machine

Visual Studio 2010

.5 .180 .171

.180

.1.6

192.168.150.x – Internal Network | 192.168.1.x – External Network

2. Configure redes de equipos virtuales de host Hyper-V En la máquina host Hyper-V, cree dos redes virtuales como se indica a continuación. Al configurar las dos redes

se simula un entorno DMZ en el que el servidor de UAG habla en Internet en un adaptador de red y habla con

los recursos internos, en este caso, el servidor que ejecuta SharePoint Server, en otro adaptador de red.

Nombre Tipo de conexión Descripción

Interna Interna únicamente Conexión entre el servidor de UAG y el

servidor que ejecuta SharePoint Server.

UAG

externa

Externa: Enlazada al adaptador de red en el

equipo host Hyper-V.

Conexión entre el equipo de desarrollo de

WP7 y el servidor de UAG.

Nota: es posible que las direcciones IP sean ligeramente distintas en su entorno. La clave es hacer que la red

interna opere en una subred distinta de la red externa.

Establezca la configuración de TCP/IP para el adaptador de red interna en el equipo host Hyper-V como se

indica a continuación.

Page 37: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

37

Establezca la configuración de TCP/IP para el adaptador de red externa en el equipo host Hyper-V como

se indica a continuación.

Page 38: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

38

3. Configure redes de equipos virtuales Hyper-V En la máquina virtual servidor de UAG, agregue otro adaptador de red y configure la máquina virtual servidor

de UAG para usar redes internas y redes virtuales externas UAG en Hyper-V.

En la máquina virtual SharePoint Server, agregue otro adaptador de red y configure la máquina virtual

SharePoint Server para usar redes internas y redes virtuales externas UAG en Hyper-V.

Establezca la configuración de TCP/IP para el adaptador de red interna en la máquina virtual servidor de UAG

como se indica a continuación.

Page 39: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

39

Establezca la configuración de TCP/IP para el adaptador de red externa en la máquina virtual servidor de UAG

como se indica a continuación.

Establezca la configuración de TCP/IP para el adaptador de red interna en la máquina virtual SharePoint

Server como se indica a continuación.

Page 40: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

40

Establezca la configuración de TCP/IP para el adaptador de red externa en la máquina virtual SharePoint

Server como se indica a continuación.

Page 41: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

41

4. Prepare la máquina virtual servidor de UAG para la instalación de UAG Inicie sesión en la máquina virtual servidor de UAG. Cambie el nombre del equipo por UAG1, únalo al

dominio contoso.com y reinicie el equipo. Nota: si no usa 2010 Information Worker Demonstration and

Evaluation Virtual Machine (RTM) (vea http://go.microsoft.com/fwlink/?LinkID=189314&clcid=0xC0A), una el

servidor de UAG al mismo dominio que el servidor que ejecuta SharePoint Server. Asegúrese de que 2010

Information Worker Demonstration and Evaluation Virtual Machine (RTM) esté en ejecución.

Use las credenciales siguientes para unir la máquina virtual servidor de UAG al dominio contoso.

Nombre de usuario: contoso\administrator

Contraseña: pass@word1

Reinicie el equipo e inicie sesión con las credenciales contoso\administrator o con las credenciales específicas

de su entorno.

Page 42: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

42

5. Tome una instantánea de la máquina virtual servidor de UAG Apague la máquina virtual servidor de UAG y tome una instantánea en la consola de administración de Hyper-V.

6. Instale el servidor de UAG En primer lugar, monte el medio de instalación de UAG en la máquina virtual servidor de UAG. A continuación,

inicie la máquina virtual servidor de UAG e inicie sesión con las credenciales contoso\administrator. Una vez

que haya iniciado sesión, compruebe que lo ha hecho usando las credenciales de administrador de contoso.

Abra un símbolo del sistema, escriba whoami y presione ENTRAR para comprobar las credenciales.

A continuación, inicie la instalación de UAG desde el medio de instalación. Vea Instalación de SP1 para

Forefront UAG 2010 (http://go.microsoft.com/fwlink/?LinkId=216130) en TechNet para obtener más

información acerca de la instalación. (Nota: no es posible instalar UAG durante una sesión remota; debe

realizar la instalación desde la consola.)

Page 43: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

43

Haga clic en Install Forefront UAG. En un escenario de desarrollo, puede ejecutar la máquina virtual servidor

de UAG con menos de 4 GB de RAM. Si ha asignado menos de 4 GB de RAM a la máquina virtual servidor de

UAG, haga clic en Continue.

Page 44: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

44

En la página de Welcome del asistente, haga clic en Next >.

Page 45: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

45

Haga clic en I accept the Licensing Terms for Microsoft Software y haga clic en Next.

Page 46: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

46

En la página Select Installation Location, haga clic en Next.

Page 47: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

47

El proceso de instalación se inicia en este punto. El instalador instala todos los roles y las características de

los que depende UAG y configura el servidor para UAG.

Page 48: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

48

En la página Setup Wizard Completed, haga clic en Finish.

7. Tome una instantánea de la máquina virtual servidor de UAG Una vez que la máquina virtual servidor de UAG se reinicie y finalice la instalación de UAG, apague la

máquina virtual servidor de UAG y tome una instantánea en la consola de administración de Hyper-V.

8. Configuración y activación inicial del servidor de UAG Inicie la máquina virtual servidor de UAG e inicie sesión con las credenciales contoso\administrator. Una vez

que haya iniciado sesión, compruebe que lo ha hecho usando las credenciales de administrador de contoso.

Abra un símbolo del sistema, escriba whoami y presione ENTRAR para comprobar las credenciales.

Page 49: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

49

Para iniciar el asistente de configuración de UAG, haga clic en Inicio | Todos los programas |Microsoft

Forefront UAG | Forefront UAG Management.

Haga clic en Configure Network Settings.

Page 50: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

50

Haga clic en Next.

Page 51: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

51

Elija la configuración del adaptador de red según se muestra en la captura de pantalla anterior y haga clic en Next.

Page 52: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

52

Haga clic en Next.

Page 53: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

53

Haga clic en Finish.

En este paso, va a definir el servidor de UAG como una configuración de “único servidor”.

Page 54: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

54

Haga clic en Define Server Topology.

Haga clic en Next.

Page 55: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

55

Haga clic en Single Server y, a continuación, en Next.

Page 56: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

56

Haga clic en Finalizar.

Haga clic en Join Microsoft Update.

Page 57: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

57

Haga clic en Next.

Page 58: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

58

Haga clic en Use Microsoft Update when I check for updates (recommended) y, a continuación, en Next.

Page 59: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

59

Elija Yes o No y, a continuación, haga clic en Next.

Page 60: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

60

Haga clic en Finish.

Page 61: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

61

Haga clic en Cerrar.

Haga clic en Yes para activar la configuración.

Page 62: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

62

Escriba una contraseña y haga clic en Next >.

Haga clic en Activar.

Page 63: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

63

Haga clic en Finish.

El asistente para activación ha finalizado; no obstante, es posible que la configuración de UAG todavía no

esté completamente activada. Para asegurarse de que sí lo está, active los mensajes informativos en la

ventana de mensajes.

En el menú Messages, seleccione Filter Messages.

Active la casilla de verificación Informational messages.

Haga clic en OK.

Page 64: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

64

Espere hasta que la ventana de mensajes muestre el mensaje Activation completed successfully.

9. Cree el tronco HTTP para publicar el sitio de SharePoint En este escenario, se usa un tronco HTTP para las actividades de desarrollo. Al usar un tronco HTTP en lugar de

un tronco HTTPS la configuración se acelera gracias a la eliminación de los pasos implicados en la configuración

de los certificados de seguridad para habilitar SSL (Secure Sockets Layer). En un entorno de desarrollo, también

resulta más fácil usar HTTP porque de este modo no es necesario volver a crear los certificados temporales cada

dos semanas. En un entorno de prueba y en un entorno de producción, se recomienda usar un tronco In HTTPS

para proteger las comunicaciones entre los dispositivos móviles y el servidor de UAG. Vea Topologías de

publicación de SharePoint (http://go.microsoft.com/fwlink/?LinkId=216131) en TechNet para obtener más

información sobre las topologías usadas habitualmente para implementar servidores que ejecutan productos

de SharePoint 2010 a través de UAG.

Para crear el tronco HTTP, haga clic en el botón secundario en HTTP Connections y, a continuación, haga clic en

New Trunk.

Haga clic en Next.

Page 65: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

65

En el paso 1 del asistente Create Trunk Wizard, haga clic en Portal Trunk y haga clic en Next.

Page 66: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

66

En el paso 2 del asistente Create Trunk Wizard, escriba ContosoMobile en el cuadro de texto Trunk name.

Este nombre no es un URL explorable, sino que representa un nombre identificable y descriptivo para el

tronco HTTP.

En el cuadro de texto Public Host Name, escriba portal.contoso.com. Este valor expone un punto final para

el tronco HTTP que UAG usa para crear un entorno de un portal que publica todas las aplicaciones en una

misma página, por ejemplo, nuestro sitio SharePoint.

Seleccione la dirección IP que corresponda a la IP de red externa para la máquina virtual servidor de UAG.

Haga clic en Next.

Page 67: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

67

En el paso 3 del asistente Create Trunk Wizard, haga clic en Add para abrir el cuadro de diálogo que permite

agregar el servidor de autenticación al tronco.

Haga clic en Add.

En la lista desplegable Server type, seleccione Active Directory.

En el cuadro de texto Server name, escriba demo2010a.contoso.com. Este es el nombre de dominio

completo (FQDN) para el controlador de dominio que se ejecuta en la máquina virtual SP2010-7a.

Page 68: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

68

En la sección Connection settings, haga clic en Define domain controllers.

En la sección Connection settings, haga clic en Define.

En el cuadro de diálogo Domain Controllers, escriba la dirección IP interna para el controlador de dominio.

En la máquina virtual SP2010-7a, esta dirección IP es 192.168.150.1.

Haga clic en OK.

En la sección Search settings, haga clic en el botón … que se encuentra junto a Base DN.

En el cuadro de diálogo Search Root, en la lista desplegable Select Base DN, seleccione

CN=Users,DC=contoso,DC=com.

Haga clic en OK.

Active la casilla de verificación Include subfolders.

Establezca el valor de Level of nested groups en 0.

En la sección Server access, en el cuadro de texto User (domain\user), escriba contoso\administrator.

En el cuadro de texto password, escriba pass@word1.

Page 69: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

69

Haga clic en OK.

Haga clic en Yes.

Seleccione el servidor demo2010a.contoso.com y haga clic en Select.

Page 70: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

70

Haga clic en User provides credentials for each selected server. (En un entorno de un único servidor como el

que nos ocupa, puede elegir User selects from a server list.)

Active la casilla de verificación Use the same user name.

Haga clic en Next.

Page 71: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

71

Haga clic en Use Forefront UAG access policies.

A efectos del desarrollo, las directivas de acceso predeterminadas de Forefront UAG serán suficientes. En un

entorno de producción, puede ajustar estas directivas a una configuración más específica para su entorno.

Haga clic en Next.

Page 72: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

72

A efectos del desarrollo, las directivas de punto de acceso predeterminadas de Forefront serán suficientes. En

un entorno de producción, puede ajustar estas directivas a una configuración más específica para su entorno.

Haga clic en Next.

Page 73: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

73

La última página del asistente Create Trunk Wizard muestra un resumen de la configuración del tronco.

Haga clic en Finish para finalizar la configuración del tronco.

Page 74: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

74

10. Cree la aplicación de SharePoint En la sección Applications de Forefront UAG Management Console, haga clic en Add.

En el asistente Add Application Wizard, haga clic en Next.

En el paso 2 del asistente Add Application Wizard, haga clic en Web.

En la lista desplegable Web, seleccione Microsoft SharePoint Server 2010.

Page 75: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

75

Haga clic en Next >.

En el cuadro de texto Application name, escriba Contoso Intranet.

Se trata de un nombre descriptivo para la aplicación que va a publicar con el servidor de UAG. Este nombre

aparecerá en la página de inicio de UAG Portal.

Page 76: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

76

Haga clic en Next.

Page 77: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

77

Haga clic en Next.

A efectos del desarrollo, las directivas de punto de acceso predeterminadas de Forefront serán suficientes. En

un entorno de producción, puede ajustar estas directivas a una configuración más específica para su entorno.

Haga clic en Configure an application server.

Page 78: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

78

Haga clic en Next.

Deje Address type como IP/Host.

En la lista Addresses, escriba el nombre de host o la dirección IP interna del servidor que ejecuta SharePoint

Server 2010 192.168.150.1. En función de su entorno, es posible que deba optar por usar el FQDN para el

servidor que ejecuta SharePoint Server o la dirección IP para el hardware de equilibrio de carga.

En la lista Paths, deje la entrada predeterminada «/». Esto indica que la aplicación de SharePoint publicada

se publica en el nivel raíz.

Haga clic en Http port y escriba 80 en el cuadro.

Como se ha indicado anteriormente, el uso de un puerto HTTP en lugar de un puerto HTTPS simplifica la

instalación y configuración de desarrollo. En un entorno de producción, debería usarse un puerto HTTPS para

cifrar las credenciales que se pasan entre los equipos cliente y el servidor de UAG.

En el cuadro de texto Public host name, escriba spwp7intranet. Este es el URL de asignación de acceso

alternativo en el servidor que ejecuta SharePoint que corresponde a la colección de sitios que publica.

Page 79: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

79

Este valor es el URL que el servidor de UAG usará para publicar la aplicación en los equipos cliente. Cuando

acceda a la colección de sitios intranet.contoso.com a través de los clientes de servidor de UAG, use el URL

http://spwp7intranet.contoso.com. El servidor de UAG dirige la solicitud a SharePoint como

http://spwp7intranet.contoso.com una vez que el usuario se ha autenticado. La asignación de acceso

alternativo de SharePoint (que debe configurarse en pasos posteriores) asignará la solicitud a

http://intranet.contoso.com.

Haga clic en Next.

Active la casilla de verificación Use SSO.

Haga clic en Add.

En el cuadro de diálogo Authentication and Authorization Server, seleccione demo2010a.contoso.com.

Page 80: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

80

Haga clic en Select.

En la sección Select client authentication method, haga clic en Both.

Active la casilla de verificación Allow rich clients to bypass trunk authentication.

Active la casilla de verificación Use Office Forms Based Authentication for Office client applications.

Haga clic en Next.

Page 81: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

81

Haga clic en Yes.

En el cuadro de diálogo Portal Link, active la casilla de verificación Open in a new window. El vínculo del

portal es opcional porque la aplicación de Windows Phone 7 accede directamente a las API de SharePoint,

pero el vínculo es una buena herramienta para solucionar problemas.

Page 82: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

82

Haga clic en Next.

Active la casilla de verificación Authorize all users.

En un entorno de desarrollo, conceder acceso a todos los usuarios a la colección de sitios de SharePoint

publicada proporciona máxima flexibilidad para realizar pruebas. En un entorno de producción, conceda acceso

únicamente a los usuarios y grupos que tienen permiso para acceder a la colección de sitios de SharePoint.

Page 83: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

83

Haga clic en Next.

Page 84: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

84

Haga clic en Finish.

11. Configure la aplicación de SharePoint En Forefront UAG Management Console, en la sección Applications, seleccione Contoso Intranet y haga clic

en Edit.

Page 85: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

85

En la ficha Portal Link, active las siguientes casillas de verificación: Computer portal, Premium mobile portal

y Non-premium mobile portal.

Page 86: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

86

Haga clic en OK.

12. Active la configuración En Forefront UAG Management Console, haga clic en el botón Activate de la barra de herramientas.

Aparece el cuadro de diálogo Activate Configuration.

Page 87: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

87

Haga clic en Activate.

La nueva configuración se activa en el servidor de UAG.

Haga clic en Finish.

Espere hasta que la ventana de mensajes de la parte inferior de la consola de administración de Microsoft

Forefront UAG visualice el mensaje Activation completed successfully. Si bien en el cuadro de diálogo

Activation Configuration se indica que la configuración se ha activado correctamente, en realidad no ha

finalizado hasta que aparece el mensaje en la ventana de mensajes.

Page 88: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

88

13. Configure y compruebe las asignaciones de acceso alternativo de SharePoint SharePoint debe configurarse para responder a solicitudes para http://spwp7intranet.contoso.com y asignar

las solicitudes a http://intranet.contoso.com.

1. En Administración central de SharePoint 2010, navegue a la sección Administración de aplicaciones y elija

Administración de aplicaciones Web.

2. Seleccione Intranet y elija Extender (Extender aplicación web) en la cinta.

3. En el cuadro de diálogo Extender una aplicación web a otro sitio web de IIS, escriba la siguiente configuración:

Nombre: SharePoint - spwp7intranet.contoso.com – 80

Puerto: 80

Encabezado de host: spwp7intranet.contoso.com

Zona: Intranet

4. Haga clic en Aceptar.

5. Navegue a Administración de aplicaciones | Aplicaciones web | Configurar asignaciones alternativas de

acceso para confirmar la configuración.

6. Elija Colección de asignaciones de acceso alternativas para la Intranet; debería ver la nueva entrada para

http://spwp7intranet.com.

14. Agregue entradas del archivo hosts al entorno de desarrollo En este escenario, las entradas del archivo hosts se usan para resolver el servidor de UAG y el servidor que

ejecuta SharePoint. También podrían usarse las entradas de DNS, pero los archivos hosts son una solución

alternativa aceptable en un entorno de desarrollo. En un entorno de producción, deben usarse entradas de

DNS para resolver nombres.

En el equipo en el que ejecuta el emulador de Windows Phone 7, agregue una entrada al archivo hosts que

apunte al nombre de host público y a la dirección IP asociada con la aplicación de portal de intranet de

Contoso en el servidor de UAG. El archivo hosts se encuentra en c:\windows\system32\drivers\etc.

192.168.1.171 spwp7intranet.contoso.com

De manera opcional, puede agregar una entrada al sitio principal del portal.

192.168.1.171 portal.contoso.com

Page 89: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

89

15. Pruebe la configuración En el equipo en el que ejecuta el emulador de Windows Phone 7, cierre todos los exploradores web para

asegurarse de que la entrada del archivo hosts se reconoce. A continuación, abra Internet Explorer y navegue

a http://spwp7intranet.contoso.com.

Aparecerá la Aplicación de servidor de UAG y el Portal de acceso a la red.

Descargue e instale el control ActiveX.

Page 90: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

90

Haga clic en Instalar.

Haga clic en Sí.

Active la casilla de verificación Confiar en este sitio y haga clic en Confiar.

Escriba las credenciales de un usuario que tenga acceso al sitio de SharePoint publicado y haga clic en Iniciar

sesión.

Page 91: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

91

El sitio de SharePoint se visualiza en el explorador web. En este punto, es posible acceder al sitio de

SharePoint publicado a través de UAG desde un dispositivo móvil como, por ejemplo, un dispositivo con

Windows Phone 7.

Page 92: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

92

De manera opcional, puede probar el acceso a la página del portal de UAG escribiendo el URL del portal

http://portal.contoso.com en un explorador.

Page 93: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

93

UAG también presenta un Premium Mobile Portal a clientes como Windows Phone. En el explorador del

emulador, escriba el URL para el portal, http://portal.contoso.com, para ser redirigido a la página de inicio de

sesión:

Escriba la credencial de Contoso (por ejemplo, Contoso\tonip y pass@word1) para ser redirigido a Mobile Portal.

Page 94: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

94

Seleccione el enlace de la Intranet de Contoso para ver la página principal de SharePoint.

16. Pruebe el suministro de noticias RSS Cuando los Productos de SharePoint 2010 se publican a través de UAG, algunas de las páginas

predeterminadas no se analizan correctamente. Para este documento, es de vital importancia la página

Activityfeed.aspx que representa el suministro de noticias consolidado. Pruebe su configuración siguiendo las

instrucciones que se indican a continuación.

Page 95: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

95

Activityfeed.aspx Vaya a la página Mi suministro de noticias y elija ver la fuente RSS.

Se visualiza el siguiente error.

Solución La regla predeterminada para ocultar el cierre de sesión se aplica a la página ActivityFeed.aspx. Para cambiar

esta regla a fin de evitar que se aplique la regla, siga estos pasos:

Abra el archivo de configuración de AppWrap adecuado en un editor de texto. Los archivos se encuentran en

el directorio %ProgramFiles%\Microsoft Forefront Unified Access

Gateway\von\Conf\WizardDefaults\AppWrapTemplates.

Realice una copia de seguridad del archivo AppWrap apropiado para el protocolo del portal y edítelo:

HTTP_WhlFiltAppWrap_ForPortal for HTTP and HTTPS_WhlFiltAppWrap_ForPortal for HTTPS.

Page 96: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

96

Localice la línea siguiente:

<!-- for sharepoint 2010 conditional appwrap hide log off -->

<URL case_sensitive="false">.*\.aspx.*</URL>

Modifíquela para que sea como la siguiente:

<!-- for sharepoint 2010 conditional appwrap hide log off changed to

exclude ActivityFeed.aspx -->

<URL case_sensitive="false">^.*(?<!(^|\\|/)(activityfeed))\.aspx.*</URL>

Guarde el archivo y active la nueva configuración.

Regrese a la página Mi suministro de noticias y haga clic en el botón RSS. La página debería representarse

correctamente y los URL se deberían rescribir correctamente.

Page 97: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

97

Recursos

Forefront Unified Access Gateway en TechNet http://go.microsoft.com/fwlink/?LinkId=216132&clcid=0xC0A

Blog Closer to the Edge Autor: Jason Jones

Forefront UAG SP1 Endpoint Assessment Changes Impact Mobile Devices like iPads/iPhones

(http://go.microsoft.com/fwlink/?LinkId=216133)

Blog Silverlight Web Services Team Workaround for accessing some ASMX services from Silverlight 4

(http://go.microsoft.com/fwlink/?LinkId=216134)

Acerca de los autores

Todd Baginski, MVP Todd es un consultor independiente y reconocido en cinco ocasiones como Profesional más valioso

de Microsoft SharePoint que usa tecnologías SharePoint, Silverlight, Office, Windows Phone 7 y

.NET para crear sitios web y soluciones personalizadas para trabajadores de la información. Todd

es el autor y presentador del contenido para la sección Business Connectivity Services (BCS) del

programa SharePoint Microsoft Certified Masters (MCM) y un ponente habitual en las conferencias

de TechEd, SharePoint Connections y Microsoft SharePoint. Todd colabora de forma periódica en

columnas de la revista SharePointPro Connections y recientemente también ha trabajado como

editor técnico para el libro Professional Business Connectivity Services in SharePoint 2010 de Scot

Hillier y Brad Stevenson. Asimismo, Todd ha creado el material educativo Microsoft Business

Productivity Online Suite (BPOS) para SharePoint Online (SPO) 2010 mientras BPOS 2010 se

encontraba en las fases alfa y beta, y entregó el material educativo de BPOS/SPO en una

conferencia post-TechReady 11 solamente para los empleados de Microsoft.

Todd es una persona muy activa a quien gusta dedicar tiempo a su familia e ir a esquiar siempre

que se presenta la oportunidad. Dirección de contacto de Todd: [email protected]

Matthew McDermott, MVP Matthew McDermott, Microsoft SharePoint Server MVP, es un miembro fundador de Aptillon, Inc.

y consultor principal para AbleBlue en Austin, Texas. AbleBlue se especializa en la consultoría de

integración, estrategia e implementación de SharePoint. Matthew es autor y especialista en

tecnologías SharePoint centradas en la administración, colaboración y búsqueda de contenido

web y en sistemas sociales; también ha liderado las implementaciones de SharePoint para

empresas Fortune 500 desde 2002. El blog de Matthew (www.ableblue.com/blog) contiene

temas de interés para programadores, profesionales de TI y usuarios. Dirección de contacto de

Matthew: [email protected]

Page 98: Creación de aplicaciones Windows Phone 7 con …download.microsoft.com/download/F/E/1/FE12E5E6-49A5-4091-B52F... · ¿ómo se establece conexión con SharePoint a través de Unified

98

En su tiempo libre, Matthew trabaja como adiestrador de perros para K9 Search • Austin, un equipo

de investigación K9 de voluntarios que presta servicios al FBI y a los departamentos de policía de

Austin y San Antonio. Matt es un talentoso cocinero y barman y pasa tanto tiempo libre con su

mujer como sus perros le permiten.

Ben Ari Ben Ari es un ingeniero principal de seguridad de Microsoft especializado en UAG y proporciona

soporte para el producto para los clientes Premier y Professional de Microsoft de todo el mundo.

Ben también es un periodista y escritor de blogs muy activo; recientemente ha publicado

Microsoft Forefront UAG 2010 Administrator's Handbook (ISBN 978-1849681629). Dirección del

blog de Ben: http://blogs.technet.com/b/ben