Entwicklung moderner Anwendungen für Microsoft Windows Option.ch 1 Inhalt Entwicklung moderner Anwendungen für MS Windows Von Prozeduren über Objekte zu Diensten Web-Forms, Web-Services und Windows-Forms .NET Anwendung und "Managed Code“ Die Bedeutung von C#, XML und SOAP bei .NET Chancen, Risiken und Kosten bei der Entwicklung mit .NET Option.ch 2 Geschichte der Softwareentwicklung 1. Sequenzielles Programmieren in monolithischen Programmen und „Polling“ für die Abfrage der Peripheriegeräte 2. Entwicklung von GUI-Anwendungen mit Ereignissen und RückrufFunktionen (Callbacks bei X-Windows und Microsoft Windows) 3. Aufteilung der Programme in dynamische Bibliotheken (DLLs) 4. Auslagerung von Programmierlogik in Komponenten (z.B. COMKomponenten) 5. Entwicklung von zweischichtigen Client/Server-Programmen (z.B. zur Anbindung von Datenbanken) 6. Einsatz von Middleware, wie DCOM oder CORBA 7. Verlagerung von Anwendungen auf das Web mit Client/ServerKonzepten unter Verwendung von HTML und XML 8. Web-Controls mit Ereignissen und Rückruflogik sowie Web-Services Option.ch 3 Rückruffunktionen (Callbacks) Message Queue Hauptspeicher Notepad Zurück zur Übersicht Option.ch 4 DLL- und DCOMKomponenten COM-Komponente DCOM Lokale DLL Stub Proxy Zurück zur Übersicht Option.ch 5 Entwicklung moderner Anwendungen für MS Windows Von Prozeduren über Objekte zu Diensten Web-Forms, Web-Services und Windows-Forms .NET Anwendung und "Managed Code“ Die Bedeutung von C#, XML und SOAP bei .NET Chancen, Risiken und Kosten bei der Entwicklung mit .NET Option.ch 6 Web-Forms Ältere Web-Anwendungen Moderne Web-Anwendungen (Web-Forms, Web-Controls) Navigation zu unterschiedlichen, z.T. statischen Seiten (Wizard) Option.ch Navigation bzw. Sprünge innerhalb der Logik einer einzigen Seite unter Berücksichtigung des Zustands (View State) 7 Web-Anwendungen und Web-Services Web-Server Web-Services Anwendungslogik Option.ch Prozesslogik 8 Windows-Forms Windows Forms - Konventionelle 32-Bit-Anwendungen - .NET Windows Forms-Anwendungen (Smart Client Anwendungen) Vorteile von .NET Windows Forms - Kontrolle des Zugriffs auf das Betriebssystem durch die Common Language Runtime und XML-Dateien - Einfache Installation ohne Modifikation der Registrierungsdatenbank (Copy&Paste Deployment) - Plattformunabhängigkeit und Sprachunabhängigkeit des Codes - Mächtige Bibliotheken für die Entwickler - Leichter Zugriff auf Web-Services Option.ch 9 Windows-Forms Terminalserver UI-Logik Option.ch Web-Services Anwendungslogik 10 ...und nun alle zusammen Vergleich der Anwendungsoptionen: - Lokale Windows Forms-Anwendungen - Web-Anwendungen über Web-Server - Windows Forms-Anwendungen über Terminalserver Vorteile von Windows Forms-Anwendungen - Schnelle Maskenwechselzeiten - Reichhaltige Benutzerschnittstelle - Unproblematische Sitzungsverwaltung Vorteile von Web-Anwendungen - Plattformunabhängig (laufen im Browser) - Tauglich für das Internet Option.ch 11 Entwicklung moderner Anwendungen für MS Windows Von Prozeduren über Objekte zu Diensten Web-Forms, Web-Services und Windows-Forms .NET Anwendung und "Managed Code“ Die Bedeutung von C#, XML und SOAP bei .NET Chancen, Risiken und Kosten bei der Entwicklung mit .NET Option.ch 12 .NET-Strategie .NET beschreibt ein verändertes Architekturmodell und eine neue Plattform .NET bringt eine Transformation von klassischen Anwendungen und Websites zu neuen Web-Services mit sich .NET baut auf anerkannte Internet-Standards, wobei XML und SOAP im Zentrum stehen .NET basiert auf einer Laufzeitumgebung, die vorkompilierten Code in der Intermediate Language verarbeitet Option.ch 13 Neue Konzepte für die Entwicklung .NET stellt die Evolution von existierenden Komponentenmodellen dar Frei in der Wahl der Programmiersprachen (C++, C#, Visual Basic.NET, ...) mit gemeinsamem Typsystem und Klassen Laufzeitmodell durch die Common Language Runtime (CLR) Common Type System (= Unabhängigkeit von der Programmiersprache) Just-in-Time-Compiler (JIT) in die Microsoft Intermediate Language (MSIL) und Garbage Collection als moderne Konzepte Erweiterung von COM+ und Microsoft Transaction Services (MTS) HTTP, HTML, XML, SOAP und UDDI sind in .NET integriert Option.ch 14 .NET Framework, Sprachen und Werkzeuge VB.NET C++ C# ... … Common Language Specification GUIAnwendungen Data und XML Visual Studio.NET Web-Services und -Anwendungen Base Class Library Common Language Runtime Option.ch 15 Microsoft .NET-Framework Anwendung läuft auf dem lokalen Desktop oder auf Terminalservern ASP.NET Web-Forms Web-Services .NET Bibliotheken Bibliotheken MFC (C++) Windows Forms (Managed Code) VB6 Common Language Runtime Betriebssystem: Grafiksubsystem (GDI) .NET-Framework 1.1 Windows Anwendungen (Unmanaged Code) Anwendung läuft im IIS bzw. Browser Web Server (IIS) Windows 2000/2003 Betriebssystemkern Option.ch 16 Entwicklungsumgebungen Verbreitetste .NET-Entwicklungsumgebungen - Microsoft Visual Studio .NET - Microsoft .NET Framework SDK (kostenfrei) Zum Vergleich: Kommerzielle Java-Entwicklungsumgebungen - Borland Jbuilder - Oracle Jdeveloper Open Source Projekte für Java-Entwicklungsumgebungen - Eclipse initiiert von IBM - Netbeans initiiert von Sun Microsystems Option.ch 17 Entwicklung moderner Anwendungen für MS Windows Von Prozeduren über Objekte zu Diensten Web-Forms, Web-Services und Windows-Forms .NET Anwendung und "Managed Code“ Die Bedeutung von C#, XML und SOAP bei .NET Chancen, Risiken und Kosten bei der Entwicklung mit .NET Option.ch 18 XML, SOAP, WSDL und UDDI XML: Extensible Markup Language - Seitenbeschreibung SOAP: Simple Object Access Protocol - Datenzugriff WSDL: Web Services Description Language UDDI: Universal Discovery, Description and Integration Service Provider finden (UDDI) Service Broker Option.ch Service Client Dienst registrieren, Publish (WSDL) Verbinden, Bind (SOAP) Service Provider 19 Visual Basic .NET Visual Basic .NET beseitigt Inkonsistenzen und Kompatibilitätsprobleme, die durch die lange Historie von Visual Basic entstanden Visual Basic.NET besitzt jedoch noch die Einfachheit von Visual Basic Visual Basic.NET besitzt nun die volle Unterstützung von objektorientierten Programmiermerkmalen - Vererbung (Inheritance) - Überladen (Overload) - Programmierschnittstellen (Interfaces) - Gemeinsam verwendete Elemente (Shared Members) - Konstruktoren und Intialisierer - Objektorientiertes Ereignissystem Option.ch 20 Managed C++ Managed C++ nutzt nicht die Microsoft Foundation Classes oder die Active Template Library, sondern die .NET Framework Bibliothek Was hat sich dafür geändert im Vergleich zu Unmanaged C++? - Erweiterungen des Präprozessors - Neue Schlüsselworte und Typen - Deklarative Definition von Objekten auf Attributbasis (d.h. vereinfachte COM-Programmierung) - Auswertung von Ereignissen über Delegates (Objektorientierter Funktionszeigern) Anmerkung: Es können auch Anwendungen erstellt werden, die gemeinsam mit Managed und Unmanaged Klassen arbeiten Option.ch 21 Zum Vergleich: Unmanaged C und C++ C und C++ werden zur Entwicklung von konventionellen WindowsProgrammen und COM-Komponenten genutzt C nutzt die direkten API-Funktionen der Windows-Betriebssysteme C++ nutzt die Microsoft Foundation Classes als Klassenbibliothek COM, die Microsoft Foundation Classes und die Active Template Library zur COM-Entwicklung werden seit der Einführung von .NET nicht weiter unterstützt. Gründe hierfür sind: - COM ist veraltet, da es auf verbindungsorientierten Mechanismen basiert - Probleme mit der „DLL-Hölle“ der bisherigen Anwendungen - COM ist nicht unabhängig von der Programmiersprache - Ständig wachsender API-Bestand Option.ch 22 C# C# wurde von Microsoft als Konkurrenz zu Java entwickelt C# vereint die Leistungsfähigkeit von C mit der relativen Einfachheit von Visual Basic C# ist der „natürlichste“ Zugang zu .NET C# ist sauberer strukturiert als C++ und Visual Basic, z.B. bei Header-Dateien, der Einbindung von Komponenten und bei der Referenzierung von Objekten C# ermöglicht den Rückgriff auf vorhandene C-Codebestände C# wird im Gegensatz von Java immer direkt auf dem Prozessor ausgeführt und niemals interpretiert C# bietet Properties, objektorientierte Funktionszeiger, Ereignisse, ein Modell für Collections und Code-Versionierung, aber KEINE Zeiger Option.ch 23 Der Wettbewerber: Java Java wurde Mitte der 90er Jahre von Sun Microsystems entwickelt Die Ausführung von Java basiert auf einer Java Virtual Machine, die plattformunabhängig den Code interpretiert Java-Code wird zumeist in der Form von Applets angewendet, d.h. Java-Komponenten, die auch in HTMLCode eingebettet werden können Für Sicherheit sorgt die Sandbox, in der Java-Code entkoppelt von den restlichen Systemressourcen ausgeführt wird Java als Sprache ist objektorientiert und wurde als Evolution von C++ gesehen (vereinfachte Syntax, keine Zeiger) Java ist die Basis der Java 2 Enterprise Edition (J2EE) Option.ch 24 Entwicklung moderner Anwendungen für MS Windows Von Prozeduren über Objekte zu Diensten Web-Forms, Web-Services und Windows-Forms .NET Anwendung und "Managed Code“ Die Bedeutung von C#, XML und SOAP bei .NET Chancen, Risiken und Kosten bei der Entwicklung mit .NET Option.ch 25 Der „Grenzkonflikt“ (Quelle: Gartner) 100 % The war zone .NET 50 % New Project Starts J2EE 25 250 1,000 3,000 10,000 Concurrent Users Option.ch 26 Technologien in Projekten (Quelle: Gartner) 100% Precomponent Architectures (CICS, Tuxedo, PL/SQL, AS/400, CGI, Scripts and 4GL) .NET 50% COM/COM+ J2EE CORBA 1998 Option.ch 1999 2000 2001 2002 2003 2004 2005 2006 27 Einsparpotenziale Kosteneinsparungen lassen sich durch folgendes Vorgehen erreichen: Zentralisierung von Diensten, Komponenten und Anwendungen Reduktion der Komplexität und der Verwaltungsaufwände bei den Client-Plattformen Analyse der Kundenbedürfnisse und Konzentration auf die Realisierung der zugehörigen Produkte bzw. Funktionalitäten Fazit: Ein Produktanbieter oder ein Dienstleister benötigt ausgeprägtes Wissen über Prozesse und Bedürfnisse des Kunden. Nur dann lassen sich Produkte anbieten, die erfolgreich Kosten einsparen können Option.ch 28