Anhang – Installation und Konfiguration von UAG für

Werbung
Erstellen von Anwendungen für Windows
Phone 7 mit SharePoint 2010-Produkten und
Unified Access Gateway
Dieses Dokument wird „wie besehen“ bereitgestellt. Die in diesem Dokument enthaltenen Informationen
und Ansichten, einschließlich URLs und Verweise auf Internetwebsites, können ohne vorherige Ankündigung
geändert werden. Das Risiko der Nutzung liegt bei Ihnen.
Einige der hier beschriebenen Beispiele dienen ausschließlich der Veranschaulichung und sind rein fiktiv.
Eventuelle Ähnlichkeiten mit realen Unternehmen, Organisationen, Produkten, Domänenamen, E-MailAdressen. Logos, Personen, Orten oder Ereignissen sind Zufall und unbeabsichtigt.
Mit diesem Dokument werden keine Rechte an geistigem Eigentum an einem Microsoft-Produkt auf Sie
übertragen. Sie sind berechtigt, dieses Dokument zu kopieren und für eigene interne Referenzzwecke zu
nutzen. Sie sind berechtigt, dieses Dokument für eigene interne Referenzzwecke zu bearbeiten.
Microsoft, SharePoint, Silverlight, Visual Studio und Windows Phone 7 sind entweder eingetragene Marken
oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern.
© 2011 Microsoft Corporation. Alle Rechte vorbehalten.

Erstellen von Anwendungen für Windows
Phone 7 mit SharePoint 2010-Produkten und
Unified Access Gateway
Dave Pae
Microsoft Corporation
Todd Baginski
Aptillon, Inc.
Matthew McDermott
Aptillon, Inc.
Ben Ari
Microsoft Corporation
März 2011
Gilt für: Microsoft® SharePoint® Server 2010, Microsoft SharePoint Foundation 2010,
Microsoft Forefront Unified Access Gateway, Windows Phone 7™
Zusammenfassung:
In diesem Whitepaper werden Geschäftsszenarien für die Entwicklung mobiler Anwendungen
erörtert, die Features von SharePoint 2010-Produkten für die Zusammenarbeit verwenden und
die Authentifizierung über Microsoft Forefront Unified Access Gateway (UAG) ausführen. Im
Hauptteil des Dokuments werden die erforderlichen Konzepte und der Code erläutert, die für den
sicheren Zugriff auf SharePoint-Listendaten von Windows Phone 7 erforderlich sind. Im Anhang
werden die Installation und die Konfiguration einer Entwicklerinstanz von UAG für den Test und
die Entwicklung von mobilen Anwendungen mit SharePoint 2010-Produkten veranschaulicht.
2
Inhalt
Inhalt ...............................................................................................................................................................3
Übersicht und Ziele ............................................................................................................................................5
Architektur ........................................................................................................................................................6
SharePoint 2010-Produkte – Intranet .............................................................................................................6
UAG ...........................................................................................................................................................6
Intranet – Szenario für die Zusammenarbeit ..........................................................................................................6
Geschäftswert der Zusammenarbeit ...............................................................................................................7
Die Anwendung ...........................................................................................................................................7
Sicherheit........................................................................................................................................................ 12
Speicherung der Anmeldinformationen ......................................................................................................... 12
Authentifizierung ....................................................................................................................................... 13
SharePoint-Dienste........................................................................................................................................... 14
Verwenden von Diensten ............................................................................................................................ 14
Zugreifen auf SharePoint-Listendaten unter Verwendung der OData-Clientbibliothek .......................................... 14
Aktivitätsfeed – RSS ................................................................................................................................... 22
Benutzerprofildienst – Kollegen.................................................................................................................... 25
Benutzerprofildienst – Benutzerprofildaten .................................................................................................... 28
Tests .............................................................................................................................................................. 31
Testen der Anwendung im Emulator ............................................................................................................. 31
Testen der Anwendung auf einem Gerät ....................................................................................................... 31
Überlegungen für Marketplace ........................................................................................................................... 31
Schlussbemerkung ........................................................................................................................................... 35
Anhang – Installation und Konfiguration von UAG für SharePoint 2010-Produkte ...................................................... 36
1. Erstellen eines virtuellen Computers für SharePoint Server und einen virtuellen UAG-Computer ...................... 36
2. Einrichten von virtuellen Netzwerken für den Hyper-V-Hostcomputer ............................................................ 37
3. Einrichten von Netzwerken für den virtuellen Hyper-V-Computer.................................................................. 39
4. Vorbereiten des virtuellen Computers für den UAG-Server für die UAG-Installation ......................................... 42
5. Snapshot des virtuellen Computers für den UAG-Server .............................................................................. 43
6. Installieren des UAG-Servers ................................................................................................................... 43
7. Snapshot des virtuellen Computers für den UAG-Server .............................................................................. 49
8. Erstkonfiguration und Aktivierung des UAG-Servers ................................................................................... 49
9. Erstellen des HTTP-Trunks zum Veröffentlichen der SharePoint-Website ........................................................ 65
10. Erstellen der SharePoint-Anwendung ...................................................................................................... 75
11. Konfigurieren der SharePoint-Anwendung ................................................................................................ 86
12. Aktivieren der Konfiguration .................................................................................................................. 87
13. Konfigurieren und Überprüfen der alternativen SharePoint-Zugriffszuordnung .............................................. 89
3
14. Hinzufügen von Hostdateieinträgen zu der Entwicklungsumgebung ............................................................. 89
15. Testen der Konfiguration ....................................................................................................................... 90
16. Testen von Newsfeed RSS ..................................................................................................................... 96
Ressourcen...................................................................................................................................................... 98
Forefront Unified Access Gateway auf TechNet............................................................................................... 98
Blog „Closer to the Edge“ ............................................................................................................................ 98
Blog des Silverlight-Webdienstteams ............................................................................................................ 98
Informationen zu den Autoren ........................................................................................................................... 98
Todd Baginski, MVP .................................................................................................................................... 98
Matthew McDermott, MVP ........................................................................................................................... 98
Ben Ari ..................................................................................................................................................... 99
4
Übersicht und Ziele
Während Unternehmen wachsen und sich verändern, um mit der Technologie Schritt zu halten, können sich
die Mitarbeiter von der Gemeinschaft des Unternehmens abgekoppelt fühlen. Microsoft® SharePoint 2010Produkte unterstützen zahlreiche Features, die das Engagement und die Zusammenarbeit der Mitarbeiter
unterstützen – von Listen und Bibliotheken, die Dokumente und Informationen speichern und verwalten,
über zentralisierte Benutzerprofile, die es Mitarbeitern ermöglichen, sich selbst und ihre Rolle im
Unternehmen vorzustellen, bis zu Kennzeichnungen und Notizen, die das Auffinden von Informationen
innerhalb und außerhalb der Firewall erleichtern. Windows Phone 7™ ist die neueste Generation mobiler
Geräte, die Microsofts Vision eines mobilen Arbeitsplatzes unterstützen. Windows Phone verfügt über
zahlreiche Features, die „Office in der Cloud“ unterstützen, einschließlich Anwendungen, die Microsoft
Office-Dokumente öffnen und lesen können. Die Windows Phone 7-Entwicklungsumgebung ist für .NETEntwickler zugeschnitten, die bereits über solide Kenntnisse in der Entwicklung für .NET und Microsoft
Silverlight® verfügen. Dieses Whitepaper versucht, die Diskrepanz zwischen Windows Phone-Entwicklern und
SharePoint-Entwicklern zu überbrücken, die Geschäftsanwendungen erstellen möchten, die sich die
Leistungsfähigkeit von SharePoint 2010-Produkten von Windows Phone zunutze machen.
Hinweis: Wenn nicht anders angegeben, bezieht sich SharePoint 2010-Produkte in diesem Whitepaper
auf Microsoft SharePoint® Server 2010 und Microsoft SharePoint Foundation 2010. In den Beispielen und
Szenarien wird SharePoint Server 2010 verwendet.
In diesem Dokument sollen die folgenden Entwicklungsszenarien verdeutlicht werden:





Wie bereite ich die Verbindung zu SharePoint 2010-Produkten von meinen Windows Phone 7-Anwendungen vor?
Wie stelle ich eine Verbindung zu SharePoint über Unified Access Gateway her?
Wie stelle ich eine Verbindung zu SharePoint-Webdiensten her, und wie authentifiziere und nutze ich diese?
Wie erstelle und aktualisiere ich SharePoint-Listenelemente?
Wie nutze ich von SharePoint bereitgestellte RSS-Feeds?
5
Architektur
In dem in diesem Whitepaper dargestellten Szenario ermöglicht es Contoso
seinen Mitarbeitern, eine Verbindung zu SharePoint 2010-Produkten über
Forefront Unified Access Gateway (UAG) herzustellen. UAG übersetzt den auf
dem Telefon konfigurierten externen Hostnamen in den in SharePoint
konfigurierten internen Hostnamen und fügt eine Sicherheits- und
Authentifizierungsschicht hinzu, die von Unternehmen zum Schutz und zum
Steuern ihrer Webressourcen benötigt wird.
SharePoint 2010-Produkte –
Intranet
Das Contoso-Intranet ist eine Unternehmensimplementierung von
SharePoint 2010-Produkten. Die Website ist unter Verwendung einer
Benutzerprofildienst-Anwendung und einer Suchdienstanwendung
konfiguriert. Die mobile Anwendung verwendet den Webdienst des
Benutzerprofildiensts, damit Mitarbeiter Benutzerprofilinformationen auf
ihren Mobiltelefonen anzeigen können.
Weitere Informationen zum Konfigurieren der Benutzerprofildienst-Anwendung finden Sie unter Verwalten des
Benutzerprofildiensts (SharePoint Server 2010) (http://technet.microsoft.com/en-us/library/ee721050.aspx).
UAG
Für die Veröffentlichung einer SharePoint-Website über einen UAG-Server in einer Entwicklungsumgebung
ist außer der Installation und Konfiguration des UAG-Servers die Einrichtung eines Netzwerks auf dem HyperV-Hostcomputer, auf dem Server, auf dem SharePoint Server 2010 ausgeführt wird und auf dem UAG-Server
erforderlich.
Im Anhang wird die Einrichtung dieser Netzwerke und die Installation und Konfiguration eines UAG-Servers
für die Veröffentlichung einer SharePoint-Website für die Windows Phone 7-Entwicklung erläutert. Diese
Schritte eignen sich für eine Entwicklungs- oder eine andere Nicht-Produktionsumgebung. Informationen zur
Bereitstellung einer Umgebung wie dieser in einer Produktionsumgebung finden Sie im Lösungshandbuch für
die SharePoint-Veröffentlichung (http://go.microsoft.com/fwlink/?LinkID=206256) auf der TechNet-Website.
Intranet – Szenario für die Zusammenarbeit
Contoso beschäftigt zahlreiche talentierte Mitarbeiter, die in vielen unterschiedlichen Bereichen der
Produktion tätig sind, einschließlich Arzneimittel und Elektronik. Die Geschäftsleitung von Contoso ist von der
Vision geleitet, Mitarbeiter und Software besser miteinander zu integrieren, damit der Arbeitsplatz nicht nur
produktiver, sondern aus der Perspektive der Mitarbeiter auch besser verbunden ist. Contoso möchte für alle
Mitarbeiter den Zugriff auf die Daten ermöglichen, um die Zufriedenheit und Produktivität der Belegschaft zu
6
erhöhen. Contoso besitzt eine gute Grundlage mit seiner Bereitstellung von SharePoint 2010-Produkten. Das
Unternehmen betrachtet SharePoint als zentrale Unternehmensanwendung, die Benutzerdaten und
Aktivitäten konsolidiert. Contoso möchte jedoch mehr und eine mobile Lösung für seine Mitarbeiter
anbieten. Zu diesem Zweck möchte Contoso eine mobile Anwendung entwickeln, mit der Benutzer ihre
Aktivitäten aus SharePoint anzeigen, die Aktivitäten ihrer Kollegen verfolgen und Listen aktualisieren können,
die in ihrem SharePoint-Intranet gehostet werden.
Geschäftswert der Zusammenarbeit
Auch wenn es einige Unternehmen als Herausforderung betrachten, einen direkten Zusammenhang
zwischen Geschäftswert und den Features für die Zusammenarbeit von SharePoint 2010-Produkten
herzustellen, hat Contoso einen direkten Zusammenhang zwischen der Verbindung von Mitarbeitern und der
Schaffung eines Gemeinschaftsgefühls mithilfe von SharePoint festgestellt. Umso mehr sich Mitarbeiter mit
ihren Freunden am Arbeitsplatz verbunden fühlen, desto zufriedener sind sie an ihrem Arbeitsplatz. Die
Zufriedenheit am Arbeitsplatz führt zu einer besseren Mitarbeiterbindung (und einer einfacheren
Mitarbeiterrekrutierung). Eine bessere Mitarbeiterbindung verringert die Einstellungskosten und führt zu
einem besseren Unternehmensertrag.
Die Anwendung
Mithilfe der mobilen Anwendung möchte Contoso zahlreiche der Features von „Meine Websites“ aus
SharePoint in einem Webbrowser replizieren. Die Anwendung soll aus einer Panoramaseite mit Listenfeldern
für „Zuletzt aufgerufene Personen“, „Mein Newsfeed“, „Meine Aktivitäten“ und „Meine Kollegen“ bestehen.
Jedes Mal, wenn ein Benutzer das Bild eines anderen Benutzers auswählt, wird das Profil des ausgewählten
Benutzers auf einer neuen Seite geöffnet. Suchergebnisse werden in einem Listenfeld dargestellt, und bei der
Auswahl eines Benutzers wird dessen Profil angezeigt. Diese Komponenten werden in Abbildung 1 dargestellt.
Abbildung 1: Die sozialen Funktionen von SharePoint, die Contoso in seiner Anwendung für Windows
Phone 7 verwenden möchte
7
Persönliche Aufgabenliste
Jede persönliche Website verfügt über eine Aufgabenliste, mit der Mitarbeiter den persönlichen Fortschritt
von Aufgaben verfolgen kann. Die Anwendung stellt eine Verbindung zur Aufgabenliste der persönlichen
Website her, sodass Mitarbeiter Aufgaben erstellen, aktualisieren und löschen können.
Mein Newsfeed
Unter „Mein Newsfeed“ (Abbildung 2) auf „Meine Website“ in SharePoint erhalten Benutzer die neuesten
Nachrichten aus dem Unternehmen. Da „Mein Newsfeed“ erweiterbar ist, können Unternehmen wie
Contoso weitere Kanäle für Aktivitäten aus anderen Systemen hinzufügen.
Abbildung 2: „Mein Newsfeed“ auf einer SharePoint-Website, wie sie in einem Webbrowser angezeigt wird
8
Meine Kollegen
Diese von den Benutzern gepflegte Liste von Kollegen („die Personen, denen ich folge“) ist eine wertvolle
Ressource (Abbildung 3). Contoso möchte diese Liste für die mobile Nutzung duplizieren.
Abbildung 3: „Meine Kollegen“ auf einer SharePoint-Website, wie sie in einem Webbrowser angezeigt wird
9
Die Windows Phone-Anwendung verwendet das Panorama-Steuerelement, um die Informationen in einem
fortlaufenden Bereich anzuzeigen, einschließlich vor kurzem aufgerufene Profile. (Abbildung 4)
Abbildung 4: Das Panorama-Steuerelement, das die gesamte Ansicht der Anwendung für Windows Phone 7
anzeigt.
10
Profilkarte
Durch die Auswahl eines Benutzers werden Details aus dem Profil dieses Benutzers angezeigt (Abbildung 5).
Die Profilkarte zeigt Informationen zu dem Benutzer in der mobilen Ansicht an.
Abbildung 5: Details zu einem Benutzer auf einer SharePoint-Website, wie sie in einem Webbrowser
angezeigt werden
11
Abbildung 6: Details zu einem Benutzer auf einer SharePoint-Website, wie sie in der Anwendung für
Windows Phone 7 angezeigt werden
Sicherheit
Die Sicherheit muss von dem Windows Phone-Entwickler sowohl für übertragene als auch für ruhende Daten
beachtet werden. Die sichere Speicherung der Anmeldeinformationen wird durch Verschlüsselung und
isolierte Speicherung erreicht. Weitere Informationen zu den Sicherheitsfunktionen des Telefons finden Sie
unter Sicherheit für Windows Phone (http://go.microsoft.com/fwlink/?LinkId=215977) auf MSDN.
Speicherung der Anmeldinformationen
Windows Phone 7 unterstützt die folgenden kryptografischen Algorithmen:






AES
HMACSHA1
HMACSHA256
Rfc2898DeriveBytes
SHA1
SHA256
Es ist von größter Wichtigkeit, dass Entwickler von mobilen Anwendungen, die Anmeldinformationen auf
dem Telefon speichern, die Sicherheit der gespeicherten Anmeldinformationen für den Fall erwägen, dass
das Gerät verloren geht oder manipuliert wird.
12
Authentifizierung
Windows Phone 7 unterstützt nicht die NTLM-Authentifizierung. Webdienstanforderungen vom Telefon über
UAG müssen den ordnungsgemäßen Authentifizierungsheader erstellen, indem die Anmeldeinformationen
aus dem verschlüsselten Speicher abgerufen und anschließen an den Header des HttpWebRequest-Objekts
angefügt werden. Webanforderungen sollten über HTTPS und die übergebenen Authentifizierungsheader
erfolgen, wie in dem folgenden Beispiel.
upsRequest.Headers["Authorization"] = "Basic " +
Convert.ToBase64String(
Encoding.UTF8.GetBytes(AppSettings.Username + ":" + AppSettings.Password)) +
System.Environment.NewLine;
Wenn ein WCF-Dienstverweis verwendet wird, kann der Header dem SOAP-Client hinzugefügt werden,
indem auf OperationContextScope zugegriffen wird, wie in dem folgenden Beispiel.
using (OperationContextScope scope =
new OperationContextScope(ups.InnerChannel))
{
//Create the Request Message Property
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
//Create the authentication and mobile agent header
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";
//Add the headers to the request
OperationContext.Current.OutgoingMessageProperties.Add(
HttpRequestMessageProperty.Name, request);
//Call the method
ups.GetUserColleaguesAsync(account);
}
13
SharePoint-Dienste
Verwenden von Diensten
Die Anwendung verwendet mehrere SharePoint-Dienste, um die Anforderungen des Unternehmens zu
erfüllen. Diese werden in der folgenden Tabelle zusammengefasst.
Anforderung
Dienst-URL
Methode
Lesen und
Aktualisieren von
Listendaten
http://sharepoint/_vti_bin/listdata.svc
OData-Clientbibliothek
Anzeigen des
Benutzer-Newsfeeds
http://mysitehost/_layouts/activityfeed.aspx?consolidate
d=true
Verwendung
bereitgestellten
Feeds
Anzeigen der
Kollegen des
Benutzers
http://mysitehost/_vti_bin/userprofileservice.asmx
GetUserColleagues
Anzeigen des
Benutzerprofils
http://mysitehost/_vti_bin/userprofileservice.asmx
GetUserProfileByName
des
RSS-
Zugreifen auf SharePoint-Listendaten unter
Verwendung der OData-Clientbibliothek
Die Veröffentlichung einer SharePoint-Websitesammlung über einen UAG-Server ermöglicht die Integration
zwischen Anwendungen für Windows Phone 7 und den SharePoint-REST-APIs. Die OData-Clientbibliothek für die
CTP-Version der Windows Phone 7-Serie (http://go.microsoft.com/fwlink/?LinkId=215984&clcid=0x407)
ermöglicht Windows Phone 7-Geräten die Verwendung von OData-Feeds. Die SharePoint-REST-APIs können
unter Verwendung der OData-Clientbibliothek aufgerufen werden, um Erstellungs-, Lese-, Aktualisierungs- und
Löschvorgänge (Create, Read, Update und Delete, CRUD) für SharePoint-Listendaten auszuführen. Dies
ermöglicht die Integration von Windows Phone 7-Geräten mit Anwendungen für die Zusammenarbeit, die auf der
Grundlage der SharePoint-Plattform erstellt wurden. Das folgende Codebeispiel veranschaulicht die Verwendung
der OData-Clientbibliothek und der SharePoint-REST-APIs, um CRUD-Vorgänge für SharePoint-Listendaten
auszuführen.
Da Sie keine Dienstverweise für die SharePoint-REST-APIs zu einer Windows Phone 7-Anwendung hinzufügen
können, müssen Sie manuell eine Proxyklasse generieren und die Klasse dem Projekt in Microsoft Visual Studio®
als Verweis hinzufügen. DataSvcUtil.exe (http://go.microsoft.com/fwlink/?LinkID=215987) wird zu Generierung
der Proxyklasse verwendet. In diesem Szenario wird die Proxyklasse als ContosoIntranetDataContext bezeichnet.
Diese Klasse wird sehr häufig in den folgenden Codebeispielen verwendet.
14
Die LoadTask-Methode veranschaulicht das Laden von Vorgängen aus einer SharePoint-Aufgabenliste. In
dieser Methode verwendet die ContosoIntranetDataContext-Klasse Einstellungen von IsolatedStorage,
um festzustellen, mit welcher SharePoint-Website eine Verbindung hergestellt werden soll. Der
SendingRequest-Ereignishandler wird der Instanz der ContosoIntranetDataContext-Klasse zugewiesen.
Dieser Ereignishandler wird ausgelöst, wenn die ContosoIntranetDataContext-Klasse eine Anforderung bei
den SharePoint-REST-APIs aufruft. requestUri definiert den REST-Vorgang, und die BeginExecute-Methode
übermittelt die Anforderung. Die BeginExecute-Methode registriert die asynchrone Rückrufmethode, die
ausgelöst wird, wenn die Abfrage abgeschlossen ist.
private void LoadTasks()
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
if (allTasks == null)
{
allTasks = new ObservableCollection<Task>();
}
ObservableCollection<TasksItem> tasks = new
ObservableCollection<TasksItem>();
//Retrieve the settings from isolated storage
SettingsModel settings =
(IsolatedStorageSettings.ApplicationSettings["Settings"]
as SettingsModel);
//Set up the ODATA context to point to the SharePoint site
context = new ContosoIntranetDataContext(
new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));
//Register the event handler used to authenticate to UAG
context.SendingRequest += new EventHandler<SendingRequestEventArgs>(
context_SendingRequest);
//Set the URI to query the Tasks list
//Expand is used to retrieve lookup column values
Uri requestUri = new Uri(context.BaseUri.OriginalString +
"/Tasks()?$expand=AssignedTo,CreatedBy,ModifiedBy");
//Start the async call to query SharePoint
15
context.BeginExecute<TasksItem>(requestUri, QueryCallback, null);
});
}
Der SendingRequest-Ereignishandler wird ausgelöst, wenn die OData-Abfrage an SharePoint 2010-Produkte
gesendet wird. Der Code in diesem Ereignishandler ist wichtig: ohne diesen Code kann ein UAG-Server ein
Windows Phone 7-Gerät nicht ordnungsgemäß identifizieren und nicht richtig zur Authentifizierung des
Benutzers interagieren. Der Benutzer-Agent-Header veranlasst einen UAG-Server mit HTTP 401 anstatt mit
302 zu antworten. Der Autorisierungsheader enthält die verschlüsselten Anmeldeinformationen für den
Benutzer, der auf den OData-Feed zugreift. Die verschlüsselten Anmeldeinformationen werden von dem
UAG-Server verwendet, um den Benutzer zu authentifizieren.
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;
}
Nachdem die Abfrage bei dem Server, auf dem SharePoint Server ausgeführt wird, abgeschlossen ist, wird die
QueryCallback-Methode ausgelöst. Diese Methode analysiert die von der Abfrage zurückgegebenen
Ergebnisse, und fügt diese der an die Benutzeroberflächenelemente der Telefonanwendung gebundenen
ObservableCollection-Liste hinzu.
private void QueryCallback(IAsyncResult asyncResult)
{
IEnumerable<TasksItem> results;
allTaskItems = new ObservableCollection<TasksItem>();
results = context.EndExecute<TasksItem>(asyncResult).ToList()
as IEnumerable<TasksItem>;
ObservableCollection<Task> returnedTasks =
new ObservableCollection<Task>();
foreach (TasksItem tasksItem in results)
{
//Code omitted for brevity: Retrieve metadata about the task…
16
//Create the new Task and set its properties
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
};
//Add each task to the ObservableCollection bound to UI elements.
returnedTasks.Add(task);
allTaskItems.Add(tasksItem);
}
allTasks = returnedTasks;
//UI callback methods omitted for brevity
}
Die SaveTask-Methode erstellt neue Vorgänge und aktualisiert vorhandene Vorgänge. Der folgende Code
veranschaulicht die Verwendung der OData-Clientbibliothek zur Erstellung neuer Vorgänge oder zur
Aktualisierung vorhandener Aufgaben in einer SharePoint-Aufgabenliste von einem Windows Phone 7-Gerät.
17
Die TasksItem-Klasse stellt eine Aufgabe in einer Aufgabenliste dar. Eine TasksItem-Instanz wird erstellt, und ihre
Eigenschaften werden auf die Werte des Formulars festgelegt, das zur Erstellung oder Bearbeitung der Aufgaben
verwendet wurde. Anschließend wird die TasksItem-Instanz mit den bereits in das Telefon geladenen Aufgaben
verglichen, um festzustellen, ob die Aufgabe bereits vorhanden ist. Anhand dieser Prüfung wird festgelegt, ob die
OData-Clientbibliothek zur Erstellung einer neuen Aufgabe in der SharePoint-Aufgabenliste verwendet wird oder
zur Aktualisierung einer vorhandenen. Die BeginSaveChanges-Methode ruft den richtigen Vorgang auf und
registriert die saveChangesCallBack-Rückrufmethode.
public void SaveTask(Task task, Action<Task> callback)
{
taskToSave = task;
#region Create/update new task object
saveTaskCallback = callback;
//Retrieve the settings from isolated storage
SettingsModel settings =
(IsolatedStorageSettings.ApplicationSettings["Settings"]
as SettingsModel);
//Set up the ODATA context to point to the appropriate SharePoint site
context = new ContosoIntranetDataContext(
new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));
//Register the event handler used to authenticate to UAG
context.SendingRequest +=
new EventHandler<SendingRequestEventArgs>(context_SendingRequest);
TasksItem tasksItem = new TasksItem();
tasksItem.Title = task.Title;
tasksItem.Description = task.Body;
tasksItem.AssignedToId = assignedToUserID;
tasksItem.PriorityValue = task.Priority.DisplayString;
tasksItem.StartDate = task.StartDate;
tasksItem.DueDate = task.DueDate;
//Set percent complete
if (task.PercentComplete > 0)
18
{
tasksItem.Complete = (double)task.PercentComplete / 100;
}
else
{
tasksItem.Complete = (double)0;
}
//Set tasks status
tasksItem.StatusValue = task.TaskStatus.DisplayString;
//If the task already exists then update it
if (allTasks.Count > 0 && DoesTaskExist(taskToSave) && task.ListID != 0)
{
tasksItem.Id = task.ListID;
context.AttachTo("Tasks", tasksItem, "*");
context.UpdateObject(tasksItem);
}
//If the task does not exist then create it
else
{
context.AddToTasks(tasksItem);
}
Deployment.Current.Dispatcher.BeginInvoke(
() =>
{
//Start the async call to SharePoint to commit the changes
context.BeginSaveChanges(saveChangesCallBack, context);
}
);
}
19
Nach dem Abschluss der Abfrage wird saveChangesCallBack ausgelöst. Diese Methode analysiert die von der
Abfrage zurückgegebenen Ergebnisse, und aktualisiert die an die Benutzeroberflächenelemente des Telefons
gebundene ObservableCollection-Liste.
private void saveChangesCallBack(IAsyncResult asyncResult)
{
Deployment.Current.Dispatcher.BeginInvoke(
() =>
{
//Get the data context from the response
context = asyncResult.AsyncState as ContosoIntranetDataContext;
//Call the endsavechanges method to commit the change
DataServiceResponse response = context.EndSaveChanges(asyncResult);
//If the task already exists then update it
if (allTasks.Count > 0 && DoesTaskExist(taskToSave))
{
for (int i = 0; i < allTasks.Count; i++)
{
if (allTasks[i].ListID == taskToSave.ListID)
{
//Update the corresponding task in the in-memory collection
allTasks[i] = taskToSave;
//Call the callback to tell the UI the save operation is complete
saveTaskCallback.DynamicInvoke(taskToSave);
break;
}
}
}
//If the task does not exist then create it
else
{
//Add the task to the in-memory collection
allTasks.Add(taskToSave);
//Call the callback to tell the UI the save operation is complete
saveTaskCallback.DynamicInvoke(taskToSave);
}
}
20
);
}
Die DeleteTask-Methode veranschaulicht die Verwendung der OData-Clientbibliothek zum Löschen von Aufgaben
in einer SharePoint-Aufgabenliste von einem Windows Phone 7-Gerät. Diese Methode verwendet die ID,
die einer in der Windows Phone 7-Anwendung ausgewählten Aufgabe zugeordnete ist und erstellt ein auf der ID
basierendes Task-Objekt. Das Task-Objekt wird verwendet, um die entsprechende TasksItem-Klasse in dem
der SharePoint-Aufgabenliste zugeordneten OData-Clientbibliothekkontext zu ermitteln. Nachdem der
entsprechende Eintrag gefunden wurde, wird er zum Löschen markiert. Die BeginSaveChanges-Rückrufmethode
ruft die SharePoint-REST-API auf und registriert die DeleteCallback-Rückrufmethode.
public void DeleteTask(int ID, Action callback)
{
deleteTaskCallback = callback;
taskToDelete = GetTask(ID);
//Retrieve the settings from isolated storage
SettingsModel settings =
(IsolatedStorageSettings.ApplicationSettings["Settings"]
as SettingsModel);
//Set up the ODATA context to point to the appropriate SharePoint site
context = new ContosoIntranetDataContext(
new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));
//Register the event handler used to authenticate to UAG
context.SendingRequest +=
new EventHandler<SendingRequestEventArgs>(context_SendingRequest);
foreach (TasksItem tasksItem in allTaskItems)
{
if (tasksItem.Id == taskToDelete.ListID)
{
context.MergeOption = MergeOption.OverwriteChanges;
context.AttachTo("Tasks", tasksItem, "*");
context.DeleteObject(tasksItem);
//Start the async call to SharePoint to commit the delete
context.BeginSaveChanges(DeleteCallback, context);
break;
21
}
}
}
Nach dem Abschluss der Abfrage wird die DeleteCallback-Methode ausgelöst. Diese Methode analysiert die von
der Abfrage zurückgegebenen Ergebnisse, und entfernt die Aufgabe in der an die Benutzeroberflächenelemente
des Telefons gebundenen ObservableCollection-Liste.
private void DeleteCallback(IAsyncResult asyncResult)
{
Deployment.Current.Dispatcher.BeginInvoke(
() =>
{
//Get the data context from the response
context = asyncResult.AsyncState as ContosoIntranetDataContext;
//Call the endsavechanges method to commit the change
DataServiceResponse response = context.EndSaveChanges(asyncResult);
// Remove the task from the in-memory collection as well
if (taskToDelete != null)
{
//Remove the task from the in-memory collection
GetAllTasks().Remove(taskToDelete);
//Call the callback to tell the UI the delete operation is complete
deleteTaskCallback.DynamicInvoke();
}
}
);
}
Aktivitätsfeed – RSS
Der persönliche Newsfeed und aktuelle Aktivitäten werden von dem Host „Meine Website“ als RSS-Feed
veröffentlicht. Die Anwendung muss lediglich den RSS-Feed anfordern, die Zeichenfolge herunterladen und
die Ergebnisse einem Sammlungsobjekt hinzufügen. Die Aktivitäten werden von dem Host von „Meine
Website“ unter der URL http://<Host_Meiner_Website>/_layouts/activityfeed.aspx?consolidated=true
22
veröffentlicht. (Stellen Sie sicher, dass Sie den RSS-Feed entsprechend den Anweisungen im Anhang am Ende
dieses Dokuments getestet haben, bevor Sie versuchen, auf diesen über den folgenden Code zuzugreifen.)
Die LoadNewsfeed-Methode veranschaulicht die Anforderung des konsolidierten Aktivitätsfeeds für den
authentifizierten Benutzer über UAG. Eine neue HttpWebRequest-Klasse wird erstellt, indem die URI des
konsolidierten Aktivitätsfeeds übergeben wird. Die erforderlichen Clientheader werden der Anforderung
hinzugefügt. Konto und Kennwort sind Variablen, auf die vom verschlüsselten isolierten Speicher zugegriffen
wird. Zur Unterstützung des Model View View Model-Musters wird das MVVM Light Toolkit verwendet
(Weitere Informationen finden Sie auf der MVVM Light Toolkit-Website
(http://go.microsoft.com/fwlink/?LinkId=216135)). In diesem Beispiel wird
DispatcherHelper.CheckBeginInvokeOnUI aufgerufen, um ResponseStream zu verarbeiten, und die
Ergebnisse werden an AddNewsfeedItems übergeben, um die Ergebniswerte zu extrahieren und diese der
NewsfeedItems-Sammlung hinzuzufügen.
private void LoadNewsfeed()
{
//My Newsfeed RSS URL
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;
//Add the necessary headers for UAG
client.Headers["User-Agent"] = "Microsoft Office Mobile";
client.Headers["Authorization"] = "Basic " +
Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Username + ":" +
AppSettings.Password)) +
System.Environment.NewLine;
client.AllowReadStreamBuffering = true;
client.AllowAutoRedirect = true;
// Call and handle the response.
client.BeginGetResponse((asResult) =>
{
DispatcherHelper.CheckBeginInvokeOnUI(
() =>
{
try
23
{
var response = client.EndGetResponse(asResult);
StreamReader reader = new
StreamReader(response.GetResponseStream());
string responseString = reader.ReadToEnd();
AddNewsfeedItems(responseString);
}
catch (WebException failure)
{
throw failure;
}
});
},
null);
}
Nach dem Abschluss des Downloads fügt AddNewsfeedItems die Ergebnisse der an die Benutzeroberfläche
gebundenen Sammlung hinzu. Die responseString-Methode wird in ein XDocument analysiert, und die beiden
Namespaces werden hinzugefügt. LINQ wird verwendet, um die Eintragsammlung abzufragen und
MyNewsfeedViewModel-Objekte zu erstellen, die die resultierenden Newsfeedelemente und die
Autorinformationen erstellen. Schließlich werden die Elemente der MyNewsFeedItems-Sammlung hinzugefügt.
private void AddNewsfeedItems(string responseString)
{
//Parse the XML Response
XDocument newsfeedDoc = XDocument.Parse(responseString);
//Add the necessary Namespaces
XNamespace ns = "http://www.w3.org/2005/Atom";
XNamespace af = "AF";
//Use LINQ to extract the information into a 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 =
24
(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()};
//Add the resulting items to the Collection bound to the UI controls
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
foreach (MyNewsfeedViewModel e in entries.ToList())
{
MyNewsfeedItems.Add(e);
}
});
}
Benutzerprofildienst – Kollegen
Der SharePoint-Benutzerprofildienst ermöglicht das Anzeigen, Erstellen, Bearbeiten und Verwalten von
Benutzerprofilinformationen in SharePoint 2010-Produkten. Der Dienst ist der primäre Einstiegspunkt für die
Anwendung, um Informationen zu Kollegen und Benutzerprofilen abzurufen. Der folgende Code veranschaulicht,
wie der Benutzerprofildienst von Windows Phone 7 über UAG aufgerufen wird.
Erstellen eines Benutzerprofildienst-Verweises
Beginnen Sie damit, Ihrem Windows Phone 7-Projekt einen Dienstverweis hinzuzufügen. Geben Sie die URL
am Endpunkt des SharePoint-Benutzerprofildiensts ein, beispielsweise:
http://spwp7intranet.contoso.com/_vti_bin/userprofileservice.asmx
Geben Sie dem Dienstverweis einen leicht erkennbaren Namen, z. B. UserProfileService, und klicken Sie auf OK.
Die Webmethode „GetUserColleagues“
Die LoadColleagueData-Methode verwendet die GetUserColleaguesAsync-Methode des Benutzerprofildiensts,
um eine Sammlung von Kollegen als ContactData-Objekte zurückzugeben. Nach der Erstellung der Klassen
25
BasicHttpBinding und EndpointAddress wird eine neue UserProfileServiceSoapClient-Klasse mit den
erforderlichen Parametern erstellt. Die Dienstaufrufe in Silverlight müssen asynchron erfolgen. Ein neuer
OnCompleted-Ereignishandler wird für das GetUserColeaguesCompleted-Ereignis hinzugefügt. Um die von UAG
benötigten Header hinzuzufügen, wird ein OperationContextScope-Objekt verwendet, und eine
HttpRequestMessageProperty-Klasse wird erstellt, die die beiden Header enthalten, die für die Authentifizierung
bei UAG erforderlich sind. Die Header werden der ausgehenden Meldung hinzugefügt, und der asynchrone Aufruf
erfolgt an GetUserColleaguesAsync unter Verwendung des Benutzerkontos als Parameter.
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);
//Add the Event Completed Handler
ups.GetUserColleaguesCompleted +=
new EventHandler<GetUserColleaguesCompletedEventArgs>(
ups_GetUserColleaguesCompleted);
//Add the credentials
using (OperationContextScope scope =
new OperationContextScope(ups.InnerChannel))
{
//Create the Request Message Property
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
//Create the authentication and mobile agent header
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";
//Add the headers to the request
26
OperationContext.Current.OutgoingMessageProperties.Add(
HttpRequestMessageProperty.Name, request);
//Call the method
ups.GetUserColleaguesAsync(account);
}
}
Wenn die GetUserColleaguesAsync-Methode Ergebnisse zurückgibt, wird das ups_GetUserColleaguesCompletedEreignis aufgerufen. Wenn kein Fehler auftritt, wird LINQ verwendet, um eine Liste des PersonViewModels-Objekts
aus der resultierenden ContactData-Klasse zu erstellen. Der letzte Schritt ist das Hinzufügen des PersonViewModelsObjekts aus der Liste zu der Liste der ColleaguesList-Objekte im Benutzteroberflächenthread durch den Aufruf der
CheckBeginInvoke-Methode und die Übergabe unserer Liste des PersonViewModels-Objekts.
private void ups_GetUserColleaguesCompleted(object sender,
GetUserColleaguesCompletedEventArgs e)
{
if (e.Error == null)
{
//Create a list of PersonViewModels
IEnumerable<PersonViewModel> colleagues =
from contact in e.Result
select new PersonViewModel()
{
AccountName = contact.AccountName,
UserProfileID = contact.UserProfileID.ToString(),
Name = contact.Name,
Title = contact.Title,
Email = contact.Email,
PersonalSiteUrl = contact.Url
};
//Load the Colleagues list on the UI thread
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
foreach (PersonViewModel c in colleagues.ToList())
{
Colleagues.Add(c);
}
27
});
}
else
{
Debug.WriteLine("Error loading the Colleagues List: {0}",
e.Error.Message);
}
}
Benutzerprofildienst – Benutzerprofildaten
Die GetUserColleagues-Webmethode gibt keine Benutzerprofile zurück. Die Methode gibt das
ContactData-Objekt zurück, das an die GetUserProfileByName-Methode des Benutzerprofildiensts
zurückgegeben werden kann, die ein vollständiges Benutzerprofilobjekt zurückgibt, das zum Anzeigen eines
vollständigen Benutzerprofils verwendet werden kann. Die folgende Methode wird verwendet, um die
Benutzerprofildetails für unsere Kollegen zurückzugeben. Es werden die Felder AboutMe, WorkPhone,
MobilePhone und PictureURL zurückgegeben.
Die GetUserProfileProperties-Methode verwendet ein PersonViewModel-Objekt für die Person, deren Profil wir
abrufen möchten. In dieser Methode erstellen wir einen Meldungsinspektor, um ein Problem zu beheben, das
verhindert, dass der Rückgabewert der PropertyData-Klasse nicht ordnungsgemäß analysiert wird. Anschließend
erstellen wir eine BasicHttpMessageInspectorBinding-Methode, die den Meldungsinspektor als Parameter
verwendet, die Bindung und den Endpunkt für die UserProfileServiceSoapClient-Methode übergibt und den
GetUserProfileByNameCompleted-Ereignsihandler registriert. Um die von UAG benötigten Anforderungsheader
hinzuzufügen fügt ein OperationContextScope-Objekt der Anforderung die Header Authorization und UserAgent
hinzu. Anschließend wird die GetUserProfileByNameAsync-Methode aufgerufen und der Kontoname für den
Benutzer und das zu aktualisierende PersonViewModel-Objekt übergeben.
private void GetUserProfileProperties(PersonViewModel person)
{
//URL for the service
string url = String.Format("{0}/_vti_bin/userprofileservice.asmx",
AppSettings.ServerUrl);
//Create the Message Inspector
SPAsmxMessageInspector messageInspector = new SPAsmxMessageInspector();
//Apply the Message Inspector to the Binding
BasicHttpMessageInspectorBinding binding = new
BasicHttpMessageInspectorBinding(messageInspector);
28
EndpointAddress endpoint = new EndpointAddress(url);
UserProfileService.UserProfileServiceSoapClient ups = new
UserProfileServiceSoapClient(binding, endpoint);
//Add the Event Completed Handler
ups.GetUserProfileByNameCompleted += new
EventHandler<GetUserProfileByNameCompletedEventArgs>
(ups_GetUserProfileByNameCompleted);
using (OperationContextScope scope = new
OperationContextScope(ups.InnerChannel))
{
//Create the Request Message Property
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
//Create the authentication and mobile agent header
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";
//Add the headers to the request
OperationContext.Current.
OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, request);
Debug.WriteLine("Getting User Profile for: {0}", person.AccountName);
//Call the method
ups.GetUserProfileByNameAsync(person.AccountName, person);
}
}
Wenn der GetUserProfileByNameCompleted-Ereignsihandler aufgerufen wird, werden die
Rückgabeeigenschaftswerte (falls vorhanden) untersucht und der entsprechenden Eigenschaft des
PersonViewModel-Objekts zugewiesen.
private void ups_GetUserProfileByNameCompleted(object sender,
GetUserProfileByNameCompletedEventArgs e)
29
{
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;
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);
}
30
}
Hinweis: Der Meldungsinspektor in diesem Beispiel wird nur zur Verwendung in einer Umgebung empfohlen,
in der die neuesten Silverlight-Updates ausgeführt wurden. Weitere Informationen finden Sie unter
Problemumgehung für den Zugriff auf einige ASMX-Dienste aus Silverlight 4
(http://go.microsoft.com/fwlink/?LinkID=216134 ) und GUIDs für den Silverlight- und SharePointBenutzerprofildienst (http://go.microsoft.com/fwlink/?LinkId=216136).
Tests
Testen der Anwendung im Emulator
Die Anwendung in diesem Beispiel wird im Windows Phone 7-Entwicklungsemulator getestet. Der Emulator
verwendet die Netzwerkverbindung des Entwicklungshostcomputers. Bei Bedarf können dem
Entwicklungscomputer Hostdateieinträge hinzugefügt werden, damit der Emulator die Adressen des UAGEntwicklungsservers auflösen kann.
Testen der Anwendung auf einem Gerät
Damit die Anwendung auf einem physischen Windows Phone-Gerät getestet werden kann, muss dieses
Telefon mit einem öffentlich verfügbaren WLAN verbunden sein, das DNS und Weiterleitung zu dem ZielUAG-Testserver oder einem mit dem Internet verbundenen UAG-Testserver bereitstellt.
Überlegungen für Marketplace
Nachdem Sie Ihre Anwendung für Windows Phone 7 entwickelt haben, müssen Sie die richtigen Schritte
ausführen, um Ihre Anwendung auf sichere Weise auf dem Windows Phone Marketplace zu veröffentlichen.
Microsoft hat bereits mehrere Mechanismen implementiert, um Softwarepiraterie bei Anwendungen für
Windows Phone 7 zu verhindern. Weiter Informationen zu diesen Maßnahmen finden Sie unter Windows
Phone Marketplace – Whitepaper zum Model gegen Softwarepiraterie
(http://go.microsoft.com/fwlink/?LinkId=216137).
Die grundlegenden Schritte zur Veröffentlichen einer Anwendung für Windows Phone 7 auf dem Windows Phone
Marketplace bestehen darin, ein Entwicklerkonto zu erstellen und Ihre Anwendung auf dem Marketplace zu
veröffentlichen. Im Artikel Exemplarische Vorgehensweise für die Registrierung als App Hub-Entwickler
(http://go.microsoft.com/fwlink/?LinkId=216138) wird die Registrierung eines Entwicklerkontos erläutert.
Es muss darauf hingewiesen werden, dass ein Entwicklerkonto an eine Person oder an ein Unternehmen
gebunden werden kann. In Abhängigkeit von Ihren Bedürfnissen können Sie sich für ein Konto anmelden, dass am
zweckmäßigsten für Sie ist. Die Registrierungsgebühr für beide Kontotypen ist die gleiche. Im Artikel
Exemplarische Vorgehensweise für die Einreichung einer Anwendung für Windows Phone 7
(http://go.microsoft.com/fwlink/?LinkId=216139) wird erläutert, wie Sie Ihre Anwendung zur Überprüfung und
Veröffentlichung einreichen. Wenn Ihre Anwendung die Anforderungen für die Zertifizierung von Anwendungen
für Windows Phone 7 [PDF] (http://go.microsoft.com/?linkid=9730558), erfüllt, wird sie auf dem Windows Phone
Marketplace veröffentlicht.
31
Zum Zeitpunkt der Veröffentlichung dieses Whitepapers gibt es keinen „privaten Marketplace“ für
Unternehmen, der die öffentliche Verbreitung ihrer Anwendungen verhindert. Informieren Sie sich unter App
Hub (http://create.msdn.com) über Updates und Informationen zur Möglichkeiten für Unternehmen,
Anwendungen privat zu veröffentlichen.
Auch wenn Microsoft zahlreiche Sicherheitsmechanismen implementiert hat, sollten Sie weiterhin besondere
Vorsichtsmaßnahmen ergreifen, um Ihren Code zu schützen, falls jemand in den Besitz einer Kopie der
.xap-Datei gelangt, die Ihre Anwendung für Windows Phone 7 darstellt. Bevor Sie Ihrer Anwendung auf dem
Windows Phone Marketplace veröffentlichen, sollten Sie sicherstellen, dass Sie Ihre Anwendung verschleiert
haben, um Ihr geistiges Eigentum zu schützen. Es sind bereits zahlreiche Tools zur Verschleierung von
Anwendungen für Windows Phone 7 verfügbar.
Auch wenn die folgende Liste nicht vollständig ist, stellt sie doch einen guten Ausgangspunkt für das
Kennenlernen der zurzeit verfügbaren Option dar.
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/)
Eine zuverlässige Verschleierung ist ein sich wiederholenden Vorgang, der Zeit zum Testen und Prüfen
benötigt. Planen Sie Zeit in Ihren Projektplan ein, um Ihre Anwendung für Windows Phone 7 zu verschleiern,
dies zu testen und zu überprüfen, dass der Umfang der Verschleierung Ihren Anforderungen entspricht.
Sie können das Windows Phone 7 Application Deployment Tool (Abbildung 7) verwenden, um verschleierte
Anwendungen für Windows Phone 7 zu testen. Dieses Tools ermöglicht die Bereitstellung Ihrer
verschleierten Anwendung für Windows Phone 7 auf einem tatsächlichen Windows Phone 7-Gerät, das Sie
mithilfe Ihres Entwicklerkontos registriert haben oder die Bereitstellung im Windows Phone 7-Emulator.
32
Abbildung 7: Windows Phone 7 Application Deployment Tool
Nach der Bereitstellung und dem Test einer verschleierten Anwendung für Windows Phone 7 stellen Sie
möglicherweise fest, dass die Anwendung bei einer sehr starken Verschleierung (bei der alle verfügbaren
Optionen zum Schutz des Codes aktiviert wurden) auf einem Windows Phone 7-Gerät oder im Windows
Phone 7-Emulator nicht richtig ausgeführt wird. Andererseits stellen Sie möglicherweise fest, dass Ihre
Anwendung bei Verwendung einer minimalen Verschleierung zwar richtig ausgeführt wird, der Umfang der
Verschleierung jedoch nicht Ihren Anforderungen entspricht.
Sie können folgendermaßen vorgehen, um festzustellen, welcher Grad der Verschleierung von einem
Verschleierungstool auf Ihre Anwendung angewendet wurde. Suchen Sie zunächst die .xap-Datei, die Ihre
Anwendung für Windows Phone 7 darstellt, und benennen Sie Sie Dateierweiterung zu .cab oder .zip um.
Öffnen Sie anschließend die Archivdatei, und extrahieren Sie den Inhalt. Verwenden Sie anschließend ein
Tool wie RedGate .NET Reflector, um die Ihrer Anwendung entsprechende Assembly zu öffnen. Wenn Sie
33
den Knoten Resources öffnen, können Sie alle XAML-Dateien anzeigen und diese auf der Festplatte
speichern. (Abbildung 8)
Abbildung 8: Speichern von XAML-Dateien mithilfe von .NET Reflector
Anschließend können Sie die XAML-Dateien untersuchen, und den Grad der Verschleierung feststellen, der
auf den Code angewendet wurde. Sie sind möglicherweise erstaunt darüber, dass eine geringe
Verschleierung den Inhalt einer XAML-Datei gar nicht verändert und eine stärkere Verschleierung lediglich
Leerzeichen entfernt. Daher empfiehlt sich die Verwendung des Model View View Model-Musters,
um Präsentationslogik und Code von Datenzugriffsschichten zu trennen.
Sie können auch den Code in den Assemblys untersuchen, auf denen Ihre Anwendung für Windows Phone 7
basiert. Abbildung 9 stellt eine verschleierte Assembly dar.
34
Abbildung 9: Auf einer Anwendungsassembly für Windows Phone 7 angewendete Verschleierung
In Bezug auf die Verschleierung ist zu bedenken, dass keine noch so starke Verschleierung einen sehr
versierten Hacker davon abhalten kann, den größten Teil Ihres Quellcodes zurückzuentwickeln.
Verschleierungsverfahren dienen dazu, geistiges Eigentum zu schützen, indem eine Barriere geschaffen wird,
die eine Rückentwicklung und Diebstahl des Codes wesentlich erschwert.
Schlussbemerkung
Es stehen zahlreiche Ressourcen für Windows Phone 7-Entwickler zur Verfügung. Der Ausgangspunkt dafür
ist App Hub auf MSDN, http://create.msdn.com. Die Artikel, Blogs und Foren unterstützen Entwickler bei
einfachen sowie bei fortgeschrittenen Entwicklungsszenarien. SharePoint 2010-Produkte bieten zahlreiche
Funktionen für Unternehmen, die die Zusammenarbeit, den Austausch von Kenntnissen, Erfahrungen und
Informationen fördern möchten. Unternehmensanwendungen, die Funktionen sowohl von mobilen Geräten
als auch von SharePoint nutzen, stellen einen leistungsstarken Vorteil für Unternehmen dar, die Lösungen auf
der Grundlage der .NET-Plattform effizient verwalten, warten und entwickeln können.
35
Anhang – Installation und Konfiguration von
UAG für SharePoint 2010-Produkte
In diesem Abschnitt wird die Einrichtung von Netzwerken und die Installation und Konfiguration eines UAGServers für die Veröffentlichung einer SharePoint-Website für die Windows Phone 7-Entwicklung erläutert.
Diese Schritte eignen sich für eine Entwicklungsumgebung. Informationen zur Bereitstellung in einer
Produktionsumgebung finden Sie im Lösungshandbuch für die UAG-Veröffentlichung
(http://go.microsoft.com/fwlink/?LinkID=206256) auf TechNet. Der UAG-Server benötigt während des
Installationsvorgangs mindestens 4 GB RAM. Für eine Demoumgebung sind 2 GB ausreichend, und die
Warnmeldung kann ignoriert werden.
1. Erstellen eines virtuellen Computers für
SharePoint Server und einen virtuellen
UAG-Computer
In diesem Beispiel wird 2010 Information Worker Demonstration and Evaluation Virtual Machine (RTM)
(http://go.microsoft.com/fwlink/?LinkID=189314) für den virtuellen Computer für SharePoint Server
verwendet. Zur Erstellung des virtuellen Computers für den UAG-Server installieren Sie Windows Server 2008
R2 auf einem virtuellen Computer, installieren Sie alle Updates unter Verwendung von Windows Update und
fahren Sie mit den folgenden Schritten fort.
Netzwerke
Im folgenden Diagramm wird veranschaulicht, wie der Server, auf dem SharePoint Server, der UAG-Server
und der Entwicklungscomputer für Windows Phone 7 miteinander verbunden werden. In der folgenden
Dokumentation wird die Implementierung dieses Szenarios erläutert.
36
Windows 7 Development Machine
Hyper-V Host Machine
.5
.180
.171
UAG Server Virtual
Machine
.180
Visual Studio 2010
.6
.1
SharePoint Server
Virtual Machine
192.168.150.x – Internal Network | 192.168.1.x – External Network
2. Einrichten von virtuellen Netzwerken für den
Hyper-V-Hostcomputer
Erstellen Sie auf dem Hyper-V-Hostcomputer folgendermaßen zwei virtuelle Netzwerke. Durch die
Einrichtung von zwei Netzwerken wird eine Umkreisnetzwerkumgebung simuliert, bei der der UAG-Server
über einen Netzwerkadapter mit dem Internet kommuniziert und über den anderen Netzwerkadapter mit
internen Ressourcen – in diesem Fall dem Server, auf dem SharePoint Server ausgeführt wird.
Name
Verbindungstyp
Beschreibung
Intern
Nur intern
Verbindung zwischen dem UAG-Server und
dem Server, auf dem SharePoint Server
ausgeführt wird
UAG
extern
Extern – Gebunden an den Netzwerkadapter Verbindung
zwischen
dem
WP7Entwicklungscomputer und dem UAGauf dem Hyper-V-Hostcomputer
Server
Hinweis: Die IP-Adresse kann in Ihrer Umgebung geringfügig abweichen. Es ist entscheidend, dass das interne
Netzwerk in einem anderen Subnetz ausgeführt wird als das externe Netzwerk.
37
Legen Sie die TCP/IP-Einstellungen für den Adapter des internen Netzwerks auf dem Hyper-V-Hostcomputer
folgendermaßen fest.
Legen Sie die TCP/IP-Einstellungen für den Adapter des externen Netzwerks auf dem Hyper-V-Hostcomputer
folgendermaßen fest.
38
3. Einrichten von Netzwerken für den virtuellen
Hyper-V-Computer
Fügen Sie auf dem virtuellen Computer des UAG-Servers einen weiteren Netzwerkadapter hinzu, und
konfigurieren Sie den virtuellen Computer des UAG-Servers für die Verwendung der internen und externen
virtuellen UAG-Netzwerke in Hyper-V.
Fügen Sie auf dem virtuellen Computer für SharePoint Server einen weiteren Netzwerkadapter hinzu,
und konfigurieren Sie den virtuellen Computer für SharePoint Server für die Verwendung der internen und
externen virtuellen UAG-Netzwerke in Hyper-V.
39
Legen Sie die TCP/IP-Einstellungen für den Adapter des internen Netzwerks auf dem virtuellen Computer für
den UAG-Server folgendermaßen fest.
Legen Sie die TCP/IP-Einstellungen für den Adapter des externen Netzwerks auf dem virtuellen Computer für
den UAG-Server folgendermaßen fest.
40
Legen Sie die TCP/IP-Einstellungen für den Adapter des internen Netzwerks auf dem virtuellen Computer für
SharePoint Server folgendermaßen fest.
Legen Sie die TCP/IP-Einstellungen für den Adapter des externen Netzwerks auf dem virtuellen Computer für
SharePoint Server folgendermaßen fest.
41
4. Vorbereiten des virtuellen Computers für den
UAG-Server für die UAG-Installation
Melden Sie sich bei dem virtuellen Computer für den UAG-Server an. Benennen Sie diesen zu UAG1 um,
fügen Sie ihn der Domäne contoso.com hinzu, und starten Sie den Computer neu. Hinweis: Wenn Sie nicht
2010 Information Worker Demonstration and Evaluation Virtual Machine (RTM) verwenden
(siehe http://go.microsoft.com/fwlink/?LinkID=189314&clcid=0x407), fügen Sie den UAG-Server der gleichen
Domäne hinzu wie den Server, auf dem SharePoint Server ausgeführt wird. Stellen Sie sicher, dass 2010
Information Worker Demonstration and Evaluation Virtual Machine (RTM) ausgeführt wird.
Verwenden Sie die folgenden Anmeldeinformationen, um den virtuellen Computer für den UAG-Server der
Domäne contoso hinzuzufügen.
Benutzername: contoso\administrator
Kennwort: pass@word1
42
Starten Sie den Computer neu, und melden Sie sich unter Verwendung der Anmeldeinformationen
„contoso\administrator“ oder der für Ihre Umgebung spezifischen Anmeldinformationen an.
5. Snapshot des virtuellen Computers für den
UAG-Server
Fahren Sie den virtuellen Computer für den UAG-Server herunter, und erstellen Sie einen Snapshot in der
Hyper-V-Verwaltungskonsole.
6. Installieren des UAG-Servers
Stellen Sie zunächst UAG-Installationsmedien auf dem virtuellen Computer für den UAG-Server bereit.
Starten Sie anschließend den virtuellen Computer für den UAG-Server, und melden Sie sich unter
Verwendung der Anmeldinformationen „contoso\administrator“ an. Nachdem Sie sich angemeldet haben,
überprüfen Sie, dass Sie sich mithilfe der Anmeldeinformationen „contoso\administrator“ angemeldet
haben. Öffnen Sie eine Eingabeaufforderung, geben Sie whoami ein, und drücken Sie die EINGABETASTE, um
die Anmeldeinformationen zu überprüfen.
Starten Sie anschließend die UAG-Installation vom Installationsmedium. Weitere Installationsinformationen
finden Sie unter Installieren von SP1 für Forefront UAG 2010
43
(http://go.microsoft.com/fwlink/?LinkId=216130) auf TechNet. (Hinweis: Sie können UAG nicht während
einer Remotesitzung installieren, Sie müssen es von der Konsole aus installieren.)
Klicken Sie auf Forefront UAG installieren. In einem Entwicklungsszenario können Sie den virtuellen
Computer für den UAG-Server mit weniger als 4 GB RAM ausführen. Wenn Sie dem virtuellen Computer für
den UAG-Server weniger als 4 GB zugwiesen haben, klicken Sie auf Weiter.
44
Klicken Sie auf der Willkommenseite des Assistenten auf Weiter >.
45
Klicken Sie auf Ich akzeptiere die Lizenzbedingungen für Microsoft-Software und dann auf Weiter.
46
Klicken Sie auf der Seite Installationsspeicherort auswählen auf Weiter.
47
An diesem Punkt beginnt der Installationsvorgang. Das Installationsprogramm installiert alle von UAG
benötigten Rollen und Features und konfiguriert den Server für UAG.
48
Klicken Sie auf der Seite Setup-Assistent ist abgeschlossen auf Fertig stellen.
7. Snapshot des virtuellen Computers für den
UAG-Server
Nach dem Neustart des virtuellen Computers für den UAG-Server und dem Abschluss der UAG-Installation
fahren Sie den virtuellen Computer für den UAG-Server herunter, und erstellen Sie einen Snapshot in der
Hyper-V-Verwaltungskonsole.
8. Erstkonfiguration und Aktivierung des
UAG-Servers
Starten Sie den virtuellen Computer für den UAG-Server, und melden Sie sich unter Verwendung der
Anmeldinformationen „contoso\administrator“ an. Nachdem Sie sich angemeldet haben, überprüfen Sie, dass Sie
sich mithilfe der Anmeldeinformationen „contoso\administrator“ angemeldet haben. Öffnen Sie eine
Eingabeaufforderung, geben Sie whoami ein, und drücken Sie die EINGABETASTE, um die Anmeldeinformationen
zu überprüfen.
49
Zum Starten des UAG-Konfigurationsassistenten klicken Sie auf Start | Alle Programme |Microsoft Forefront
UAG | Forefront UAG-Verwaltung.
Klicken Sie auf Netzwerkeinstellungen konfigurieren.
50
Klicken Sie auf Weiter.
51
Nehmen Sie die Einstellungen für den Netzwerkadapter entsprechend dem vorstehenden Screenshot vor,
und klicken Sie auf Weiter.
52
Klicken Sie auf Weiter.
53
Klicken Sie auf Fertig stellen.
In diesem Schritt definieren Sie den UAG-Server als „Einzelserver“-Konfiguration.
54
Klicken Sie auf Servertopologie definieren.
Klicken Sie auf Weiter.
55
Klicken Sie auf Einzelner Server, und klicken Sie dann auf Weiter.
56
Klicken Sie auf Fertig stellen.
Klicken Sie auf An Microsoft Update teilnehmen.
57
Klicken Sie auf Weiter.
58
Klicken Sie auf Microsoft Update beim Überprüfen auf Updates verwenden (empfohlen), und klicken Sie
dann auf Weiter.
59
Klicken Sie auf Ja oder Nein, und klicken Sie dann auf Weiter.
60
Klicken Sie auf Fertig stellen.
61
Klicken Sie auf Schließen.
Klicken Sie auf Ja, um die Konfiguration zu aktivieren.
62
Geben Sie ein Kennwort ein, und klicken Sie dann auf Weiter >.
Klicken Sie auf Aktivieren.
63
Klicken Sie auf Fertig stellen.
Der Aktivierungsassistent ist abgeschlossen, die UAG-Konfiguration ist jedoch möglicherweise noch nicht
vollständig aktiviert. Um dies sicherzustellen, aktivieren Sie die Informationsmeldungen im Meldungsfenster.
Klicken Sie im Menü Meldungen auf Meldungen filtern.
Aktivieren Sie das Kontrollkästchen Informative Meldungen.
Klicken Sie auf OK.
Warten Sie, bis im Meldungsfenster die Meldung Aktivierung erfolgreich abgeschlossen angezeigt wird.
64
9. Erstellen des HTTP-Trunks zum
Veröffentlichen der SharePoint-Website
In diesem Szenario wird ein HTTP-Trunk zu Entwicklungszwecken verwendet. Durch die Verwendung eines
HTTP-Trunks anstatt eines HTTPS-Trunks lässt sich die Konfiguration beschleunigen, da die für die Einrichtung
von Sicherheitszertifikaten für Secure Sockets Layer (SSL) erforderlichen Schritte entfallen. In einer
Entwicklungsumgebung ist die Verwendung von HTTP zudem einfacher, da auf diese Weise nicht alle zwei
Wochen ein neues temporäres Zertifikat erstellt werden muss. In einer Test- und in einer
Produktionsumgebung wird ein HTTPS-Trunk empfohlen, um die Kommunikation zwischen mobilen Geräten
und dem UAG-Server zu gewährleisten. Informationen zu häufig verwendeten Topologien für die Bereitstellung
von Servern, auf denen SharePoint 2010-Produkte ausgeführt werden, über UAG finden Sie unter Topologien
für die SharePoint-Veröffentlichung (http://go.microsoft.com/fwlink/?LinkId=216131) auf TechNet.
Klicken Sie im Navigationsbereich auf HTTPS-Verbindungen, und klicken Sie dann auf Neuer Trunk.
Klicken Sie auf Weiter.
65
Klicken Sie in Schritt 1 des Assistenten zum Erstellen eines Trunks auf Portal-Trunk, und klicken Sie dann auf
Weiter.
66
Geben Sie in Schritt 2 des Assistenten zum Erstellen eines Trunks im Feld Trunkname den Wert
ContosoMobile ein. Dieser Name ist keine navigierbare URL, sondern ein identifizierbarer Anzeigenahme für
den HTTP-Trunk.
Geben Sie im Textfeld Öffentlicher Hostname den Wert portal.contoso.com ein. Dieser Wert macht für den
HTTP-Trunk einen Endpunkt verfügbar, der von UAG zur Erstellung einer einzelnen Portalumgebung
verwendet wird, die alle Anwendungen auf einer einzigen Seite veröffentlicht, beispielsweise unsere
SharePoint-Website.
Wählen Sie die IP-Adresse entsprechend der IP-Adresse des externen Netzwerks für den virtuellen Computer
für den UAG-Server aus.
Klicken Sie auf Weiter.
67
Klicken Sie in Schritt 3 des Assistenten zum Erstellen eines Trunks auf Hinzufügen, um das Dialogfeld zu
öffnen, in dem Sie dem Trunk den Authentifizierungsserver hinzufügen können.
Klicken Sie auf Hinzufügen.
Wählen Sie in der Dropdownliste Servertyp die Option Active Directory aus.
Geben Sie im Textfeld Servername den Wert demo2010a.contoso.com ein. Dies ist der vollqualifizierte
Domänenname für den Domänencontroller, der auf dem virtuellen Computer SP2010-7a ausgeführt wird.
68
Klicken Sie im Abschnitt Verbindungseinstellungen auf Domänencontroller definieren.
Klicken Sie im Abschnitt Verbindungseinstellungen auf Definieren.
Geben Sie im Dialogfeld Domänencontroller die interne IP-Adresse für den Domänencontroller ein. Für den
virtuellen Computer SP2010-7a ist diese IP-Adresse 192.168.150.1.
Klicken Sie auf OK.
Klicken Sie im Abschnitt Sucheinstellungen auf die Schaltfläche … neben Basis-DN.
Wählen Sie im Dialogfeld Suchpfad in der Dropdownliste Basis-DN auswählen den Wert
CN=Users,DC=contoso,DC=com aus.
Klicken Sie auf OK.
Aktivieren Sie das Kontrollkästchen Unterordner einschließen.
Legen Sie für Ebenen verschachtelter Gruppen den Wert 0 fest.
Geben Sie im Abschnitt Serverzugriff im Textfeld Benutzer (Domäne\Benutzer)den Wert
contoso\administrator ein.
Geben Sie im Textfeld Kennwort den Wert pass@word1 ein.
69
Klicken Sie auf OK.
Klicken Sie auf Ja.
Wählen Sie den Server demo2010a.contoso.com aus, und klicken Sie auf Auswählen.
70
Klicken Sie auf Benutzer stellt Anmeldeinformationen für jeden ausgewählten Server bereit. (In einer Umgebung
mit einem einzelnen Server wie dieser können Sie Benutzer wählt aus einer Serverliste aus auswählen.)
Aktivieren Sie das Kontrollkästchen Den selben Benutzernamen verwenden.
Klicken Sie auf Weiter.
71
Klicken Sie auf Forefront UAG-Zugriffsrichtlinien verwenden.
Für Entwicklungszwecke sind die standardmäßigen Forefront UAG-Zugriffsrichtlinien ausreichend. In einer
Produktionsumgebung können Sie diese Richtlinien für eine für Ihre Umgebung spezifischere Konfiguration
anpassen.
Klicken Sie auf Weiter.
72
Für Entwicklungszwecke sind die standardmäßigen Forefront-Endpunktrichtlinien ausreichend. In einer
Produktionsumgebung können Sie diese Richtlinien für eine für Ihre Umgebung spezifischere Konfiguration
anpassen.
Klicken Sie auf Weiter.
73
Auf der letzten Seite des Assistenten zur Erstellung eines Trunks wird eine Zusammenfassung der
Trunkkonfiguration angezeigt.
Klicken Sie auf Fertig stellen, um die Trunkkonfiguration abzuschließen.
74
10. Erstellen der SharePoint-Anwendung
Klicken Sie im Abschnitt Anwendungen der Forefront UAG-Verwaltungskonsole auf Hinzufügen.
Klicken Sie im Assistenten zum Hinzufügen von Anwendungen auf Weiter.
Klicken Sie im 2. Schritt des Assistenten zum Hinzufügen von Anwendungen auf Web.
Wählen Sie in der Dropdownliste die Option Microsoft SharePoint Server 2010 aus.
75
Klicken Sie auf Weiter >.
Geben Sie im Textfeld Anwendungsname den Wert Contoso-Intranet ein.
Dies ist ein Anzeigename für die Anwendung, die Sie mit dem UAG-Server veröffentlichten. Dieser Name wird
auf der Startseite des UAG-Portals angezeigt.
76
Klicken Sie auf Weiter.
77
Klicken Sie auf Weiter.
Für Entwicklungszwecke sind die standardmäßigen Forefront-Endpunktrichtlinien ausreichend. In einer
Produktionsumgebung können Sie diese Richtlinien für eine für Ihre Umgebung spezifischere Konfiguration
anpassen.
Klicken Sie auf Einen Anwendungsserver konfigurieren.
78
Klicken Sie auf Weiter.
Behalten Sie für Adresstyp den Wert IP/Host bei.
Geben Sie in der Liste Adressen den Hostnamen oder die interne IP-Adresse 192.168.150.1 des Servers ein,
auf dem SharePoint Server 2010 ausgeführt wird. In Abhängigkeit von Ihrer Umgebung können Sie für den
Server, auf dem SharePoint Server ausgeführt wird, auch den vollqualifizierten Domänennamen oder die
IP-Adresse für Lastausgleichshardware verwenden.
Behalten Sie in der Liste Pfade den Standardwert „/“ bei. Dies gibt an, dass die veröffentlichte
SharePoint-Anwendung auf der Stammebene veröffentlicht wird.
Klicken Sie auf HTTP-Port, und geben Sie 80 in das Feld ein.
Wie bereits erwähnt, wird die Einrichtung und die Konfiguration der Entwicklung vereinfacht, wenn anstatt
eines HTTPS-Ports ein HTTP-Port verwendet wird. In einer Produktionsumgebung sollte ein HTTPS-Port
verwendet werden, um die zwischen dem Clientcomputer und dem UAG-Server übergebenen
Anmeldeinformationen zu verschlüsseln.
79
Geben Sie im Textfeld Öffentlicher Hostname den Wert spwp7intranet ein. Dies ist die alternative
Zugriffszuordnungs-URL auf dem Server, auf dem SharePoint ausgeführt wird, die den veröffentlichten
Websitesammlung entspricht.
Dieser Wert ist die URL, die der UAG-Server verwendet, um die Anwendung auf dem Clientcomputer zu
veröffentlichen. Verwenden Sie die URL http://spwp7intranet.contoso.com, wenn Sie auf die Websitesammlung
intranet.contoso.com über UAG-Serverclients zugreifen. Nachdem der Benutzer authentifiziert wurde, leitet der
UAG-Server die Anforderung anschließend als http://spwp7intranet.contoso.com an SharePoint weiter. Die
alternative Zugriffszuordnung von SharePoint (wird in späteren Schritten konfiguriert) ordnet die Anforderung
http://intranet.contoso.com zu.
Klicken Sie auf Weiter.
Aktivieren Sie das Kontrollkästchen SSO verwenden.
80
Klicken Sie auf Hinzufügen.
Wählen Sie im Dialogfeld Authentifizierungs- und Autorisierungsserver den Wert demo2010a.contoso.com aus.
Klicken Sie auf Auswählen.
Klicken Sie in der Auswahl Client Authentifizierungsmethode auswählen auf Beide.
Aktivieren Sie das Kontrollkästchen Rich Clients die Umgehung der Trunk-Authentifizierung gestatten.
Aktivieren Sie das Kontrollkästchen Office formularbasierte Authentifizierung für OfficeClientanwendungen verwenden.
81
Klicken Sie auf Weiter.
Klicken Sie auf Ja.
Aktivieren Sie im Dialogfeld Portallink das Kontrollkästchen In neuem Fenster öffnen. Der Portallink ist
optional, da die Anwendung für Windows Phone 7 direkt auf die SharePoint-APIs zugreift, der Link ist jedoch
ein gutes Tool für die Problembehandlung.
82
Klicken Sie auf Weiter.
Aktivieren Sie das Kontrollkästchen Alle Benutzer autorisieren.
In einer Entwicklungsumgebung bietet der Zugriff für alle Benutzer auf die veröffentlichte
SharePoint-Websitesammlung die größte Flexibilität für Tests. In einer Produktionsumgebung gewähren Sie
den Zugriff jedoch nur den Benutzern, die berechtigt sind, auf die SharePoint-Websitesammlung zuzugreifen.
83
Klicken Sie auf Weiter.
84
Klicken Sie auf Fertig stellen.
85
11. Konfigurieren der SharePoint-Anwendung
Wählen Sie in der Forefront UAG-Verwaltungskonsole im Abschnitt Anwendungen die Option Contoso-Intranet
aus, und klicken Sie auf Bearbeiten.
Aktivieren Sie auf der Registerkarte Portallink die folgenden Kontrollkästchen: Computerportal, Mobiles
Premiumportal und Mobiles Nicht-Premiumportal.
86
Klicken Sie auf OK.
12. Aktivieren der Konfiguration
Klicken Sie in der Forefront UAG-Verwaltungskonsole auf der Symbolleiste auf die Schaltfläche Aktivieren.
Das Dialogfeld Konfiguration aktivieren wird angezeigt.
87
Klicken Sie auf Aktivieren.
Die neue Konfiguration wird auf dem UAG-Server aktiviert.
Klicken Sie auf Fertig stellen.
Warten Sie, bis im Meldungsfenster unten in der Microsoft Forefront UAG-Verwaltungskonsole die Meldung
Aktivierung erfolgreich abgeschlossen angezeigt wird. Auch wenn im Dialogfeld Aktivierungskonfiguration
angezeigt wird, dass die Konfiguration erfolgreich aktiviert wurde, ist diese erst abgeschlossen, wenn die
Meldung im Meldungsfenster angezeigt wurde.
88
13. Konfigurieren und Überprüfen der
alternativen SharePoint-Zugriffszuordnung
SharePoint muss für die Beantwortung von Anforderungen für http://spwp7intranet.contoso.com
konfiguriert werden und die Anforderungen http://intranet.contoso.com zuordnen.
1.
2.
3.
4.
5.
6.
Navigieren Sie in der SharePoint 2010-Zentraladministration zum Abschnitt Anwendungsverwaltung, und
wählen Sie Verwaltung von SharePoint-Webanwendungen aus.
Wählen Sie Intranet aus, und wählen Sie anschließend im Menüband Erweitern (Webanwendung erweitern) aus.
Geben Sie im Dialogfeld Webanwendung auf eine andere IIS-Website erweitern die folgenden Werte ein:
 Name: SharePoint - spwp7intranet.contoso.com – 80
 Port: 80
 Hostheader: spwp7intranet.contoso.com
 Zone: Intranet
Klicken Sie auf OK.
Überprüfen Sie die Einstellungen, indem Sie zu Anwendungsverwaltung | Webanwendungen | Alternative
Zugriffszuordnungen konfigurieren navigieren.
Wählen
Sie
Alternative
Zugriffszuordnungssammlung
für
das
Intranet
aus,
und
es
solltehttp://spwp7intranet.com angezeigt werden.
14. Hinzufügen von Hostdateieinträgen zu der
Entwicklungsumgebung
In diesem Szenario werden Hostdateieinträge verwendet, um den UAG-Server und den Server, auf dem
SharePoint ausgeführt wird, aufzulösen. Es könnten DNS-Einträge verwendet werden, Hostdateien sind
jedoch eine akzeptable Alternative in einer Entwicklungsumgebung. In einer Produktionsumgebung sollten
DNS-Einträge für die Namensauflösung verwendet werden.
Fügen Sie auf dem Computer, auf dem der Windows Phone 7-Emulator ausgeführt wird, der Hostdatei einen
Eintrag hinzu, der auf den öffentlichen Hostnamen und die IP-Adresse verweist, die der
Contoso-Intranetportalanwendung auf dem UAG-Server zugeordnet sind. Die Hostdatei befindet sich unter
c:\windows\system32\drivers\etc.
192.168.1.171
spwp7intranet.contoso.com
Optional können Sie der Startseite des UAG-Portals einen Eintrag hinzufügen.
192.168.1.171
portal.contoso.com
89
15. Testen der Konfiguration
Schließen Sie auf dem Computer, auf dem der Windows Phone 7-Emulator ausgeführt wird, alle Webbrowser,
um sicherzustellen, dass der Hostdateieintrag erkannt wird. Öffnen Sie Internet Explorer, und navigieren Sie zu
http://spwp7intranet.contoso.com.
Die UAG-Serveranwendung und das Netzwerkzugriffsportal werden angezeigt.
Laden Sie das ActiveX-Steuerelement herunter, und installieren Sie es.
90
Klicken Sie auf Installieren.
Klicken Sie auf Ja.
Aktivieren Sie das Kontrollkästchen Dieser Website vertrauen, und klicken Sie dann auf Vertrauen.
Geben Sie die Anmeldeinformationen eines Benutzers mit Zugriff auf die veröffentlichte SharePoint-Website
ein, und klicken Sie auf Anmelden.
91
Die SharePoint-Website wird im Webbrowser angezeigt. Ab jetzt kann auf die über UAG veröffentlichte
SharePoint-Website über ein mobiles Gerät, etwa ein Windows Phone 7-Gerät, zugegriffen werden.
92
Optional können Sie den Zugriff auf die UAG-Portalseite testen, indem Sie die Portal-URL
http://portal.contoso.com in einem Browser eingeben.
93
UAG stellt darüber hinaus ein Mobiles Premiumportal für Clients wie Windows Phone bereit. Geben Sie in
Ihrem Emulatorbrowser die URL http://portal.contoso.com für das Portal ein, und Sie werden zur
Anmeldeseite weitergeleitet:
Geben Sie die Anmeldeinformationen für Contoso ein (beispielsweise „Contoso\tonip“ und „pass@word1“),
und Sie werden zum mobilen Portal weitergeleitet.
94
Wählen Sie den Contoso-Intranetlink aus, und die SharePoint-Startseite sollte angezeigt werden.
95
16. Testen von Newsfeed RSS
Wenn SharePoint 2010-Produkte über UAG veröffentlicht werden, werden einige Seiten nicht
ordnungsgemäß analysiert. Von größter Wichtigkeit für dieses Dokument ist die Seite Activityfeed.aspx, die
den konsolidierten Newsfeed rendert. Testen Sie Ihre Konfiguration mithilfe der folgenden Anweisungen.
Activityfeed.aspx
Wechseln Sie zur Seite Mein Newsfeed, und zeigen sie den RSS-Feed an.
Der folgende Fehler wird angezeigt:
96
Lösung
Die Standardregel zum Ausblenden des Protokolls wird auf die Seite ActivityFeed.aspx angewendet. Gehen
Sie folgendermaßen vor, um die Regel so zu ändern, dass sie nicht angewendet wird:
Öffnen Sie die entsprechende AppWrap-Konfigurationsdatei in einem Text-Editor. Die Dateien befinden sich
im Verzeichnis %ProgramFiles%\Microsoft Forefront Unified Access
Gateway\von\Conf\WizardDefaults\AppWrapTemplates.
Sichern und bearbeiten Sie die dem Protokoll Ihres Portals entsprechende AppWrap-Datei.
HTTP_WhlFiltAppWrap_ForPortal für HTTP und HTTPS_WhlFiltAppWrap_ForPortal für HTTPS.
Suchen Sie die folgende Zeile:
<!-- for sharepoint 2010 conditional appwrap hide log off -->
<URL case_sensitive="false">.*\.aspx.*</URL>
Ändern Sie sie folgendermaßen:
<!-- for sharepoint 2010 conditional appwrap hide log off changed to
exclude ActivityFeed.aspx -->
<URL case_sensitive="false">^.*(?<!(^|\\|/)(activityfeed))\.aspx.*</URL>
Speichern Sie die Datei, und aktivieren Sie die neue Konfiguration.
Kehren Sie zur Seite Mein Newsfeed zurück, und klicken Sie auf die Schaltfläche RSS. Die Seite sollte
ordnungsgemäß gerendert werden, und die URLs sollten ordnungsgemäß neu geschrieben werden.
97
Ressourcen
Forefront Unified Access Gateway auf TechNet
http://go.microsoft.com/fwlink/?LinkId=216132&clcid=0x407
Blog „Closer to the Edge“
Autor: Jason Jones
Forefront UAG SP1 – Auswirkungen der Änderungen von Endpunktbewertungen auf mobile Geräte wie
iPad/iPhone (http://go.microsoft.com/fwlink/?LinkId=216133)
Blog des Silverlight-Webdienstteams
Problemumgehung für den Zugriff auf einige ASMX-Dienste aus Silverlight 4
(http://go.microsoft.com/fwlink/?LinkId=216134)
Informationen zu den Autoren
Todd Baginski, MVP
Todd ist ein unabhängiger Berater und fünfmaliger Microsoft SharePoint-MVP (Most Valuable
Professional), der SharePoint-, Silverlight-, Office-, Windows Phone 7- und .NET-Technologien
verwendet, um Websites und benutzerdefinierte Lösungen für Information-Worker zu erstellen. Todd
ist Autor und Referent für den Abschnitt Business Connectivity Services (BCS) des MCM-Programms
(SharePoint Microsoft Certified Masters) und regelmäßiger Referent auf den TechEd-, SharePoint
Connections- und Microsoft SharePoint-Konferenzen. Todd schreibt regelmäßig Kolumnen in der
Zeitschrift SharePointPro Connections und fungierte kürzlich als technischer Herausgeber des Buchs
von Scot Hillier und Brad Stevenson Professional Business Connectivity Services in SharePoint 2010.
Todd hat auch die BPOS-Schulungsmaterialien (Microsoft Business Productivity Online Suite) für
SharePoint Online (SPO) 2010 erstellt, während sich BPOS 2010 im Alpha- und Beta-Stadium
befanden und hat die BPOS/SPO-Schulungsmaterialien für eine post-TechReady 11-Konferenz nur
für Microsoft-Mitarbeiter bereitgestellt.
Todd ist sehr aktiv, und er verbringt seine Zeit am liebsten mit seiner Familie oder beim Skilaufen,
wann immer sich die Möglichkeit ergibt. Todd ist unter [email protected] zu erreichen.
Matthew McDermott, MVP
Matthew McDermott, Microsoft SharePoint Server-MVP, ist Gründungsmitglied von Aptillon, Inc.
und Principal Consultant für AbleBlue in Austin, Texas. AbleBlue ist auf die SharePoint-Integration,
Strategie und Implementierungsberatung spezialisiert. Matthew ist Autor von und Spezialist für
SharePoint-Technologien mit dem Schwerpunkt auf Webinhaltsverwaltung, Zusammenarbeit,
Suche und Soziale Netzwerke. Matthew hat seit 2002 SharePoint-Implementierungen für
Fortune 500-Unternehmen geleitet. Matthews Blog (www.ableblue.com/blog) bietet interessante
98
Themen sowohl für Entwickler und IT-Experten als auch für Endbenutzer. Matthew ist unter
[email protected] zu erreichen.
Matthew verbringt seine Freizeit als Hundeführer für K9 Search • Austin, ein freiwilliges
K9-Suchteam, das das FBI und die Polizeidirektionen von Austin und San Antonio unterstützt.
Darüber hinaus ist er ein vollendeter Koch und Barkeeper, der so viel Zeit wie möglich mit seiner
Frau und seinen Hunden verbringt.
Ben Ari
Ben Ari ist leitender Sicherheitstechniker bei Microsoft mit dem Schwerpunkt auf UAG, und er
bietet Support für das Produkt für Premier- und Professional-Kunden von Microsoft weltweit.
Ben ist zudem aktiver Journalist und Blogger, und er hat kürzlich das Microsoft Forefront UAG
2010 Administrator's Handbook (ISBN 978-1849681629) veröffentlicht. Sie finden Bens Blog
unter http://blogs.technet.com/b/ben.
99
Herunterladen