Sobald eine Silverlight Anwendung für eine
Unternehmenslösung entwickelt wird, kommt meist die zusätzliche Anforderung, dass
der aktuell Angemeldete Benutzer und dessen Domäne abgefragt wird. Desweiteren
kann dieser Wunsch auch bei der Kombination von SharePoint und Silverlight
erwünscht sein. So das weitere Verarbeitungen unter dessen Namen angesteuert
werden.
Dennoch gibt es hier ein großes Problem! Silverlight wird in
der Sanbox vom Browser gefangen gehalten. Womit Silverlight auf dem Client keine
direkten Abfragen stellen kann und somit Isoliert im eigenen Bereich läuft. Die
unterschiedlichen Browser selbst, können dagegen weitaus mehr Informationen vom
Betriebssystem abfragen. Es müsste daher mittels JavaScript oder ASP.NET diese
Abfrage durch den Browser bewerkstelligt werden und die enthaltenen
Informationen an die Silverlight Anwendung weiterreichen.
Genau für diese Problematik bietet Silverlight die Möglichkeit,
dass beim Starten der Silverlight Anwendung bestimmte Informationen per
Parameter weitergegeben werden können. Hier wäre dennoch die einzige Einschränkung,
dass die Informationen vor der Initialisierung der Anwendung bereits zur
Verfügung stehen müssen. Was in der Regel aber kein Problem seien dürfte.
Ein Beispielprojekt
Es wird hier durch ein kurzes Beispielprojekt Demonstriert,
wie mittels ASP.NET der aktuell Angemeldete Benutzer ermittelt wird und wie
diese Informationen beim Starten der Silverlight Anwendung weitergereicht
werden. Dazu wird ein neues Silverlight Projekt in Visual Studio erzeugt, bei
diesem Artikel handelt es sich um die Silverlight Version 3. Der Name des
Projektes lauter: HelloUserFromSilverlight.
Darauf folgt auch schon ein Dialog mit der Abfrage ob auch die passende Web
Application erzeugen werden soll. Das wird hier mit „OK“ bestätigt. Um das
Design und die Architektur besser ersichtlich zu machen, werden zwei neue
Solution Verzeichnisse in der Solution angelegt „Server“ und „Client“. Hier
werden die zwei unterschiedlichen Projekte untergebracht (siehe Abb.1.2).
Abb.1.1. – Neues Silverlight
Projekt erzeugen.
Abb.1.2. – Struktur und Aufbau des
Silverlight Projektes.
Leider wird unter der automatisch erzeugten HelloUserFromSilverlightTestPage.aspx keine
Code-Behind-Datei angeboten. Womit für dieses Demo nur die Default.aspx interessant wird (das hinzufügen einer neuen Webform
wäre zudem genauso möglich). Anschließend wird in die Default.aspx-Seite das
Silverlight Controll und der Script Manager aus der Toolbox hineingezogen
(siehe Abb.1.3).
Abb.1.3. – ASPX-Page für
Silverlight vorbereiten.
Daraufhin werden noch ein paar Properties vom Silverlight
Controll angepasst. Das erste wäre die Höhe und die Breite von „px“ auf „%“ zu
ändern. Damit die Größe automatisch von der Silverlight Anwendung übernommen
wird. Damit das Controll überhaupt weiß, welche Silverlight Anwendung verwendet
werden soll, muss dies mittels Source
deklariert werden. Wenn die Source mit Hilfe von Visual Studio durch „Pick
URL..“ hinzugefügt werden soll, muss das Projekt erst einmal gebuildet werden ([
Strg ] + [ Shift ] + [ B ]).
Abb.1.4. – Silverlight Controll
angepasst.
Jetzt kann die Default.aspx-Seite die Silverlight Anwendung
auf den Browser starten und zur Verfügung stellen. Doch soll beim Starten der Silverlight
Anwendung der aktuelle Benutzer als Parameter überreicht werden. Das wird jetzt
in der Code-Behind-Datei verwirklicht. Dazu kann man auf das Silverlight
Controll mit den Namen, der in der Proptertie ID steht zugegriffen werden, bei diesem Beispiel wäre das Silverlight1. Das Controll bietet für
Parameter eine Property an, mit dem Namen InitParameters.
Parameter unter Silverlight werden mit folgendem Format deklariert: parameter1=“Hallo
Welt“, parameter2=“Ein weiteres Wort.“. Wobei hier „parameter1“ für den
Index-Schlüssel steht und zum Beispiel „Hallo Welt“ den Wert des Parameters
deutet.
Genau mit diesem Format soll nun mit einem Index-Schlüssel „currentuser“
der aktuelle Benutzer von ASP.NET ermittelt und weitergereicht werden. Der
Source-Code dazu ist unter Abb.1.5. zu sehen.
Abb.1.5. – Aktuellen Benutzer über
den Parameter an Silverlight weiterreichen.
Nun wäre von der Server-Seite aus alles erledigt. Dann müssen
nur noch die Parameter beim Initialisieren der Anwendung in die allgemeinen
Resourcen der Application gesichert werden. Dazu wird unter der App.xaml.cs-Datei,
die StartUpEventArgs verarbeitet. Hier findet sich exakt dieselbe Propertie mit
InitParams wieder, die allerdings
zudem die Parameter ansehnlich als Collection aufgearbeitet anbietet. Diese
wird auf den Count überprüft und dann in den allgemeinen Resourcen zur
Verfügung gestellt.
Abb.1.6. – Parameter in die
Resourcen hinzufügen
Damit der Benutzer auch in der Anwendung angezeigt werden
kann, muss jetzt in der XAML-Datei MainPage.xaml
ein TextBlock dazu. In der dazugehörigen Code-Behind-Datei MainPage.xaml.cs
wird aus den Resourcen mittels Schlüssel-Index „currentuser“ der Wert
ausgelesen und dem TextBlock weitergegeben.
Abb.1.7. – XAML-Code der
Silverlight Anwendung
Abb.1.8. – Resource wird
ausgelesen und dem TextBlock bekannt gegeben
Die Beispielanwendung wäre jetzt fertig. Dass auch von der
Default.aspx-Seite die Anwendung richtig ausgeführt wird, muss jetzt nur noch
unter den Eigenschaften des Web-Projekts beim Bereich Web die Default.aspx als
Startseite ausgewählt werden.
Abb.1.9. – Default.aspx als
Startseite
Abb.1.10. – Die fertige
Beispielanwendung
Fazit
Mit dem Parameter Handler in Zusammenarbeit wie zum
Beispiel mit ASP.NET, lassen sich trotz Sandbox, auf aufschlussreiche
Informationen zugreifen.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
