.NET Nico Orschel Microsoft Student Partner, TU-Ilmenau [email protected] http://www.studentprogram.de/ilmenau Agenda • • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek Zukunft Agenda • • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek Zukunft Die heutigen Probleme (1/2) • Deployment komponentenbasierter Anwendungen ist nicht einfach – • Das Web-Programmierungsparadigma – • Es droht die DLL-Hölle Zustandslose HTML-Seiten (oder WebApplikationen) sind schwer zu entwickeln API‘s – – Es gibt eine Vielzahl von API‘s (COM, Win32, MFC, usw.) Plattformabhängigkeit der API‘s Die heutigen Probleme (2/2) • Applikationen integrieren – • COM „sitzt auf“ anderen Objektkonzepten – • „Internetfähigkeit“ von COM Dienst- und Plattformintegration – • • • Sprachen haben unterschiedliche Typsysteme Keine Standards für die Interoperabilität Kontrolle von Code Ressourcenverwaltung Fehler bei der Entwicklung Vision / Zukunft • Software als Service • Unterstützung von Smart Devices • offene Standards als Grundlage Microsoft Web Services Partner Web Services andere Web Services Internet + XML Clients Ihr Unternehmen.com Geschäftslogik der Applikation Datenzugriff und -speicherung andere Applikationen .NET Framework VB C++ C# J# … Common Language Specification Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Visual Studio.NET ASP.NET Agenda • • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek Zukunft .NET für Entwickler VB C++ C# J# … Common Language Specification Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Visual Studio.NET ASP.NET Der Weg zum Maschienencode Source Code IL Code Ngen Native Code VB C# C++ Compiler Compiler Compiler Assembly Assembly Assembly Common Language Runtime JIT Compiler Managed Code CLR Services Managed CLR Code Managed Code Operating System Services Unmanaged Code Assemblies (1/2) • .NET Anwendungen bestehen aus Assemblies • Private Assemblies – Identifikation anhand eines einfachen Namens – Keine Versionsüberprüfung – Installation per Filecopy • Standardmäßig befinden sich Assembly und Anwendung im gleichen Verzeichnis • Verzeichnis kann per CFG-Datei definiert werden • Shared Assembly – Identifikation über einen Strong Name • Eindeutig per Public-Key-Verschlüsselung • Strong Name = Identität + Public Key – Versionsüberprüfung durch die Runtime – Installation im Global Assembly Cache Assemblies (2/2) • Strong Name garantiert Codeintegrität – Unbemerktes Einschleusen von modifiziertem Code wird verhindert – Aber: Auch böse Menschen arbeiten mit Strong Names • Code-Signing garantiert Codeidentität – Code ist aufgrund seines X.509-Zertifikats eindeutig identifizierbar Code wird kompiliert • IL-Code wird vor der Ausführung immer (!) durch Compiler in echten Maschinencode übersetzt • IL-Code ist unabhängig von Hardwareplattformen Common Type System • Das Typsystem wandert vom Compiler in die Runtime – Typen werden eindeutig • „Ein String unter C# und ein String unter VB.NET sind identisch“ – Sprachen werden „per Definition“ interoperabel, da sie das gleiche Typsystem benutzen • Compilerbau wird einfacher Alles ist ein Objekt! Object Value Type Boolean Int64 Byte SByte Enum Typen im Namespace System Char Single Type Currency TimeSpan DateTime String TypedRef. Decimal UInt16 Double Array UInt32 Guid UInt64 Exception Int16 Void Int32 Delegate Common Language Specification • „Kleinster gemeinsamer Nenner“ für Typen – C++ und C# kennen Zeiger; VB.NET nicht – C++ kennt die STL; VB.NET und C# nicht – „komplette“ Sprachintegration schwierig • Die Common Language Specification (CLS) definiert den kleinsten gemeinsamen Nenner aus dem Common Type System, den jeder Compiler unterstützen sollte • „Mapping“ der CLR-Typen auf Sprachtypen – Integer unter VB.NET entspr. bspw. System.Int32 – Für COM-Programmierer ist System.Object die moderne Form eines Variant ;-) • C# Typen sind Managed Types (!) Implikation / Zusammenfassung • Sprachen werden gleichwertig, da alle Compiler IL-Code erzeugen – Eine C# Klasse kann (z.B.) von einer VB.NET Klasse abgeleitet sein • Vererbungsfähigkeit kommt aus der Runtime – Einheitliche Fehlerbehandlung – Ähnliche Performance „The language doesn‘t matter!“ Dan Appleman Agenda • • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek Zukunft Common Language Runtime VB C++ C# J# … Common Language Specification Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Visual Studio.NET ASP.NET Robust und sicher • Automatisches Lifetime Management – Alle .NET Objekte werden ‘garbage collected’ – Keine ‘Stray Pointers’, keine zirkulären Referenzen • Eingebautes, strukturiertes Exception Handling – keine HRESULTS (kryptische Fehlernummern) mehr! • Prüfbar und Typsicher – Verhindert die häufigsten Programmierfehler • Evidence-based Sicherheit – Herkunft des Codes und Benutzerrechte – Erweiterbare Rechte (Extensible permissions) Plattform für alle Sprachen • Alle Features des .NET Framework sind in jeder .NET Programmiersprache zugänglich • Nahtlose Mehrsprachige Entwicklung – Vererbung über Sprachgrenzen hinweg • Implementierungen verschiedener Sprachen – Perl, COBOL, Eiffel, Python, etc. – Andere wie APL, Smalltalk, Lisp • Hochproduktive Werkzeuge – Debugger, Profilers, Code Analyzers, etc. arbeiten für alle Sprachen. Wartung und Verteilung • Keine Registrierung notwendig – Einfach die Applikationskomponenten kopieren (xcopy deployment) – Der Code ist vollständig selbstbeschreibend (MetaDaten [Manifest]) – Nebenwirkungsfreie Installation (Zero-impact install) • ‘Side-by-Side’ Ausführung – Verschiedene Versionen derselben Komponente können sogar in einem Prozess kooexistieren Web Service Demo Zusammenfassung CLR • • • • Einheitliches Typsystem Sprachen werden gleichwertig Alles ist von Object abgeleitet Das Common Type System definiert welche Typen nach außen gegeben werden sollten Agenda • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek – ADO.NET und XML – Web Services und Web Applikationen • Zukunft .NET Klassenbibliothek VB C++ C# J# … Common Language Specification Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Visual Studio.NET ASP.NET Putting it all together Unabhängigkeit von der verwendeten Programmiersprache .NET Framework RAD, Composition, Delegation Visual Basic® Forms Subclassing, Power, Expressiveness MFC/ATL Windows API Stateless, Code embedded in HTML pages ASP .NET Framework Namespaces System.Web Services Description UI HtmlControls Discovery WebControls System.Windows.Forms Design Protocols ComponentModel System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Design SQLTypes XPath Serialization System Collections IO Security Runtime InteropServices Configuration Net ServiceProcess Diagnostics Reflection Text Remoting Globalization Resources Threading Serialization Agenda • • • • Situation heute Common Language Spezification (CLS) Common Language Runtime (CLR) .NET Klassenbibliothek – ADO.NET und XML – Web Services und Web Applikationen • Zukunft .NET Framework Namespaces System.Web Services Description UI HtmlControls Discovery WebControls System.Windows.Forms Design Protocols ComponentModel System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Design SQLTypes XPath Serialization System Collections IO Security Runtime InteropServices Configuration Net ServiceProcess Diagnostics Reflection Text Remoting Globalization Resources Threading Serialization ADO.NET und XML • Verarbeitet alle Arten von Daten – XML (hierarchical), Relational • Leistungsfähiger In-Memory Daten Cache – Lightweight, stateless, disconnected – sowohl relational wie XML Zugriff, unabhängig von der Datenquelle • XML Unterstützung: – W3C DOM, XSL/T, XPath und Schema • Data Reader für Streamzugriff mit geringem Overhead Das DataSet DataSet Tables Table • Relationale Sicht der Daten – Tabellen, Spalten, Zeilen, Beschränkungen, Beziehungen • Direkte Erzeugung von Metadaten einfaches Einfügen von Daten • Explizites Cache Modell Columns Column Constraints Constraint Rows Relations Row Relation – Disconnected, remotable Objekt – Hat keine Kenntnis über die Datenquelle Zugriff wie auf ein Array – Strong Typing möglich – Filtern und Aggregieren möglich Agenda • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) .NET Klassenbibliothek – ADO.NET und XML – Web Services und Web Applikationen • Zukunft .NET Framework Namespaces System.Web Services Description UI HtmlControls Discovery WebControls System.Windows.Forms Design Protocols ComponentModel System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Design SQLTypes XPath Serialization System Collections IO Security Runtime InteropServices Configuration Net ServiceProcess Diagnostics Reflection Text Remoting Globalization Resources Threading Serialization Web Forms • • • • Einheitliches Modell Trennung zwischen Form und Code Ereignisorientiert Viel bessere Performance als ASP • Neu in ASP.Net 2.0: viele neue Controls für Standardaufgaben – Bsp.: Userverwaltung, Masterpages, Profiles, etc. Veränderungen am Server Web Services: Mehr als Browsen Web Service XML Web Service XML Web Service Site Client XML Client XML Web Service Web Services • Technische Definition - "Eine programmierbare Anwendung, auf die über Standardwebprotokolle zugegriffen werden kann" – Basiert auf SOAP • „Aufbau“ Web Service Stack – SOAP (Codierung, Transport) – UDDI (Finden, Suchen) – WSDL (Schnittstellenbeschreibung) Datenaustausch Web Services SOAP XML Web Service Demo Agenda • • • • Situation heute .NET für den Entwickler Common Language Runtime (CLR) Base Libraries – ADO.NET und XML – Web Services und Web Applikationen • Zukunft Zukunft • Windows Communication Foundation (WCF) – ehemals Codename „Indigo“ – Beschreibung von Services ( Contracts ) – Nachrichten basierend Quelle: http://www.dotnetpro.de/articles/freearticles/pdf/2005-11-Indigo.pdf Fragen? Links • http://msdn.microsoft.com/webservices/indigo /default.aspx • http://msdn.microsoft.com/netframework • http://www.codeproject.com • http://www.guidetocsharp.de • http://www.codezone.de • http://www.terraserver.com Events an der TU-Ilmenau • Ready to Launch Event – Veröffentlichung von Visual Studio 2005 und SQL Server 2005 – Vorträge • .NET Usergroup Ilmenau – Vorträge, Workshops zu .NET Themen • Informationen unter – http://www.studentprogram.de/ilmenau – Mail: [email protected] Danke! Vielen Dank für Ihre Aufmerksamkeit !