NET-Architektur
Transcrição
NET-Architektur
Vorlesungsreihe Grundlagen der Informatik – Teil 3 Die Microsoft - .NET-Architektur und Web-Entwicklung MS - .NET Prof. Dr.-Ing. Thomas Wiedemann email: [email protected] HOCHSCHULE FÜR TECHNIK UND WIRTSCHAFT DRESDEN (FH) Fachbereich Informatik/Mathematik Gliederung Aktuelle Microsofttechnologien zur Entwicklung .NET – Ausgangsmotivation und Grundkonzepte Klassenbibliotheken und -konzepte Webentwicklung mit ASP-NET MS-Http-Server IIS (Internet Information Server ) frühe Technologien (Frontpage / ActiveX-Controls) ASP und ASP.NET, Silverlight Quellen : MSDN - http://msdn.microsoft.com/de-de/asp.net/default.aspx Buch : http://openbook.galileocomputing.de/asp/ Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 2 .NET - Einführung & Ausgangslage • Programmierung der Windows-BS erfolgte zuerst mit Standard-C/C++ und ab Mitte der 90er Jahre dann mit der MFC (-> vgl. VL MFC) • Parallel wurden von Microsoft weitere Programmiersprachen angeboten : • • Visual Basic (als effiziente und komfortable Hintergrund-Scriptsprache für Office) • J++ - eine MS-eigene Java-Implementierung -> Ärger mit Sun wegen PatentVerletzungen und Abweichungen vom Java-Standard … Allgemeine Probleme mit diesen Technologien Ende der 90er Jahre: • keine einheitliche Datentypen und Aufrufstrukturen zwischen diesen Sprachen (auch Versionsprobleme), insbesondere Probleme mit verschiedenen StringFormaten … • kein voller Sprachumfang in VB und J++ im Vergleich zu C++ • Probleme mit Speicherverwaltung : VB / J++ automatisch, C++ ohne ! • keine Portabilität auf Nicht-Windows-Rechner und mobile Geräte -> damit schlechte Perspektiven Anfang 2000 im Vergleich zu Java ! 3 .NET - Konzepte Neue Strategie bei Microsoft Ende der 90er Jahre : • komplettes Neu-Design der gesamten Entwicklungsumgebung • starke Ausrichtung auf Webentwicklung -> Name : .NET • Übernahme (bzw. Optimierung) von Java-Prinzipien : • Übersetzung der jeweiligen Sprache in einen Zwischencode Common Intermediate Language (CIL) • (vor Standardisierung auch Microsoft CIL = MCIL) • portable Ausführung des CIL-Codes innerhalb der Common-Language-Infrastructure (CLI) • Einheitliche Typen für alle Programmiersprachen - Common Type System (CTS) • Automatische Speicherverwaltung (Garbage Collection) 4 .NET – Architektur und Ablauf der Softwarentwicklung Algorithmus Basisarchitektur bislang Fixierung der Tools und Entw. auf genau eine Sprache .NET unterstützt VIELE Sprachen und übersetzt alle in eine gleiche Zwischensprache – die Common Intermediate Language (CIL) Sprachen : C++/CIL, C#, VB.NET, J# (Java-ähnl.) und weitere Ausführung des Codes erfolgt durch die Common Language Runtime (CLR)-Laufzeitumgebung Sourcecode in C++ C# VB J# ... EXE mit CIL (einheitlicher Bytecode) CLR - Infrastructure (Interpreter / Ausführg.) CL-Bibliotheken ( .NET – Klassen-bibliothek ) durch Interpretation, damit prinzipiell austauschbar und Prozessorunabhängig Prozessor (beliebig) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 5 .NET – Begriffe und Konzepte .NET Framework : umfangreiche Klassenbibliothek zur Entwicklung von Desktop-Anwendungen und Internetapplikationen Framework Class Library (FCL) in der aktuelle Version 4.5 etwa 13.000 Klassen und Datentypen in ca. 300 Namespaces .NET Compact Framework für mobile Geräte (abgerüstet / kompakter) zusammengefasst und dokumentiert im Software Development Kit (SDK) Common Language Specification (CLS) definiert grundlegende Sprachfeatures, welche von allen .NET-Sprachen verarbeitet werden -> möglichst nur diese verw. ! Common Type System (CTS) definiert entspr. Basistypen In der CLR übersetzt ein Just-in-Time-Compiler (JIT) zur Laufzeit den CIL-Code in Maschinencode des jeweiligen Prozessors – damit noch relativ performant, aber prinzipbedingt langsamer als reiner C-Code Assemblies (Baugruppen) bilden aus den exe- und dll-Dateien einer Anwendung eine Einheit, welche durch ein Manifest beschrieben werden Manifest der Assemblies enthält Versionsinformationen, Typenauflistungen, Liste von Referenzen auf externe Ressourcen, ggf. Berechtigungen Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 6 .NET – Geschichte und Versionen .NET Version 1.0 veröffentlicht 2002, V 1.1. 2003 als Bestandteil der IDE Visual Studio.NET 2003 (VS) .NET Framework 2.0 von 2005 im VS 2005 2000 mit vollst. 64-Bit-Support .NET Framework 3.0 von 2006 zur Unterstützung der Anwendungsentw. für Vista (verwendet noch CLR von NET2.0) mit neue Komponenten Windows Presentation Foundation (GUI-Darstellg. durch Interpretation von XAML-XML-Def.) Windows Communication Foundation, Windows Workflow Foundation, Windows CardSpace Silverlight - stark verkleinerte Untermenge für Webbrowser zum Aufbau „reichhaltiger“ Webanwendungen (engl. Rich Internet Application – RIA). .NET 3.5 von 2007 immer noch mit CLR 2.0 und mit VS 2008 mit teilweiser Freigabe des Quellcodes unter Debuggingzwecke freigegeben der Microsoft Reference Source License für .NET 4.0 von 2010 - nur .NET 4.0 unterstützt noch alte XP- und Windows 2003 –Rechner .NET 4.5 seit 2012, aktuell (2015) - Version 4.5.2 - keine größeren Veränderungen gegenüber den vorherigen Versionen Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 7 .NET – Managed / unmanaged Code Strikte Unterscheidung in Verwalteter (Managed) Code : - alle von der CIL/CLR unterstützten Codeblöcke Nur für diesen managed Code wird die Sicherheit und Zuverlässigkeit bei der Ausführung garantiert !!! Unmanaged Code : bisheriger Code (z.B. C/C++/ VB) Langfristig sollte für WindowsAnwendungen und Web-Anwendungen auf MS-Basis nur noch managed Code verwendet werden Entwicklung webbasierter Anwendungen - Quelle : http://msdn.microsoft.com Prof. T.Wiedemann - HTW Dresden - Folie 8 ASP.NET - Die Sprachen – Überblick C++ : weitgehend kompatibel zum Standard - C++, mit Ausnahme der Windows-spezifischen Bibliotheken C# - nochmals verbessertes C++ Grundsyntax (if / for / while / switch) weitgehend identisch mit kleinen Abweichungen KEINE Zeiger mehr ALLE Datentypen sind Objekte ! J# - zur Umsetzung von Javacode auf .NET Syntax sehr ähnlich zu Java ! hat sich NICHT durchgesetzt und Microsoft hat im Januar 2007 die Einstellung bis 2015 erklärt -> NICHT MEHR EINSETZEN !!!! Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 9 Die .NET-Klassenbibliothek • Die aktuelle .NET-Klassenbibliothek umfasste in der Version 3.5 bereits etwa 11.400 Klassen und andere Datentypen. • Die aktuelle Version hat noch ca. 1500 neue Klassen mehr und kommt damit auf ca. 13.000 Klassen … • Ähnliche Klassenhierarchie wie bei der MFC. • Die Basis der Hierarchie bildet die Wurzelklasse Object (Jede andere Klasse des .NET Frameworks erbt deren Methoden. ) • Zur besseren Strukturierung sind diese Klassen in ca. 300 Namensräume (Namespaces) unterteilt. • Die Dokumentation der Klassenbibliothek wird von Microsoft im Software Development Kit (SDK) kostenlos mitgeliefert. 10 Die .NET- Object - Basismethoden • Die Wurzelklasse Object verfügt über Basismethoden, welche damit in ALLEN anderen Objekten ebenfalls zur Verfügung stehen : • Equals - vergleicht zwei Objektreferenzen und liefert WAHR, wenn beide gleich sind • MemberwiseClone - dupliziert die aktuelle Instanz und liefert die Referenz auf das Duplikat zurück. • Finalize – gibt Ressourcen der Klasse frei, wenn das Objekt zerstört wird • GetHashCode - geneiert einen objektspezifischen Identifizierer (analog zu einer Quersumme über alle Daten-> kann z.<b. für Such- und Sortiervorgänge verwendet werden …) • GetType - liefert die Referenz auf eine Type-Instanz zurück, die den Typ des aktuellen Objekts beschreibt. • ToString - liefert den vollen Namen einer Klasse 11 Die .NET- Namespaces • Die 300 Namensräume (Namespaces) von .NET sind ähnlich (aber nicht gleich) wie die MFC-Klassenhierarchie unterteilt. • Der Basis-Namespace ist system ! • Ausgehend von system können alle andere Namespaces durch Anhängen des Namens eindeutig identifiziert werden ! Beispiele für Namespaces (incl. die Klassen): • System.IO - Ein- und Ausgabeoperationen • System.Drawing - grafische Funktionen (unter dem BS) • System.Windows.Forms – für Windows-basierte Anwendungen • System.Data – Datenbankfunktionen (über ADO.NET) 12 Weitere .NET- Namensräume System.Collections und System.Collections.Specialized – definiert Aufzählungen wie Listen, Hashtabellen und Dictionaries System.Data.OleDB, System.Data.SqlClient - zum Zugriff auf Datenbanken, spezielle Microsoft -Datenzugriffstechnologie ADO.NET, OLE-DB-Schnittstelle, System. Data.SqlClient.für den Microsoft SQL Server System.Net – stellt die bekannten Netzwerk- und Internetprotokolle bereit, z.B. die Klassen HttpWebRequest und HttpWebResponse für die Abbildung des httpProtokolls System.Text – zur effizienten Arbeit mit Texten (Strings) System. Windows.Forms zum Aufbau von Desktop-Windows-Programmen System.Web – zum Aufbau von Webservern mit MS-Technologie System.Web.UI für die Seite, System.Web.UI.HtmlControls für HTML-Elemente, System.Web.UI.WebControls für Serverelemente e System.Xml – Definition und Verarbeitung von XML-Daten Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 13 Die .NET – Runtime – Engine Funktionen und Module des Runtime – Systems von .NET : • der Class Loader – zum Laden (Instanziieren) von Klassen • der Code Manager – welcher Ausführung des Codes verwaltet • die Security Engine - zur Berechtigungsverwaltung (=f(User)) • der Type Checker –> Laufzeit –Typprüfungen -konvertierungen • der Garbage Collector für die automatische Speicher-Bereinigung (falls Objekte nicht mehr benötigt werden) • der Exception Manager – zum Abfangen von Ausnahmen (=Laufzeitfehler) behandlung unterstützt • die Debug Machine zum Debuggen der Anwendung • der JITter (Just in Time Compiler), um den CIL-Code zur Laufzeit in nativen Prozessor-Code zu übersetzen • der Thread Service zur Unterstützung multithreading-fähiger Anwendungen • der COM Marshaller zur Kommunikation mit (alten) COM-Komponenten (COM = Component Object Model = MFC –Technologie ) 14 Die .NET- Assemblies • Der VS-.NET-Compiler erzeugt als Ergebnis auch .exe oder .dll –Dateien. • Im Gegensatz zu VC98 (und anderen Compilern) sind in diesen Dateien KEINE Maschinencodebefehle enthalten, sondern es handelt sich um sogenannte Assemblies aus CIL-Code und Verwaltungsinformationen : • Der IL_Code wird erst zur Laufzeit einer Anwendung vom JITter in nativen Code des jeweiligen Prozessor kompiliert. • Eine Assembly auch mehrere Dateien (Ressourcen wie Bilder oder Multimedia) enthalten. • Die Verwaltungsdaten enthalten Metadaten und beschreiben die AssemblyObjekte (Eigenschaften, Methoden, Aufrufparameter). Damit ist eine vollständige Information für externe Programmaufrufe verfügbar ! • Meist werden die Informationen im XML-Format gespeichert ! 15 .NET – der aktuelle .NET-Framework – Stack Entwicklung webbasierter Anwendungen - neue Funktionen für MulticoreProz. (ab 2010!) ADO.NET - Datenbanken Linq : SQL-ähnliche Datenbanksprache mit Analyse im Code (bisher nur als Text) WPF / WF für InternetApplikationen Prof. T.Wiedemann - HTW Dresden - Folie 16 .NET- Spezielle Technologien : WPF WPF : Windows Presentation Foundation (kurz WPF) • Grafik-Framework ab .NET 3.0 • wird mit Windows Vista und Windows 7 ausgeliefert • (nachträgliche Install. auf XP und Server 2003 möglich) • WPF stellt ein umfangreiches Programmiermodell bereit : • Präsentation und die Geschäftslogik werden getrennt • Unter Verwendung der Skriptprache XAML (XML-Format) • GUI´s werden mit XML-Code beschrieben und sind damit portabel auf verschiedenen Geräten (z.B. auch Smartphones etc.) , ggf. auch durch Nutzung von Grafikkartenbeschleunigern • parallel auch Bereitstellung für Web-Oberflächen 17 Die .NET- Entwicklungsumgebungen von MS • Parallel zur Entwicklung des .NET-Frameworks wurden von MS auch entsprechende Entwicklungsumgebungen bereit gestellt (VisualStudio Versionen - 2003 / 2005 / 2008 / 2010 / 2013 …) • Verschiedene Editionen : • Express Edition – kostenlose Version für einfache Projekte auf Basis von Konsolen- und Windows-Anwendungen • Professional Edition – für professionellen Einsatz in kleineren Entwicklerteams mit Projektvorlagen für die Entwicklung von Office-Projekten, Webanwendungen, SharePoint etc. (ca. 1300 €) • Premium – zur Entwicklung von Enterprise Anwendungen (verteilte Anwendg. / bessere Qualitätssicherung.) • Ultimate mit integrierter Lebenszyklusverwaltung (ca. 4000 €) • Die Versionen ab VS 2010 wurden teilweise wegen sehr großer Hardwareanforderungen und geringer Performance kritisiert. 18 .NET - Allgemeine Bewertung durch Hardwareunabhängigkeit nicht mehr auf PC´s angewiesen (Ihr Smartphone ?) Mono-Projekt portiert Unix-Systeme (+Linux) -> Betriebssystemunabhängig ! Performance und Sicherheit : eigenes .NET- Garbage-Collection – räumt „vergessene“ oder freigegebene Speicherbereiche automatisch auf Spezielle Version XNA basiert auf Visual C# Express und dient zur Spieleentwicklung für MS Windows unter Verwendung der Technologien Direct3D/DirectX für die schnelle Darstellung von 2D- und 3D-Grafiken Sicherheit konnte deutlich gesteigert werden (Programm und Teile davon laufen analog zu Java in einer eigenen Umgebung (Sandbox) ab Bei normalen Windows-Programmen keine spürbaren Performanceeinbußen, eher durch ungünstig programmierte Algorithmen ! Fazit : IN den letzten Jahren hat Microsoft in den Bereichen Performance und Sicherheit deutlich verbessert und eine Entwicklung mit .NET kann prinzipiell empfohlen werden (z.T. 4x effizienter als Java) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 19 .NET- Einsatz im Bereich Automatisierungstechnik Anwendunsgspezifische Zusammenfassung / Bewertung aus Sicht der Automatisierungstechnik • sinnvoll bei der Entwicklung komplexer Bedienoberflächen unter Windows, für den Lowleveleinsatz eher nicht !! • eher kritisch bei Einsatz im direkten Steuerungsumfeld, da z.B. der Garbage-Collector nicht 100% ig definiert arbeitet • Bindung an einen Hersteller aus Sicht des Monopols eher kritisch, Konkurrenztechnologien (Sun (Java) wurde von Oracle gekauft, andere Hersteller nicht mehr sehr stark) sind jedoch auch nicht unkritisch • gegenwärtig relativ hohe Investitionssicherheit durch Integration aller neue MS-Technologien in .NET 20 Webentwicklung auf der Basis des MS-Http-Server IIS Basis für Microsoft-Webanwendungen i.d.R. der IIS Server : Historie : • erste Version als Microsoft Internet Information Server als Zusatzpackage für Windows NT 3.51. • IIS 2.0 direkt integriert in Windows NT 4.0 • IIS 3.0 unterstützte erstmalig Active Server Pages –Programmierung • IIS 4.0 mit zusätzlichen Modulen : Microsoft Transaction Server, MS Index Server und Certificate Server • IIS 5.0 direkt integriert in Windows 2000 integriert als „Microsoft Internet Information Services“ (IIS 5.1 in WinXP Prof. für max. 10 Clients) . • IIS 6.0 komplett neu entwickelt für Windows Server 2003 zur Lösung vorhandener Sicherheitsprobleme ( Web Server Extension wie ASP, ASP .NET, Internet Printing, Server Side Includes (SSI) nicht mehr per default aktiv, sondern nur durch explizite Aktivierung) • Microsoft Internet Information Services 7 in Windows Vista und in Windows Server 2008 integriert Achtung: jedoch in Win 2008 nicht standardmäßig installiert, sondern über Featureliste zu installieren ! Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 21 Frühe Technologen (Frontpage / ActiveX-Controls) MS Frontpage – mit MS Frontpage Extensions • • • proprietärer WYSIWYG-P-HTML-Editor (ab 1996 bei MS) mit speziellen Erweiterungen zur serverseitigen Manipulation der Inhalte (analog zu Server Side Includes (SSI) ) dynamische Erstellung von Menüs und Einbindung externer Objekte Probleme : teilweise Generierung von nicht-standard-konformen HTML-Code Ausführung der FP-Extensions setzt MS-Frontpage-Extr.-kompatiblen Server voraus (IIS oder Apache mit zusätzlich installierten Extensions) • ab 2006 Ablösung durch Microsoft Expression Web ActiveX • MS-Softwarekomponenten, abgeleitet vom MS-COM-Standard • Lauffähig nur im MS-Internet Explorer mit allen Rechten des Anwenders • Hauptprobleme : keine Sicherheitsmechanismen – nur durch den ActiveXEntwickler und eine Akkreditierung -> potentielle Angriffsmöglichkeit durch präparierte Webseiten mit manipulierten Active-Komponenten • Technologie hat sich nicht durchgesetzt ! Nicht mehr verwenden !!! Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 22 Microsoft - ASP Active Server Pages (ASP) (heute auch Classic-ASP) • Serverseitige Skriptsprache analog zu PHP oder Perl mit Interpretation während der Ausführung - verfügbar sind VBScript und Jscript • erster Einsatz 1996 mit IIS 3.0 • ab 2002 abgelöst durch ASP-NET Vorteile : • Relativ effiziente Entwicklung allein mit Texteditor ohne komplexe Infrastruktur Nachteile • generell Vermischung von HTML ( Layout) und Code Status • wird noch für alte und kleinere Projekte eingesetzt • ASP-Unterstützung muss im II7 explizit aktiviert werden : • in der Datei applicationHost.config freischalten <section name="asp" overrideModeDefault=“Allow" /> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 23 Microsoft - ASP - Beispiele Direkte Einbindung in den HTML-Code <html> <body> <% response.write(“Hallo Welt in ASP ") %> </body> </html> Voller Zugriff auf die Ressourcen des Servers mit VB-Syntax <% dim fs,fname set fs=Server.CreateObject("Scripting.FileSystemObject") set fname=fs.CreateTextFile("c:\test.txt",true) fname.WriteLine("Hello World!") fname.Close set fname=nothing set fs=nothing %> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 24 Microsoft - ASP - Beispiele Dateneingabe mit Html-Standardformular <html> <body> <form method="get" action=„formular1.asp"> Vorname: <input type="text" name="Vorname" /><br /> Nachname : <input type="text" name="Nachname" /><br /><br /> <input type="submit" value="Submit" /> </form> </body> </html> Zugriff über das request-Objekt auf die Formulardaten <% <body> Welcome <% response.write(request.querystring("Vorname")) response.write(" " & request.querystring("Nachname")) %> </body> %> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 25 Microsoft - ASP.NET Überblick - löst ASP (Classic-ASP) seit 2002 ab - ASP.NET ist kein Upgrade zu ASP sondern eine völlig neue Technologie auf der Basis von .NET - behebt Hauptnachteil – Layout/Codemix von ASP durch Trennung von Layout und Code in getrennten Dateien - ASP.NET-Webseite können wahlfrei (auch unterschiedlich in einem Projekt) in allen .Net-Sprachen (C, C#, VB.NET) aber auch PHP programmiert werden - Portierung für Linux mit dem Mono-Projekt (jedoch neue Versionen mit Verzögerung, da keine direkte Unterstützung durch MS) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 26 Microsoft - ASP.NET – Code Behind Concept Trennung von Layout und Code in getrennten Dateien - Ablage des (HTML-)Layouts in ASPX-Dateien dabei Verwendung spezieller ASP.NET-Server-Steuerelemente zugeordnete ASPX.VB-Dateien (bzw. .CS / .JS ) mit dem Code ASP.NET-Code wird vorkompiliert (und komplett getestet – damit weniger Probleme mit Syntaxfehlern zur Laufzeit) ASPX-Datei HTML-Code <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %> <html><body><form id="form1" runat="server"> <div id="Ausgabe"> <asp:Button ID="Button1" runat="server" Text="Button" /> <asp:Label ID="Label1" runat="server" Text="Label„ > </asp:Label> ... Entwicklung webbasierter Anwendungen ASPX.VB-Datei mit ASP.NET-Progr.-Sprache (hier VB) ASPX-Datei Partial Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Me.Label1.Text = "Neuer Text " Me.Label1.BackColor = Drawing.Color.AliceBlue Me.Label1.ForeColor = Drawing.Color.Red End Sub End Class - Prof. T.Wiedemann - HTW Dresden - Folie 27 Microsoft - ASP.NET – Ausführung - ASPX-Dateien werden ebenfalls geparst und alle ASP.NET-ServerSteuerelemente (erkennbar an <asp:...> werden in Standard-HTMLElemente mit zusätzlichen, verborgenen Attributen umgewandelt - Der Code wird als DLL generiert und auf den Server geladen. Aus ASPX-Datei generierter HTML-Code <body> <form name="form1" method="post" action="default.aspx" id="form1"> <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA3NjE4MDcz...==" /> </div> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLs8djLBQLs0bLrBgKM54rGBu/xe2+XB" /> </div> <input name="TextBox1" type="text" value="hh" id="TextBox1" /> <br /> <input type="submit" name="Button1" value="Button" id="Button1" /> <br /> <span id="Label1" style="color:Red;background-color:AliceBlue;">Neuer Text </span> Code wird als DLL, PDB und XML-Konfigurationsdatei im Verzeichnis BIN abgelegt Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 28 Microsoft - ASP.NET – Direkte Ausführung in der ASPX - analog zu ASP kann Code jedoch auch direkt in der ASPX-Datei ausgeführt werden – (dann jedoch nur interpretiert und nicht vorkompiliert !) <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <html> <head> <title> ASP.NET-Demo1 </title> <script runat="server"> Sub tfMeldung_Change(ByVal Sender As Object, ByVal E As EventArgs) lblMeldung.Text = "Hallo " + tfMeldung.Text lblMeldung.ForeColor = Drawing.Color.Brown End Sub </script> </head> <body> <font size="5">ASP.NET - Demo </font><hr><p> <% Response.Write("Direkte Ausgabe ... <p>")%> <form id="Form2" runat="server"> Bitte geben Sie Ihren Namen ein: <asp:textbox id="tfMeldung" OnTextChanged="tfMeldung_Change" runat="server"/> <asp:button id="btSenden" Text="Senden" runat="server"/><p> <asp:label id="lblMeldung" font-size="20pt" runat="server"/> </form> </body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 29 Microsoft - ASP.NET – Wesentliche Verbesserungen Verbesserungen im Vergleich zu ASP - Code-Compilierung verbessert die Performance deutlich (Kompilierter Code ist verwalteter Code und wird von der Common Language Runtime (CLR) verwaltet. Code wird zuerst in Microsoft Intermediate Language (MSIL) kompiliert und beim Aufruf der Seite in native Maschinensprache übersetzt. - Komplette Verfügbarkeit des gesamten .NET-Sprachumfangs statt VBScript (bzw. Jscript) erhöht die Flexibilität und mögliche Komplexität von Applikationen - Die Basissyntax entspricht der von VB.NET und C#.NET (siehe entsprechende Quellen) - Besonderheiten und spezielle Objekte für die Webentwicklung werden nachfolgend kurz vorgestellt. - - es können neue ASP.NET-Server-Steuerelemente entwickelt und eingebunden werden ereignisgesteuerte Programmierung auf der Serverseite erleichtert die Entwicklung starke Verbesserung des Sitzungsmanagements : - ASP.NET kapselt die Sessioninformationen in den Webseiten selbst und erlaubt damit Verteilungen über mehrere Server hinweg möglich (ist bei Cookie-basierten Systemen sonst eine generelles Problem) Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 30 Microsoft - ASP.NET – Das Response -Objekt - Das Response-Objekt stellt die (Rück-)Verbindung zum Server dar. Hauptfunktion .write ( String) zum Schreiben von Text - Bei C#-Wandlung von Zahlen mit: Response.Write(Convert.ToString(6)) - Ausgabepuffer kann explizit gesteuert werden mit Clear-, Flush- und EndMethoden zusätzlich kann die Pufferung komplett abgeschaltet werden mit <% Response.Buffer = False %> - Weitere Funktionen Steuerung des Ausgabeflusses, z.B. Redirect auf eine andere Seite <%@ Page Language="VB" %> <script runat="server"> Sub Page_Load(obj as Object, e as EventArgs) Response.Redirect("http://www.microsoft.de") End Sub </script> <html><body> Hallo! </body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 31 Microsoft - ASP.NET – Das Request-Objekt - Das Request-Objekt enthält die Daten vom Browserrequest. Für Get-Requests: Bsp.: Aufruf von http://www.myserver.de?id=123&option=V - Request.Querystring //liefert kompletten Request als Text: id=123&option=V - Request.Querystring("id") //liefert 123 zurück Für POST-Requests: - Request.Form //liefert alle Formularwerte zurück - Request.Form(name) //liefert einzelnen Wert anhand des Arguments Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 32 Microsoft - ASP.NET – Das Cookie - Objekt - Über das Response-Objekt besteht auch Schreib-Zugriff auf die Cookies. Response.Cookies("MeinCookie").Value = "Einzelnes Cookie" Response.Cookies("Demobereich")("Benutzername") = “Tom" Response.Cookies(" Demobereich ")("Auflösung") = “1024x780" Response.Cookies("Demobereich ").Expires = DateTime.FromString("4/1/2002") Response.Cookies("Demobereich ").Expires = DateTime.Now.AddMonths(1) - Über das Request-Objekt besteht analog Lese-Zugriff auf die Cookies. v1 = Request.Cookies("MeinCookie").Value username = Request.Cookies(" Demobereich ")("Benutzername") aulsg = Request.Cookies(" Demobereich ")("Auflösung") - Hinweis: Die Sessionverwaltung wird von ASP.NET durch wesentlich leistungsfähigere Methoden unterstützt. Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 33 Microsoft - ASP.NET – Das Session -Objekt - Das Session-Objekt verwaltet Session-Informationen über bestimmte Zeiträume. Unterscheidung erfolgt über eindeutige Session.SessionID (120bit-Wert) Hauptmethoden Session(variablenname) = wert // Schreiben eines Sessionswertes Session.Add(variablenname, wert) v = Session(variablenname) // Lesen eines Sessionswertes - Zusätzliche Methoden Session.Timeout = 20 // Wert in Minuten Session.Abandon // Beendet (löscht) Session definiert ! Vorgehensweise bei Browsern ohne Cookieunterstützung - Browser-Cookieunterstützung wird von ASP.NET überwacht - Bei fehlender Cookieunterstützung erfolgt AUTOMATISCHE Codierung der SessionID als Anhang in der URL ( Cookie-Munging ) : www.myserver.de/form1.aspx?SessionID=R2GeHTWSHD Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 34 Microsoft - ASP.NET – Weitere Objekte Page-Objekt -enthält Eigenschaften, Methoden und Events der Seite, u.a. : - Eigenschaft IsPostBack - bei Wahr wurde die Seite das 2. Mail gesendet - Definiert auch DataBinding zur Datenbankanbindung - Event OnLoad – wird aktiviert bei Laden der Seite Sub Page_Load(obj as object, e as eventArgs) dim intStunde as integer = Jetzt.Hour: Dim s as string If intStunde < 12 then s= "Guten Morgen!“ elseif intStunde > 12 & intStunde < 18 then s= "Guten Tag!“ else s: = "Guten Abend!“ End If: Label1.Text += s : End Sub HttpApplication-Objekt – wird GENAU EINMAL pro Applikation gehalten : - Daten und Methoden dieses Objektes sind für die gesamte Anwendung verfügbar und beziehen sich nicht auf einen bestimmten Benutzer. - sehr hilfreich für globale Meldungen oder Manipulationen über alle Sessions Application(“AktWerbung")=“Werbung“...Response.Write(Application(" AktWerbung ")) HttpServerUtility-Objekt - Server - stellt zentrale Hilfunktionen zur Verfügung - Weiterleitung zu anderer Seite OHNE Redirect per Browser (Ums. im Server selbst) If (strPasswort = “xxx") Then Server.Transfer("erfolgreich.aspx") Server.Execute(„zwischenrechnung“) - überträgt an andere Seite, kehrt jedoch zurück - HtmlEncode / HtmlDecode / UrlEncode / UrlDecode konvertiren jewiels nach den Regen von HTML oder URL´s : Server.HtmlEncode ("<br>“) => <br> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 35 MS - ASP.NET – Webformulare - Webformulare verwenden ASP.NET-spezifische Server-Steuerelemente,welche vom Server zur Generierung des eigentlichen HTML-Formulars verwendet werden : - Bei bekanntem Browser können dessen Eigenarten berücksichtigt werden. - Es lassen sich vom Server aus bereit die Verarbeitungsmethoden und Verknüpfungen vorbereiten (Reduzierung der Entwicklungsaufwandes) - Webserver-Steuerelemente stellen komplett neue Elemente bereit, welche später den Code für das Formularelement erzeugen : - Der ASP.NET-Server-Code <asp:Button text="Senden" runat="server" /> - erzeugt für den Browser <input type="submit" name="ctrl1" value="Senden" /> - HTML-Server-Steuerelemente stellen die bekannte HTMl-Formularelemente dar, ergänzt um das Attribut runat="server" – damit besteht programmtechnischer Zugriff auf die Attribute des Steuerelementes - Prinzipiell können auch die HTML-Formularsteuerelemente verwendet werden. - Validierungssteuerelemente sind speziell zur Prüfung der Nutzereingaben vorgesehen - Mit Benutzer- Steuerelementen können neue, meist komplexe Steuerelemente durch den Entwickler definiert werden. Einsatzempfehlung - HTML-Server-Steuerelemente sinnvoll zur Migration von Standard-HTML zu ASP - Webserver-Steuerelemente bei Aufbau neuer Seiten Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 36 MS - ASP.NET – HTML-Server-Steuerelement - Die Option runat="server" erlaubt die programmtechnische Manipulation des HTML-Codes (hier der Grafikausrichtung). <script runat="server"> Sub Klick(obj as object, e as EventArgs) select case obj.Value case "Links" wort_bild.align = "left" case "Rechts" wort_bild.align = "right" End select End Sub </script> <html><body>ASP.NET –Demo –HTML-Web-Steuerlemente <hr><p> <form runat="server"> <input type="Button" id="Links" runat="server“ Value="Links„ nServerClick="Klick" /> <input type="Button" id="Rechts" runat="server" Value="Rechts" OnServerClick="Klick" /> </form <img src="wort.gif" id="wort_bild" runat="server"> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 37 MS - ASP.NET – Webserver-Steuerelement - Bei Webserver-Steuerelementen muss sich der Entwickler nicht um die Generierung der Index-Werte u.ä. kümmern. <script runat="server"> sub Senden(obj as object, e as eventargs) dim strAlter as string = Alter.SelectedItem.Text lblMeldung.Text = "Hallo " & tfName.Text & "!<p>" & "Ihr Alter: " & strAlter & "<br>" If Alter.SelectedIndex < 2 then lblMeldung.Text += "Sie sind aber jung!<p>" End sub </script> <html><body> <form runat="server"> <asp:Label id="lblMeldung" runat="server"/><p> Ihr Alter: <asp:RadioButtonList id="Alter" runat="server" RepeatDirection="horizontal"> <asp:ListItem><0-20</asp:ListItem> <asp:ListItem>20-40</asp:ListItem> </asp:RadioButtonList><p> <asp:Button id="btSenden" runat="server" Text="Senden" OnClick="Senden" /> </form></body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 38 MS - ASP.NET – Benutzer -Steuerelement - Mit der Option @ Control kann ein neues, benutzerdefiniertes WebserverSteuerelemente definiert werden (Ablage in .ascx-Dateien ) Dabei sind auch Parameter definierbar (siehe HintergrundFarbe) <%@ Control Language="VB" %> <script language="VB" runat="server"> public HintergrundFarbe as String = "White" public Benutzername as string public Passwort as string public sub Senden(obj as object, e as eventargs) Meldung.Text = “Name:“ & Benutzer.Text & "PW:" & Pass.Text end sub </script> <table style="background-color:<%=HintergrundFarbe%>;font: 10pt verdana; > <tr><td><b>Name: </b></td> <td> <ASP:TextBox id="Benutzer" runat="server"/></td> </tr><tr> <td><b>Passwort: </b></td> <td> <ASP:TextBox id="Pass" TextMode="Password" runat="server"/></td> </tr><tr><td></td> <td><ASP:Button Text="Senden" runat="server" OnClick="Senden" /></td> </tr> </table> <ASP:Label id= “Meldung" runat="server"/> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 39 ASP.NET –Einbindung eines Benutzer-Steuerelement - Mit der Option <%@ Register wird ein benutzerdefiniertes WebserverSteuerelement eingebunden (Laden aus .ascx-Dateien ) Parameter können angeben werden definierbar (siehe HintergrundFarbe) <%@ Page Language="VB" %> <%@ Register TagPrefix="ASPNET" TagName="AnmeldeFormular" _ src="AnmeldeFormular.ascx" %> <html><body> <form runat="server"> <ASPNET:Anmeldeformular id="Anmeldeformular1" runat="server" Passwort="MeinPasswort" Benutzername="Chris" HintergrundFarbe= “red" /> </form> </body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 40 ASP.NET – Dynamisches Erzeugen von Steuerelementen - es können durch ASP.NET-Code auf dem Server dynamisch Elemente erzeugt werden. <script language="VB" runat="server"> sub Page_Load(obj as object, e as eventargs) dim objTF as TextBox objTF.ID = "tfEins" objTF.Text = "Hallo " Page.Controls.Add(objTF) end sub </script> - Das Anbinden von Ereignissen muss mit derMethode AddHandler erflgen : - AddHandler objTF.TextGeandert, Entwicklung webbasierter Anwendungen - addressOf MyFunction Prof. T.Wiedemann - HTW Dresden - Folie 41 MS - ASP.NET – Validierungssteuerelemente - Validierungs-Steuerelemente dienen zur client- UND serverseitigen Überprüfung von Nutzereingaben und ergänzen i.d.R. ein Webserver-Steuerelement vom Server werden auch die entsprechenden Javascript-Codes für die Clientsseitige Validierung erzeugt. <%@ Page Language="VB" %> <script runat="server"> sub Senden(obj as object, e as eventargs) If Page.IsValid then lblMeldung.Text = "Seite OK !“ End sub </script> <html><body> <form runat="server"> <asp:Label id="lblMeldung" runat="server"/><p> Name: <asp:TextBox id=“Name" runat="server" /><br> <asp:RequiredFieldValidator runat="server" ControlToValidate=“Name“ ErrorMessage=“Name erforderlich"/><p> <asp:Button id="btnSenden" runat="server„ Text="Senden" OnClick="Senden" /> </form></body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 42 MS - ASP.NET – Datenbankanbindung - Es werden die bekannten .NET-Verfahren mit OLEDB verwendet. <asp:Button id="btnSenden" runat="server„ Text="Senden" OnClick="Senden" /> </form></body></html> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script language="VB" runat="server"> sub Page_Load(obj as Object, e as EventArgs) 'Verbindung konfigurieren dim objVerbindung as new OleDbConnection _ ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\daten\banking.mdb") 'Verbindung oeffnen dim objCmd as new OleDbDataAdapter ("Select * from Adressen", objVerbindung) dim ds as DataSet = new DataSet(): rem Dataset füllen objCmd.Fill(ds, "benutzerTabelle") 'Datenansicht wählen und an Server-Steuerelement binden MeineDataList.DataSource = ds.Tables("benutzerTabelle").DefaultView MeineDataList.DataBind() end sub </script> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 43 MS - ASP.NET – Datenbankabruf - Itemlist iteriert selbständig über ALLE Datensätze DataItem realisiert Zugriff auf Daten <html><body> <ASP:DataList id="MeineDataList" RepeatColumns="2" RepeatDirection="Vertical" runat="server"> <ItemTemplate> <div style="padding:15,15,15,15;font-size:10pt; font-family:Verdana"> <div><i><b> <%# DataBinder.Eval(Container.DataItem, "Vorname")%> <%# DataBinder.Eval(Container.DataItem, "Nachname")%> </i></b> </div><br> <b>Adresse: </b><%# DataBinder.Eval(Container.DataItem, "Adresse") %><br> <b>Ort: </b><%# DataBinder.Eval(Container.DataItem, "Ort")%><br> <b>Bundesland: </b><%# DataBinder.Eval(Container.DataItem, "Bundesland") ... </div> < </ItemTemplate> </ASP:DataList> </body></html> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 44 MS - ASP.NET – Datenbankabruf - Spezielle Steuerelemente unterstützen komplexe Datenbankoperationen DataGrid ist eines der leistungsstärksten Elemente <asp:DataGrid id="DataGrid1" runat="server" BorderColor="black" : GridLines="Vertical" : Rem weitere Formatierungen .... <Columns> <asp:TemplateColumn HeaderText="Name"> <ItemTemplate> <asp:Label id="Name" runat="server" Text='<%#_ Container.DataItem("Vorname") & " " & Container.DataItem("Nachname") %>'/> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn HeaderText="Adresse" DataField="Adresse" /> <asp:BoundColumn HeaderText="Stadt" DataField="Stadt"/> ... <asp:HyperlinkColumn HeaderText="Bearbeiten" text="Bearbeiten" NavigateURL="bearbeiten.aspx"/> <asp:ButtonColumn HeaderText="Löschen?" text="X„ CommandName="delete" ButtonType="PushButton"/> </Columns> </asp:DataGrid> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 45 MS - ASP.NET – Webservice-Entwicklung - Option Webservice definiert Webservice – Dienst (Server-seitig) Ablage in .asmx-Datei ASP.Net generiert auch zusätzliche Dokumentationsseiten (siehe unten) <%@ WebService Language="VB" Class="Taschenrechner" %> Imports System.Web.Services public Class Taschenrechner : Inherits WebService <WebMethod()> Public Function Addieren(intA As Integer, intB As Integer) As Integer Return(intA + intB) End Function End Class Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 46 MS - ASP.NET – Webservice-Client - Entwicklung - Ausgehend von einem publizierten WS kann mit einem Assistenten (Webverweis hinzufügen) ein Webservice-Client angelegt werden Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 47 MS - ASP.NET – Aufruf des Webservices - Über den importierten WebService kann dann ein entsprechendes Zugriffsobjekt angelegt werden. Über das Objekt sind die Servicedienste aufrufbar. Partial Class _Default Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As Handles Button1.Click System.EventArgs) Dim webservice As New localhost.Service1() Dim s As String s = webservice.HelloWorld() TextBox1.Text = "WS-Rückgabe:" & s End Sub End Class Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 48 Microsoft - ASP.NET – Zusammenfassung Vorteile : - ASP.NET ist durch das CodeBehind-Concept und die verfügbaren Steuerelemente sehr leistungsfähig und erlaubt schnelle Entwicklungszyklen - Anbindung an gesamte .NET-Entwicklungsschiene erlaubt Nachnutzung von eventuell vorhandenem .NET-Code Nachteile : - Bindung an Microsoft (.NET-Bibliothek, kompatibler Server bzw. IIS, Betriebssystem) - Die Entwicklung von Microsoft war in den letzten Jahren nicht immer investitionssichernd -> viele neue Technologien mit teilweise großen Sprüngen ohne die Option von sanften Migrationen Bewertung : bei bereits vorhandenem Microsoft-IT-Portfolio sinnvolle Entwicklungsumgebung Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 49 Microsoft - Aktuelle Entwicklungen - Silverlight Microsoft Silverlight : - proprietäre Technologie von Microsoft mit Schwerpunkt auf Erstellung von Rich Internet Applications (RIAs) - benötigt (noch) entsprechendes Browser-Plug-in - verfügbar für IE, Firefox, Safari und Opera (unter Win und Mac, teilweise auch für Linux (z.B. von Novell -> Moonlight) ) - abgeleitet aus der Windows Presentation Foundation (WPF/.NET3.0) - enthält auch eine Submenge der XAML (eXtensible Application Markup Language)-Beschreibungssprache - 2 Optionen für die Programmierung - eine JavaScript API, welche den Scriptcode durch den Browser interpretiert und direkt auch mit dem HTML-Code verknüpft werden - eine „managed API for Silverlight“, welche kompilierten Code der .NET common language runtime (CLR) verwendet -> deutlich leistungsfähiger - Zielrichtung von MS - Gegengewicht zur Adobe Flash, durch .NET-Hinterland durchaus erfolgversprechend ... Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 50 Microsoft - Silverlight – Architektur Quelle: MS - http://msdn.microsoft.com/en-us/library/bb404713(VS.95).aspx Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 51 Microsoft - Silverlight – Versionen Microsoft Silverlight 1.0 : - besteht aus den Komponenten User-IO, User-Interface-Kern (Renderer), Medienwiedergabe und XAML–Controls - startet mit einem XAML-Canvas-Objekt, auf welchem verschiedene Grafikelemente darstellbar sind - Unterstützung von Ereignissen und Triggern Microsoft Silverlight 2.0 : - zusätzliche XAML-Controls (übernommen aus WPF) - neue Layout-Controls (z.B. StackPanel und das Grid) - verbesserte Datenanbindung (z.B. DataGrid, LINQ) und Funktionen zur flexiblen Netzwerkkommunikation (mit REST, RSS und WS) - integrierter Mediaplayer (für WMV), VC-1, HDV,WMA und MP3) Microsoft Silverlight 3.0 (ab Sommer 2009) : - zur Zeit (Juni 09) im Beta-Test (neues Plugin) – Freigabe der neuen Version ab Sommer 2009 Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 52 Microsoft - Silverlight – Beispiele Quelle: http://www.vectorlight.net/liquid_silverlight_controls_demo.aspx Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 53 Microsoft - Silverlight – XAML - Basistechnologie - entwickelt für .Net 3.0 und .NET 3.5 für Windows Presentation Foundation (WPF) und Windows Workflow Foundation (WF) - allgemeine Beschreibungssprache für Desktop UND Web- Gui´s - für Silverlight wird Untermenge verwendet (früherer Name WPF/E “Windows Presentation Foundation Everywhere“ ) - Ereigniscode wird wieder als Code-Behind-Datei abgelegt ASP.NET-Code Button b = new Button(); b.With=100; b.Content = “Hello World!"; b.OnClick += new ClickEvent Handler(HWButton_Click); XAML-Code <Button Name="C_Button" Width="100" DockPanel.Dock="Fill" Click="HWButton_Click" Margin="10,10,10,10"> Hallo Welt! </Button> Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 54 Microsoft - Silverlight – LINQ - Basistechnologie LINQ - Language INtegrated Query - neue Daten- Abfragesprache ab .NET 3,0 - im Gegensatz zu SQL werden Abfragen nicht als String sondern als (überprüfbarer) Code eingebunden - damit Prüfung auf Fehler bereits im Compiler (und nicht zur Laufzeit) - unterstützt werden Datenbanken, XML, Textdaten etc. LINQ-Code für XML var Adressen = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement("Container", "Inhalt") ... ); string[] names = { "Burke", "Connor", "Frank","George", "Harris", "David" }; SQL-like LINQ-Code IEnumerable<string> expr = from s in names where s.Length == 5 orderby s select s.ToUpper(); foreach (string item in expr) Console.WriteLine(item); Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 55 Microsoft - Trends - Zusammenfassung - mit den aktuellen Entwicklungen hat Microsoft einige interessante Ansätze für eine effiziente Webentwicklung zu bieten - mit Silverlight besteht eine gute Konkurrenzsituation zu Flash - die Basistechnologien XAML und LINQ sind auch auf mobilen Geräte sehr effizient umsetzbar - für die .NET-Entwicklungsumgebungen Visual Studio existieren entsprechende Erweiterungen für Silverlight - Silverlight wird wahrscheinlich in den nächsten Jahren durch die neueren HTML5-Technologien abgelöst Entwicklung webbasierter Anwendungen - Prof. T.Wiedemann - HTW Dresden - Folie 56