Upload
dangthien
View
212
Download
0
Embed Size (px)
Citation preview
Grundlagen des Microsoft Grundlagen des Microsoft .NET Frameworks.NET Frameworks
Master SeminarMaster SeminarAdvancedAdvanced Software Engineering TopicsSoftware Engineering Topics
Patric ZbindenPatric Zbinden
1. Mai 20031. Mai 2003
ÜbersichtÜbersicht
(1)(1) Die .NET Die .NET StategieStategie(2)(2) Common Common LanguageLanguage RuntimeRuntime (CLR)(CLR)(3)(3) ProgrammingProgramming in .NET (C#, VB.NET)in .NET (C#, VB.NET)(4)(4) .NET Framework Klassenbibliothek.NET Framework Klassenbibliothek
(1)(1) Datentechnik (ADO.NET)Datentechnik (ADO.NET)(2)(2) Web Web FormsForms (ASP.NET)(ASP.NET)(3)(3) Weitere ThemenWeitere Themen
(5)(5) FazitFazit
.NET Strategie.NET Strategie
Was ist .NETWas ist .NET
►►Framework für Software EntwicklungFramework für Software Entwicklung►►Interface zu Windows Interface zu Windows servicesservices und APIund API►►ProduktgruppenProduktgruppen
Entwicklungstools (Programmiersprachen, Visual Entwicklungstools (Programmiersprachen, Visual Studio.NETStudio.NET, .NET Framework SDK), .NET Framework SDK)Spezialisierte Server (SQL, Exchange, BizTalk)Spezialisierte Server (SQL, Exchange, BizTalk)WebServicesWebServicesGeräte (Windows CE, Geräte (Windows CE, PocketPCPocketPC))
.NET Strategie.NET Strategie
►►Verteiltes Rechnen (XML Web Services)Verteiltes Rechnen (XML Web Services)RemotingRemoting Architektur basierend auf offene Architektur basierend auf offene Internet Standards (HTTP, XML, SOAP)Internet Standards (HTTP, XML, SOAP)
►►Komponenten InfrastrukturKomponenten InfrastrukturCOM war zu komplexCOM war zu komplex
►►Enterprise Enterprise servicesservices►►Web TechnologieWeb Technologie►►EinfacesEinfaces DeploymentDeployment, Zuverlässigkeit, , Zuverlässigkeit,
Sicherheit, …Sicherheit, …
.NET Enterprise Servers.NET Enterprise Servers►► Microsoft Microsoft ApplicationApplication Center 2000Center 2000 to to deploydeploy and manage and manage highlyhighly availableavailable and and
scalablescalable Web Web applicationsapplications. . ►► Microsoft BizTalk Server 2002Microsoft BizTalk Server 2002 to to buildbuild XMLXML--basedbased businessbusiness processesprocesses acrossacross
applicationsapplications and and organizationsorganizations. . ►► Microsoft Commerce Server 2002Microsoft Commerce Server 2002 forfor quicklyquickly buildingbuilding scalablescalable ee--commercecommerce
solutionssolutions. . ►► Microsoft Microsoft ContentContent Management Server 2001Management Server 2001 to manage to manage contentcontent forfor dynamicdynamic ee--
businessbusiness Web Web sitessites. . ►► Microsoft Exchange Server 2000Microsoft Exchange Server 2000 to to enableenable messagingmessaging and and collaborationcollaboration anytimeanytime, ,
anywhereanywhere. . ►► Microsoft Host Integration Server 2000Microsoft Host Integration Server 2000 forfor bridgingbridging to to datadata and and applicationsapplications on on
mainframemainframe legacylegacy systemssystems. . ►► Microsoft Internet Microsoft Internet SecuritySecurity and and AccelerationAcceleration Server 2000Server 2000 forfor SSLSSL--securedsecured, fast , fast
Internet Internet connectivityconnectivity. . ►► Microsoft Mobile Information 2001 ServerMicrosoft Mobile Information 2001 Server to to enableenable applicationapplication supportsupport byby mobile mobile
devicesdevices likelike cellcell phonesphones. . ►► Microsoft Microsoft SharePointSharePoint™ Portal Server 2001™ Portal Server 2001 to find, to find, shareshare, and , and publishpublish businessbusiness
informationinformation. . ►► Microsoft SQL Server™ 2000Microsoft SQL Server™ 2000 to to storestore, , retrieveretrieve, and , and analyzeanalyze structuredstructured XML XML datadata. .
ComponentComponent InfrastructureInfrastructure
►► Vor COM existierte kein einfacher Weg um Vor COM existierte kein einfacher Weg um Bibliotheken ohne Bibliotheken ohne SourceSource Code zu integrieren. Code zu integrieren.
►► COMCOMVorteil: Sprachunabhängig, Internet tauglich (DCOM)Vorteil: Sprachunabhängig, Internet tauglich (DCOM)Nachteile: Nachteile: ►►Kompliziert (COM Kompliziert (COM identityidentity, , lifetimelifetime, , binarybinary layout layout rulesrules…)…)►►Keine Sprachintegration (keine Vererbung, keine Keine Sprachintegration (keine Vererbung, keine ExceptionsExceptions, …), …)
Common Common LanguageLanguage RuntimeRuntime (CLR)(CLR)
►►Wie: Java Wie: Java VirtualVirtual MachineMachine►►Virtuelle Maschine für Virtuelle Maschine für IntermediateIntermediate
LanguageLanguage IL Code.IL Code.►►AufgabenAufgaben
Ausführung von CodeAusführung von CodeTypenkontrolleTypenkontrolleSicherheitsüberprüfungenSicherheitsüberprüfungenGarbageGarbage collectioncollection……
Ausführbare DateienAusführbare Dateien
►► DateiDatei--EndungenEndungen: EXE, DLL: EXE, DLL►► Windows Portable Windows Portable ExecutableExecutable (PE) Standard(PE) Standard
CLR AusführungCLR Ausführung
►►Kein Interpreter!Kein Interpreter!►►Verschiedene Compiler für die Erzeugung Verschiedene Compiler für die Erzeugung
von Maschinencodevon MaschinencodeGlobal Global AssemblyAssembly Cache (GAC)Cache (GAC)JustJust--InIn--TimeTime (JIT) Compiler(JIT) Compiler
►►Vergleich mit der JVM:Vergleich mit der JVM:InterpreterInterpreterErweiterungen: Erweiterungen: HotSpotHotSpot CompilerCompiler
JVM vs. CLRJVM vs. CLR
►►CLRCLRAusgerichtet für verschiedene Ausgerichtet für verschiedene ProgrammiersprachenProgrammiersprachenIm Moment für WindowsIm Moment für Windows--SystemeSysteme(Mono Projekt (Mono Projekt LinuxLinux))
►►JVMJVMNur für JavaNur für JavaErhältlich auf den meisten PlattformenErhältlich auf den meisten Plattformen
Common Type System (CTS)Common Type System (CTS)
►►InteroperabilitätInteroperabilität erfordert gemeinsame erfordert gemeinsame TypenTypen
►►Zwei KategorienZwei KategorienReferenzReferenz--TypenTypenWerteWerte--TypenTypen
ReferenzReferenz-- vs. Wertevs. Werte--TypenTypen
►►Interne Behandlung der CLRInterne Behandlung der CLR
ReferenzReferenz-- vs. Wertevs. Werte--TypenTypen
►►Konsequenzen für ProgrammiererKonsequenzen für ProgrammiererZuweisung: a = bZuweisung: a = bGleichheit: a == bGleichheit: a == bInitialisierungInitialisierung
WerteWerte--TypenTypen
►►UnterkategorienUnterkategorienBasisBasis--Typen („Typen („buildbuild--inin typestypes“, „primitive “, „primitive typestypes“)“)Werden von der CLR implementiertWerden von der CLR implementiert
Benutzerdefinierte WertetypenBenutzerdefinierte WertetypenIn C# mit dem Schlüsselwort In C# mit dem Schlüsselwort structstruct (anstatt mit (anstatt mit classclass) ) erzeugte Typen.erzeugte Typen.
AufzählungstypenAufzählungstypenIn C# mit dem Schlüsselwort In C# mit dem Schlüsselwort enumenum erzeugt.erzeugt.
BasisBasis--TypenTypen►► BooleanBoolean ((truetrue oder oder falsefalse))►► ByteByte (0 .. 255)(0 .. 255)►► CharChar (Unicode Zeichen)(Unicode Zeichen)►► DateTimeDateTime (Zeit(Zeit-- und Datumswert)und Datumswert)►► DecimalDecimal (28 signifikante Dezimalstellen)(28 signifikante Dezimalstellen)►► DoubleDouble (64(64--Bit Fliesskomma Zahl)Bit Fliesskomma Zahl)►► GUIDGUID (128(128--Bit)Bit)►► Int16Int16 (16(16--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► Int32Int32 (32(32--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► Int64Int64 (64(64--Bit Zahl mit Vorzeichen)Bit Zahl mit Vorzeichen)►► SbyteSbyte ((--128 .. 127)128 .. 127)►► SingleSingle (32(32--Bit Fliesskomma Zahl)Bit Fliesskomma Zahl)►► TimeSpanTimeSpan (Zeitspanne mit Vorzeichen)(Zeitspanne mit Vorzeichen)
ReferenzReferenz--TypenTypen
►►UnterkategorienUnterkategorienSelbstbeschreibende TypenSelbstbeschreibende Typen►►Array TypenArray Typen►►KlassenKlassen
Benutzerdefinierte KlassenBenutzerdefinierte KlassenGekapselte Wertetypen (Gekapselte Wertetypen (boxedboxed classesclasses))
►►DelegatesDelegates
ZeigerZeiger--Typen (Pointer)Typen (Pointer)InterfaceInterface--TypenTypen
BoxingBoxing / / UnboxingUnboxing
►►BoxingBoxing: Konvertierung von Wertetyp zu : Konvertierung von Wertetyp zu ReferenztypReferenztyp
BeispielBeispielintint i = 20; // Wertetypi = 20; // Wertetypobjectobject box = i; // Referenztyp box = i; // Referenztyp --> > BoxingBoxing
►►UnboxingUnboxing: Umgekehrte Operation: Umgekehrte OperationBeispielBeispielintint j = (j = (int)boxint)box; // ; // UnboxingUnboxing
►►Vergleich mit Java: Explizite Vergleich mit Java: Explizite BoxingBoxing KlassenKlassen
ObjektorientiereObjektorientiere KonzepteKonzepte
►►Die CLR unterstützt OO Konzepte (wie Die CLR unterstützt OO Konzepte (wie Kapselung, Vererbung und Kapselung, Vererbung und PolymorphismusPolymorphismus))
KlassenKlassenMethodenMethodenFelderFelderStatische Felder/MethodenStatische Felder/MethodenInnere KlassenInnere KlassenInterfacesInterfacesu.s.wu.s.w..
ProgrammiersprachenProgrammiersprachen
►►C#C#►►Visual Visual Basic.NETBasic.NET (auch: VB.NET)(auch: VB.NET)►►C++ C++ ►►Viele weitere SprachenViele weitere Sprachen
APL, COBOL, Delphi, Eiffel, APL, COBOL, Delphi, Eiffel, ForthForth, , FortranFortran, , HaskelHaskel, J#, , J#, JScript.NETJScript.NET, Mercury, , Mercury, MondrianMondrian, , Oberon, Pascal, Perl, Python, RPG, Oberon, Pascal, Perl, Python, RPG, SchemeScheme, S#, S#Viele sind aber noch in BetaViele sind aber noch in Beta--PhasePhase
C#C#
►►Neue ProgrammierspracheNeue Programmiersprache►►ObjektObjekt--orientiertorientiert►►Nur einfache Vererbung (Mehrfache Nur einfache Vererbung (Mehrfache
Vererbung nur über Interfaces)Vererbung nur über Interfaces)►►Designierter Nachfolger von C++. Designierter Nachfolger von C++.
(Auch beeinflusst von Java)(Auch beeinflusst von Java)►►Ausgerichtet auf .NET FrameworkAusgerichtet auf .NET Framework
C# vs. JavaC# vs. Java
►► Viele Gemeinsamkeiten aber auch UnterschiedeViele Gemeinsamkeiten aber auch UnterschiedeSyntaxSyntax
namespacenamespacepackagepackage
weitere…weitere…
virtualvirtual(Methoden sind (Methoden sind bereits virtuell, d.h. bereits virtuell, d.h. überschreibbar)überschreibbar)
overridesoverrides(kein Schlüsselwort (kein Schlüsselwort notwendig)notwendig)
::extendsextends
sealedsealed classclassfinal final classclass
basebasesupersuper
C#C#JavaJava
C#C#
►► AufzählungstypenAufzählungstypenTypenTypen--KontrolleKontrolle
public enum DayOfWeek {Sunday = 0,Monday = 1,Tuesday = 2,Wednesday = 3,Thursday = 4,Friday = 5,Saturday = 6
}
C# C# -- FunktionsparameterFunktionsparameter
public static void SwitchValues(ref int a, ref int b) {
int c = a;a = b;b = c;
}
public static int Main(string[] args) {
int a = 10;int b = 20;SwitchValues(ref a, ref b);Console.WriteLine(a + " " + b);return 0;
}
Ausgabe: 20 10
C# C# -- foreachforeach SchleifeSchleife
public static int Main(string[] args) {
int[] aInt = {1, 2, 2, 3, 5, 7};foreach (int j in aInt) Console.WriteLine(j);return 0;
}
Ausgabe:122357
C# C# -- PropertiesProperties►► Verwendung wie Felder, aber funktioniert wie MethodenVerwendung wie Felder, aber funktioniert wie Methoden
Beispiel:Beispiel: Anstelle von zwei Methoden Anstelle von zwei Methoden getVisiblegetVisible(), (), setVisiblesetVisible(…)(…)
public bool Visible {
get { return _bVisible; }set {
if (_bVisible != value) {if (_bVisible) Hide(); else Show();_bVisible = value;
}}
}
C# C# -- IndexersIndexers
►►Zugriff auf Elemente eines Arrays:Zugriff auf Elemente eines Arrays:intint[] a = {3, 4};[] a = {3, 4};a[ia[i] = 1;] = 1;Console.Write(a[iConsole.Write(a[i]); // Ausgabe: 1]); // Ausgabe: 1
►►IndexerIndexer ermöglicht diesen Syntax auch für ermöglicht diesen Syntax auch für andere Klassen zu verwenden:andere Klassen zu verwenden:stringstring s = “Test“;s = “Test“;Console.Write(s[0]); // Ausgabe: TConsole.Write(s[0]); // Ausgabe: T
C# C# -- IndexersIndexers (2)(2)
►► Wie ein Wie ein PropertyProperty mit dem Namen „mit dem Namen „thisthis“ und mit “ und mit Argument(eArgument(e) in eckigen Klammern.) in eckigen Klammern.
public virtual int this[int row, int col]{
get { … }set { … }
}
C# C# -- Operator Operator overloadingoverloading
►► Bekannt in C++Bekannt in C++►► In Java nicht vorhandenIn Java nicht vorhandenpublic struct Complex {
public int real;public int imaginary;
public Complex(int real, int imaginary) {this.real = real;this.imaginary = imaginary;
}
public static Complex operator +(Complex c1, Complex c2) {return new Complex(c1.real + c2.real,
c1.imaginary + c2.imaginary);}
}
C# C# -- Events / Events / DelegatesDelegates
►►DelegateDelegate: Typensicherer Funktionszeiger: Typensicherer Funktionszeiger
public delegate void ClickHandler(int x, int y);
public class Test {public event ClickHandler Click;
public void Test(){
this.Click += new ClickHandler(OnClick);}
private void OnClick(int x, int y){
//... Event behandeln}
}
Visual Visual Basic.NETBasic.NET
►► Vollwertige Vollwertige ObjektObjekt--orientierteorientierte ProgrammierspracheProgrammiersprache►► ThreadingThreading►► Windows ServicesWindows Services►► Historische Überreste von DOS Zeiten wurden Historische Überreste von DOS Zeiten wurden
entfernt, Anpassungen für CTSentfernt, Anpassungen für CTSVariantVariant--DatentypDatentypSETSET / / LETLET / / OPTION BASEOPTION BASE / / GOSUBGOSUB / / ONON x x GOTOGOTO / etc./ etc.
►► Weitere Neuheiten Weitere Neuheiten (z.B. (z.B. AndAlsoAndAlso, , OrElseOrElse Operatoren)Operatoren)
Visual Visual Basic.NETBasic.NET (1)(1)
►►Nachteile:Nachteile:Umstellung für Visual Basic Programmierer ist Umstellung für Visual Basic Programmierer ist gross. Auch für Einsteiger ist der Lernaufwand gross. Auch für Einsteiger ist der Lernaufwand grösser.grösser.Viele neue SchlüsselwörterViele neue SchlüsselwörterPortierung von VB6 Projekten nur sehr Portierung von VB6 Projekten nur sehr beschränkt möglich.beschränkt möglich.
.NET Klassenbibliothek.NET Klassenbibliothek
►►Vorher: Win32 API, MFC, ATL, VB, …Vorher: Win32 API, MFC, ATL, VB, …►►.NET Framework bietet OO.NET Framework bietet OO--Bibliothek mit Bibliothek mit
über viel Funktionalität verteilt in über 100 über viel Funktionalität verteilt in über 100 NamespacesNamespaces
.NET Klassenbibliothek (1).NET Klassenbibliothek (1)
Für Microsoft SQL Server optimierte ADO.NET SchichtSystem.Data.SqlClient
Für Oracle optimierte ADO.NET SchichtSystem.Data.OracleClient
Zugriff auf Daten via OleDbSystem.Data.OleDb
Zugriff auf Daten via ODBCSystem.Data.Odbc
Die zentralen Klassen von ADO.NETSystem.Data
Zum Abspeichern und Laden von Konfigurationseinstellungen
System.Configuration
Klassen, die für die Implementation von Laufzeit- und Designzeit-Verhalten von Komponenten.
System.ComponentModel
Klassen zum Erzeugen von Listen, Hashtables, Warteschlagen etc.
System.Collections
Klassen zum Erzeugen von CompilerSystem.CodeDom.Compiler
Zum Parsen von Source-Code Dokumenten.System.CodeDom
Allgemeine Klassen, die häufig verwendet werden.System
BeschreibungNamespace
.NET Klassenbibliothek (2).NET Klassenbibliothek (2)
Bietet Reflection-Funktionalität für .NET SprachenSystem.Reflection
Erlaubt Programmierung von Netzwerkanwendungen, die auf Windows Sockets aufbauen.
System.Net.Sockets
Bietet einfache Schnittstellen zu gängigen Kommunikationsprotokollen.
System.Net
Klassen für synchrone und asynchrone Ein-/Ausgabefunktionen
System.IO
Ermöglicht Implementation von Anwendungen für verschiedene Kulturen (Sprachen, Kalender, Währungen, Zahlenformate, String-Sortierordnung etc.)
System.GlobalizationBietet Grundstrukturen Unternehmenssoftware.System.EnterpriseServicesErmöglicht Zugriff zu Druck-Funktionalitäten.System.Drawing.PrintingBietet 2-dimensionale Vektorgrafik Funktionalitäten.System.Drawing.Drawing2DGDI+ GrafikfunktionenSystem.DrawingErmöglicht den Zugriff auf ActiveDirectorySystem.DirectoryServices
Erlaubt Interaktion mit Systemprozessen, Zugriff auf EventLogs und Perfomance Counters.
System.Diagnostics
.NET Klassenbibliothek (3).NET Klassenbibliothek (3)
XML ParserSystem.XMLWinFormsSystem.Windows.FormsASP.NET WebFormsSystem.Web.UIErmöglicht die Erstellung von WebServicesSystem.Web.ServicesGrundklassen von ASP.NETSystem.WebErmöglicht Multithreading-Anwendungen zu entwickeln.System.Threading
Reguläre AusdrückeSystem.Text.RegularExpressionTextfunktionalitäten, Codierungen (Unicode, UTF-8, …)System.TextErlaubt Windows Service Anwendungen zu entwickeln.System.ServiceProcess
Ermöglicht die Verwendung von verschiedenen kryptographischen Diensten.
System.Security.Cryptography.NET SicherheitskonzeptSystem.SecurityBietet Unterstützung für die Serialisierung.System.Runtime.SerializationFür die Erstellung von verteilten Anwendungen.System.Runtime.Remoting
Bietet Zugang zu nicht .NET Bibliotheken, z.B. zu COMSystem.Runtime.InteropServices
ADO.NETADO.NET
►► ADO (Microsoft ADO (Microsoft ActiveActive--XX DataData ObjectObject))
Standardisiertes Modell Standardisiertes Modell für Datenzugrifffür Datenzugriff
►► ADO.NETADO.NETDataSetDataSet
DBDataSet
B2B
WindowsApplikation
Web Forms
XML
DBProvider
ADO.NET ADO.NET -- DatasetDataset
ADO.NET ADO.NET -- DesignerDesigner
►► DataSetDataSet Design basiert auf XML SchemaDesign basiert auf XML Schema►► Visual Visual Studio.NETStudio.NET
Import/Export von DatenbankImport/Export von DatenbankDesignerDesigner
Web Web FormsForms (ASP.NET)(ASP.NET)
►►Vor .NET: ASP (Vor .NET: ASP (ActiveActive Server Server PagesPages))Skriptsprache (keine Typen, kein Kompilieren)Skriptsprache (keine Typen, kein Kompilieren)Keine Trennung von Darstellung und CodeKeine Trennung von Darstellung und Code
►►Mit .NETMit .NET„Visual „Visual ProgrammingProgramming““Einfache Integration anderer .NET BibliothekenEinfache Integration anderer .NET BibliothekenObjektObjekt--OrientiertOrientiertXML/XSLXML/XSL
Web Web FormsForms -- Server ControlsServer Controls
►► Server Controls = Dynamische Komponenten, die Server Controls = Dynamische Komponenten, die auf dem Webserver laufenauf dem Webserver laufen
<form id="Form1" method="post" runat="server"><asp:Button id="Button1" runat="server" Text="Button"/></form>
Web Web FormsForms –– „„CodebehindCodebehind““
►►„„Codebehind“Codebehind“--TechnikTechnik erlaubt Trennung von erlaubt Trennung von HTML/XHTML HTML/XHTML
ASPX ASPX HeaderHeader
CodebehindCodebehind KlasseKlasse►►wird kompiliert wird kompiliert DLL im Unterverzeichnis /bin
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Test1.WebForm1" %>
DLL im Unterverzeichnis /bin
Web Web FormsForms –– „„CodebehindCodebehind““
►►ASPXASPX--SeiteSeite erbt Button1 von WebForm1erbt Button1 von WebForm1
public class WebForm1 : System.Web.UI.Page{
protected System.Web.UI.WebControls.Button Button1;
private void Button1_Click(object sender, System.EventArgs e){
// Code}
// anderer Code}
Web Web FormsForms -- ViewStateViewState
►► Problem: Kontext!Problem: Kontext!►► AnsatzAnsatz
ApplicationApplication--KontextKontextSessionSession--KontextKontext►► Implementiert durch Implementiert durch CookieCookie (oder falls (oder falls CookieCookie abgelehtabgeleht
wurde mit wurde mit SessionIDSessionID in URL)in URL)
ViewStateViewState--KontextKontext►►Problem:Problem:►► Implementiert durch verstecktes HTML FormularfeldImplementiert durch verstecktes HTML Formularfeld►►VerschlüsseltVerschlüsselt
Web Web FormsForms –– User ControlsUser Controls
►►Web User Web User ControlControlWie gewöhnliches Wie gewöhnliches WebFormWebFormBeim Beim RendernRendern wird kein HTML wird kein HTML HeaderHeader erzeugterzeugtz.B. für Navigationsleistez.B. für Navigationsleiste
►►CustomCustom ControlControlEigenes Server Eigenes Server ControlControlEigene EventsEigene Eventsz.B. für spezielle Buttons z.B. für spezielle Buttons
LocalizationLocalization & & GlobalizationGlobalization
►► Was ist Was ist LocalizationLocalization??Sprache der BenutzeroberflächeSprache der BenutzeroberflächeDatum & Zeit Formate, String Datum & Zeit Formate, String IndexingIndexing, …, …
►► CulturesCulturesBeispiele: ”Beispiele: ”enen--USUS”, ””, ”dede--CHCH”, ””, ”frfr--CHCH””
►► RessourcenRessourcenRessourcen (.Ressourcen (.resxresx))Sprachabhängige Ressourcen (.Sprachabhängige Ressourcen (.de.resxde.resx))Kompilierte Ressourcen (.Kompilierte Ressourcen (.dlldll, , dede--CH.dllCH.dll))FallbackFallback--PrinzipPrinzip
LocalizationLocalization & & GlobalizationGlobalization
►► Windows FormWindows FormDesignDesign--TimeTime PropertiesProperties: : LocalizableLocalizable, , LanguageLanguageWindows Windows FormsFormsResourceResource Editor Editor ((Winres.exeWinres.exe))
Mobile Mobile ProgrammingProgramming
►► Software fürSoftware fürPDAsPDAsMobiltelefoneMobiltelefone
►► .NET Framework .NET Framework Version 1.1Version 1.1
SQL Server CESQL Server CE
DeploymentDeployment
►► Auslieferung von SoftwareAuslieferung von Software►► Vor .NETVor .NET
EXEEXE--DateiDateiDLLsDLLs in Windowsin Windows\\System32 (Versionsprobleme)System32 (Versionsprobleme)ActiveXActiveX DLLsDLLs registrieren (regsvr32.exe)registrieren (regsvr32.exe)Tools wie Tools wie InstallShieldInstallShield
►► Mit .NETMit .NETEXEEXE--DateiDatei und abhängige und abhängige DLLsDLLs in ein Verzeichnis in ein Verzeichnis kopierenkopierenFür komplexere Dinge wie Webapplikationen oder Für komplexere Dinge wie Webapplikationen oder Windows Services Setups (MSIWindows Services Setups (MSI--Datei) generieren.Datei) generieren.
Tools für .NET EntwicklerTools für .NET Entwickler
►► Microsoft .NET Framework SDKMicrosoft .NET Framework SDKCommandCommand--LineLine ToolsToolsCompilerCompilerGratis [108 MB] Gratis [108 MB] http://http://www.microsoft.comwww.microsoft.com//netnet//
►► Microsoft Visual Studio .NETMicrosoft Visual Studio .NETverschiedene Editionenverschiedene Editionen
►► AlternativenAlternativenBorlandBorland Delphi 7 Studio (nur für Delphi)Delphi 7 Studio (nur für Delphi)BorlandBorland C# C# BuilderBuilder (noch nicht fertig!)(noch nicht fertig!)
FazitFazit
►► Neue Dimension von Windows ProgrammierungNeue Dimension von Windows ProgrammierungC++/MFC/COM… zu kompliziertC++/MFC/COM… zu kompliziertVisual Basic 6 nicht OOVisual Basic 6 nicht OO
►► Übergang zu .NETÜbergang zu .NETRadikale ÄnderungenRadikale ÄnderungenUnterstützung für „Unterstützung für „unsafeunsafe“ Code, Einbindung von “ Code, Einbindung von anderen Bibliotheken (z.B. COM)anderen Bibliotheken (z.B. COM)
►► Neuer KomfortNeuer Komfortelegantes Konzept für Webapplikationenelegantes Konzept für WebapplikationenWebServicesWebServices (Neues Konzept von Software)(Neues Konzept von Software)
Fertig!Fertig!
►► Fragen?Fragen?►► DiskussionDiskussion