C# mit Methode (eBook)
730 Seiten
C & L Computer- und Literaturverlag GmbH
978-3-936546-12-5 (ISBN)
Software-Entwickler, die der Roadmap von Microsoft folgen wollen, sollten die neue Programmiersprache C# lernen. Der Umstieg von anderen Sprache fällt nicht schwer - die Klassenbibliothek ähnelt der von Delphi, ihre Struktur und die Bezeichner sind denen von C/C++ und Java verwandt. Wegen der starken Komponentenorientierung ist C# ideal für alle Projekttypen geeignet.
Dieses umfassende Buch ist für den Ein- und Umsteiger geschrieben. Es erklärt das Schreiben verteilter, mehrschichtiger Anwendungen, wobei nicht allein auf Windows und die Entwicklung für .NET eingegangen wird, sondern auch in einem extra Abschnitt die Programmierung für Unix erläutert ist.
Begonnen wird der Einführung in C#: Klassen, Schnittstellen und Strukturen. Besonderheiten wie der Umgang mit Dateien, die Ereignisbehandlung, die Serialisierung und Threading sind in einem gesonderten Kapitel dokumentiert. Weil nichts ohne Bibliotheken geht, enthält das Buch auch entsprechende Anleitungen, wie man Benutzeroberflächen mit Windows Forms schreibt oder Daten aus einer Datenbank mit ADO.NET ermittelt. Die Interaktion über COMInterop mit Microsoft Office wird genauso wie der Aufruf beliebiger Funktionen aus DLLs über P/Invoke gezeigt. Natürlich kommt auch das Erstellen von Web-Applikationen nicht zu kurz, dem Leser werden wichtige Techniken wie ASP.NET und Web Services vermittelt.
Zu moderner Programmierung gehört auch die Ansprache mobiler Endgeräte wie Telefone oder PDAs. Das notwendige Wissen wird dem Leser im Buchkapitel zum .NET Compact Framework weitergegeben.
Die Themen:
* Die verschiedenen Entwicklungsumgebungen
* Die Grundlagen der Sprache
* Bibliotheken: Windows Forms, ADO.NET, ASP.NET, .NET Remoting
* Dienste über das Internet mit Web Services
* Win-API-Aufrufe mit P/Invoke
* Anwendungen für mobile Endgeräte mit dem .NET Compact Framework
* Die .NET-eigene Assemblersprache MSIL zum Schutz des geistigen Eigentums
* C#-Anwendungen installieren und verteilen
* Die Open-Source-Implementierungen des .NET Frameworks
Inhalt 6
1 Vorwort 12
2 Entwicklungsumgebungen für C# 16
2.1 VISUAL STUDIO.NET 18
2.2 BORLAND C# BUILDER 50
2.3 VISUAL C# – STANDARD 75
2.4 SHARPDEVELOP 75
2.5 ASP.NET WEB MATRIX 77
2.6 SCHLUßWORT 78
3 Einführung in die Programmiersprache C# 80
3.1 GRUNDLAGEN 81
3.1.1 Hallo Welt 81
3.1.2 Operatoren 83
3.1.3 Grundkonzepte 85
3.1.4 Programme und Assemblies 89
3.2 AUSNAHMEBEHANDLUNG (EXCEPTIONS) 92
3.2.1 Exceptions auslösen 93
3.2.2 Exceptions abfangen 94
3.2.3 Die Syntax des try-catch-finally-Blocks 97
3.2.4 Exceptions bei Überlauf 98
3.3 TYPEN, VARIABLEN PARAMETER 99
3.3.1 Wert- und Referenztypen 99
3.3.2 Variablen 101
3.3.3 Parameter 103
3.3.4 Der typeof-Operator 106
3.3.5 Primitive Typen 107
3.3.6 Zeigertypen 109
3.4 ZEICHENKETTEN (STRINGS) 111
3.4.1 String-Literale 112
3.4.2 String-Literale mit Zeilenumbruch 112
3.4.3 Optimierungen durch den Compiler 113
3.4.4 Veränderbare Strings (StringBuilder) 113
3.4.5 Zeichenketten formatieren 114
3.5 ARRAYS 115
3.5.1 Eindimensionale Arrays 115
3.5.2 Mehrdimensionale Arrays 116
3.5.3 Parameter-Arrays 118
3.6 TYPKONVERTIERUNG 121
3.6.1 Einführung 121
3.6.2 Implizite Konvertierung 122
3.6.3 Explizite Konvertierung 123
3.6.4 Der is-Operator 127
3.6.5 Der as-Operator 127
3.6.6 Boxing und Unboxing 128
3.6.7 Konvertierung von Zeigertypen 129
3.7 ANWEISUNGEN 130
3.7.1 if-Abfrage 130
3.7.2 switch-Anweisung 130
3.7.3 Die while-Schleife 132
3.7.4 Die do-while-Schleife 133
3.7.5 Die for-Schleife 133
3.7.6 Die foreach-Schleife 134
3.7.7 Schleifenablauf verändern 137
3.7.8 Die Sprunganweisung (goto) 138
3.7.9 Die using-Anweisung 139
3.7.10 Die lock-Anweisung 140
3.8 KLASSEN 141
3.8.1 Konstanten 141
3.8.2 Felder 142
3.8.3 Konstruktoren 146
3.8.4 Destruktoren 148
3.8.5 Kapselung und Sichtbarkeit 149
3.8.6 Vererbung und Versionsverwaltung 151
3.8.7 Methoden überschreiben 153
3.8.8 Operatoren überladen 157
3.8.9 Eigenschaften 160
3.8.10 Indexer 167
3.9 STRUKTUREN 168
3.9.1 Strukturen deklarieren 168
3.9.2 Besonderheiten bei der Initialisierung 169
3.10 SCHNITTSTELLEN 172
3.10.1 Zugriff auf Schnittstellen-Mitglieder 172
3.10.2 Schnittstellen implementieren 175
3.10.3 Schnittstellen-Implementierung und Vererbung 178
3.10.4 Schnittstellen erneut implementieren 179
3.10.5 Abstrakte Klassen und Schnittstellen 181
3.11 AUFZÄHLUNGEN 181
3.11.1 Aufzählungstypen deklarieren 181
3.11.2 Implizite und explizite Numerierung 183
3.12 DELEGATEN EREIGNISSE 185
3.12.1 Delegaten deklarieren und instanziieren 185
3.12.2 Multicast-Delegaten 187
3.12.3 Feld-ähnliche Ereignisse 190
3.12.4 Ereigniseigenschaften 192
3.13 NAMESPACES 195
3.13.1 Namespaces deklarieren 195
3.13.2 Namespaces importieren 196
3.13.3 Aliase 199
3.14 PRÄPROZESSOR-DIREKTIVEN 200
3.14.1 Bedingungsdirektiven 200
3.14.2 Weitere Präprozessor-Direktiven 201
3.15 ATTRIBUTE 202
3.15.1 Attribute verwenden 203
3.15.2 Das Conditional-Attribut 205
3.15.3 Das Obsolete-Attribut 206
3.15.4 Das DllImport-Attribut 207
3.15.5 Benutzerdefinierte Attribute 207
3.15.6 Attribute auslesen (Reflektion) 210
3.16 DOKUMENTATIONSKOMMENTARE 211
3.16.1 Einführung 211
3.16.2 Empfohlene XML-Elemente 213
3.17 ZUSAMMENFASSUNG 216
4 Bibliotheken 218
4.1 WINDOWS FORMS 219
4.1.1 Methoden und Eigenschaften eines Formulars 220
4.1.2 Die Entwicklung mit Windows Forms 224
4.1.3 Sicherheit mit Windows Forms 246
4.1.4 Weitere Komponenten von Windows Forms… 250
4.2 ADO.NET – DATENBANKSCHNITTSTELLE 254
4.2.1 Das DataSet 255
4.2.2 … und die DataTable 257
4.2.3 Die manuelle Erstellung und Verwendung einer DataTable 257
4.2.4 Constraints 262
4.2.5 Das DataView 264
4.2.6 Der .NET-DataProvider 266
4.2.7 Unabhängigkeit (von Datenbanken) durch Interfaces 278
4.2.8 Transaktionen 283
4.2.9 Typisierte DataSets 284
4.2.10 Stored Procedures mit ADO.NET 287
4.2.11 Fazit 291
4.3 WEB SERVICES 291
4.3.1 Verwandte Technologien 292
4.3.2 SOAP, XML und Web Services 293
4.3.3 Ein erstes Beispiel 294
4.3.4 Die Protokolle HTTP-GET, HTTP-POST 299
4.3.5 Web Service via IDE 301
4.3.6 UDDI-Wegweiser durch den Web-Service-Dschungel 305
4.3.7 Dynamisches Einbinden der Web-Service-URL 306
4.3.8 Asynchroner Aufruf eines Web Service 307
4.3.9 Der Status eines Web Service 310
4.3.10 Web Services und Transaktionen 312
4.3.11 Die Web Services Enhancements 1.0 315
4.4 COMINTEROP AUTOMATISIERUNG MS OFFICE 318
4.4.1 Das erste Beispiel: C# ruft COM 320
4.4.2 Das zweite Beispiel: Excel ruft C# 322
4.4.3 Word per Fernsteuerung 324
4.4.4 Serienbriefe mit C# und MailMerge 329
4.4.5 Excel per Fernsteuerung 332
4.4.6 Outlook per Fernsteuerung 335
4.4.7 Der Internet Explorer als Steuerelement 339
4.4.8 Fazit 340
4.5 .NET-REMOTING 341
4.5.1 Die Struktur von .NET-Remoting 341
4.5.2 Proxy und SoapSuds 345
4.5.3 Dynamische Konfiguration durch XML 347
4.5.4 SAOs und CAOs 351
4.5.5 CAO (Client Activated Objects) 359
4.5.6 Transportable Objekte 363
4.5.7 Internet Information Service als Host 369
4.5.8 TCP-Channel und Binary-Formatierer 371
4.5.9 Fazit 372
4.6 ASP.NET 372
4.6.1 Die Struktur 373
4.6.2 Codebehind, der Code dahinter 376
4.6.3 ASP.NET-Anwendungen 378
4.6.4 ASP.NET-Anwendungen entwickeln mit einer IDE 388
4.6.5 Sicherheit in ASP.NET-Anwendungen 404
4.6.6 Vorlagen mit ASP.NET 415
4.6.7 Upload von Dateien mit ASP.NET 419
4.6.8 Fazit 420
5 Das .NET Compact Framework 422
5.1 DAS .NET COMPACT FRAMEWORK DETAIL 424
5.2 DER ENTWICKLUNGSPROZEß ANWENDUNG 426
5.2.1 Die Projekttypen in Visual Studio.NET 427
5.2.2 »Hallo Welt« – die erste Compact-Framework-Anwendung 429
5.2.3 Erweiterungen in Visual Studio.NET, der CF-ToolBar 431
5.2.4 Testen mit dem Emulator 431
5.2.5 Deployment auf einen Pocket PC 433
5.2.6 Die zur Verfügung stehenden Komponenten 434
5.2.7 Der Einsatz von Steuerelementen 437
5.3 DATENZUGRIFF MS SQL SERVER 439
5.3.1 Der Namespace System.Data.SqlClient 439
5.3.2 Das InputPanel-Steuerelement 447
5.3.3 Der SQLCE Server 2.0 448
5.4 DEPLOYMENT 453
5.5 KOMMUNIKATION WEB SERVICE 458
5.6 EIGENE STEUERELEMENTE 461
5.7 POCKET PC 464
5.7.1 Fazit 465
6 Techniken in C# 466
6.1 KOMPONENTEN C# 467
6.1.1 Die erste Komponente 468
6.1.2 Konfiguration der Komponente im Designer 471
6.1.3 Entwurfszeitattribute 473
6.1.4 Eine Komponente, mehreren Klassen und Namespaces 475
6.1.5 Ableitung von Steuerelementen 476
6.1.6 Das UserControl 480
6.1.7 Fazit 483
6.2 EVENTS 483
6.2.1 Events auslösen 489
6.3 MULTITHREADING 491
6.3.1 Warum Threads? 491
6.3.2 Threads und Application Domains 493
6.3.3 Threads erzeugen 494
6.3.4 Thread-Status verändern 494
6.3.5 Threads abbrechen 495
6.3.6 Datenaustausch mit Threads 498
6.3.7 Lokaler Thread-Speicher 500
6.3.8 Synchronisation mit lock 503
6.3.9 Auf eine Bedingung warten 510
6.3.10 Synchronisation hausgemacht 516
6.3.11 Typische Synchronisationsprobleme 518
6.3.12 Synchronisation im Komplettpaket 520
6.3.13 Prozeß-übergreifende Synchronisation 521
6.3.14 Ereignis-basierte Synchronisation 522
6.3.15 Synchronisation mit Windows Forms 525
6.3.16 Der Thread-Pool 528
6.4 SERIALISIERUNG OBJEKTEN 532
6.4.1 Standard-Serialisierungsformate des .NET-Framework 533
6.4.2 Zugriffsmodifizierer in der Serialisierung 534
6.4.3 Die Schlüsselwörter Serializable und NonSerialized 534
6.4.4 Serialisierung in der praktischen Anwendung 535
6.4.5 Das Interface ISerializable 545
6.5 DATEIVERARBEITUNG 550
6.5.1 Auf Dateiinhalte zugreifen 552
6.5.2 Verwendung der Streamklassen 555
6.5.3 Isolierte Speicherung 566
6.6 DELEGATEN 568
6.6.1 Der sinnvolle Einsatz von Delegaten 569
7 C# und der Rest der Welt 574
7.1 VON JAVA C# 578
7.1.1 C#-Einführung für Java-Programmierer 578
7.1.2 Konvertierung von Java-Programmen nach .NET 601
7.2 C++ C# 611
7.2.1 Grundsätzliches 611
7.2.2 Syntaktische Änderungen 612
7.2.3 Typsystem 612
7.2.4 Was es nicht mehr gibt 615
7.3 MISCHEN C# NICHT-C# 616
7.3.1 Das allgemeine Typsystem 621
7.3.2 Mischen von C# und VB.NET 623
7.3.3 VB.NET ruft C# ruft J# 626
7.3.4 Sprachübergreifendes Debugging 630
7.3.5 Mehr als eine Sprache in einem Assembly? 632
7.4 C# WINDOWS 635
7.4.1 Windows-Version ermitteln 637
8 MSIL/CIL, die .NET-Assemblersprache 646
8.1 TOOLS 647
8.2 ÜBERBLICK MSIL 648
8.3 DER STACK 654
8.4 VERWENDEN DER KLASSENBIBLIOTHEK 655
8.4.1 Arithmetik 658
8.4.2 Exceptions 658
8.4.3 Logik und Vergleiche 660
8.4.4 Rückgabe von Werten 661
8.5 DECOMPILER 662
8.6 OBFUSCATION (VERSCHLEIERUNG) 664
9 Anwendungen verteilen und installieren 666
9.1 VERTEILUNG EINER ANWENDUNG ÜBER XCOPY 667
9.1.1 GAC, StrongName & Co.
9.2 CAB-DATEIEN 671
9.3 DIE INSTALLER-KLASSE 672
9.4 SETUP-PROJEKTE 674
9.4.1 Windows-Setup-Projekt 674
9.4.2 Web-Setup-Projekt 678
9.4.3 Merge-Modul-Projekt 679
9.5 NO-TOUCH DEPLOYMENT 679
9.6 DEPLOYMENT .NET FRAMEWORKS 681
9.6.1 Die Bootstrapper-Option 682
9.6.2 Die Installation des Frameworks 683
10 C# auf Unix und Mac 686
10.1 ÜBERBLICK ÜBER DIE CLIS 688
10.1.1 SSCLI 688
10.1.2 Mono 689
10.1.3 Portable.NET 690
10.3.1 Klassenbibliothek – das Dateisystem 693
10.3.2 Native Calls 695
10.4.2 Windows.Forms auf den unterschiedlichen Systemen 709
11 Befehlszeilentools 712
11.1 DER C# COMPILER (CSC.EXE) 713
11.2 DER IL ASSEMBLER (ILASM.EXE) 717
11.3 IL DISASSEMBLER (ILDASM.EXE) 718
Stichwortverzeichnis 722
KAPITEL 8: MSIL/CIL, DIE .NET-ASSEMBLER-SPRACHE (S. 644-645)
von Michael Steil
o Tools
o Überblick über MSIL
o Der Stack
o Verwenden der Klassenbibliothek
o Decompiler
o Obfuscation (Verschleierung)
C#-Programme werden nie direkt in die Assemblersprache der Maschine, also x86 oder PowerPC und so weiter übersetzt, sondern zunächst immer in die Zwischensprache MSIL (Microsoft Intermediate Language, auch CIL, Common Intermediate Language). Erst zur Laufzeit wird der Zwischencode dann wie auch bei Java in die jeweilige Assemblersprache der Maschine gewandelt. MSIL ist also in gewisser Weise die Assemblersprache des .NET-Systems.
Sie fragen sich nun vielleicht, wieso es heute noch wichtig sein sollte, eine Assemblersprache zu können. Haben Sie in den letzten fünf Jahren einmal Assembler programmieren müssen? Wahrscheinlich nicht. Sofern Sie über (grundlegende) x86-Assemblerkenntnisse (oder welche auch immer) verfügen: Haben Ihnen diese bei der C/C++-Entwicklung genützt? Gut möglich. Kenntnisse in Assembler helfen bei der Abschätzung des Aufwands einer Operation, beim Debugging, sowie beim Reverse-Engineering. Und vergessen Sie nicht, daß man allein durch gutes Reverse Engineering auch abschätzen kann, wie aufwendig es für Ihre Konkurrenz sein wird, Ihre Algorithmen zu verstehen oder anders gesagt: wie offen die Algorithmen in Ihrem Produkt liegen.
In .NET gibt man nämlich sehr viel mehr von seinen Implementierungsdetails preis, als wenn man nach einer echten Assemblersprache wie x86 kompiliert. Das Dekompilieren und Verstehen des Codes ist um ein Vielfaches einfacher und mit den richtigen Tools sogar trivial. Mit Hilfe des Wissens über die Funktionsweise von MSIL sollen Sie daher in diesem Kapitel ein Gespür für all dies bekommen.
8.1 TOOLS
Das .NET Framework enthält bereits alle Werkzeuge, die benötigt werden, um mit MSIL zu arbeiten, nämlich einen Assembler (ilasm.exe) und einen Disassembler (ildasm.exe), der neben dem Batch- und Befehlszeilenbetrieb auch das grafische Erforschen von Assemblies ermöglicht. Assembler und Disassembler sind dabei zudem so aufeinander abgestimmt, daß es möglich ist, Assemblies zu disassemblieren, die Assemblerdatei zu editieren und die Datei wieder zu assemblieren (Roundtrip).
Der Aufruf beider Tools ist naheliegend. In den allermeisten Fällen genügt es, den Assembler (ilasm.exe) einfach mit dem Namen der Assemblerquelltext- Datei aufzurufen. Der Disassembler (ildasm.exe) startet ohne die Angabe von Parametern im grafischen Modus, in dem man interaktiv mit der Anwendung arbeiten kann. Die Hilfe erhält man, wenn man ihn mit ildasm /? aufruft. Um eine Assembly direkt zu disassemblieren, gibt man also den Namen der Assembly und über die Option /out= den Namen der zu erstellenden Assemblerdatei an. Über Optionen wie /bytes, /tokens und /linenum lassen sich noch weitere Informationen aus der Assembly als Kommentare dem Assemblerquelltext hinzufügen.
| Erscheint lt. Verlag | 1.1.2004 |
|---|---|
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik |
| ISBN-10 | 3-936546-12-6 / 3936546126 |
| ISBN-13 | 978-3-936546-12-5 / 9783936546125 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
Größe: 13,7 MB
Kopierschutz: Adobe-DRM
Adobe-DRM ist ein Kopierschutz, der das eBook vor Mißbrauch schützen soll. Dabei wird das eBook bereits beim Download auf Ihre persönliche Adobe-ID autorisiert. Lesen können Sie das eBook dann nur auf den Geräten, welche ebenfalls auf Ihre Adobe-ID registriert sind.
Details zum Adobe-DRM
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen eine
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen eine
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich