lehrerbibliothek.deDatenschutzerklärung
Microsoft Visual C#.NET  Hunderte von Lösungen und Codebeispielen aus der Praxis
Microsoft Visual C#.NET


Hunderte von Lösungen und Codebeispielen aus der Praxis

Allen Jones

Microsoft Press
EAN: 9783860630914 (ISBN: 3-86063-091-1)
552 Seiten, paperback, 18 x 24cm, Oktober, 2004

EUR 49,90
alle Angaben ohne Gewähr

Umschlagtext
Visual C# .NET Programmier-Rezepte





Das nächste Mal, wenn Sie auf ein Problem in Ihrem C#-Code stoßen, das schwierig zu lösen scheint, werfen Sie doch einen Blick in dieses Buch. Hier finden Sie Lösungen und erprobte Techniken zum Schreiben effizienten Codes in C#. Microsoft Visual Ctt.NET Programmier-Rezepte ist Ihre Quelle für Hunderte von C#- und .NET Framework-Szenarien, die mit Hilfe eines konsistenten Problem/Lösungs-Ansatzes erläutert und gelöst werden. Der logische Aufbau des Buchs erlaubt Ihnen, schnell zu den Themen zu gelangen, die Sie interessieren. Hier finden Sie praktische Beispiele, Code-Schnipsel, Lösungen und undokumentierte Vorgehensweisen, die Ihnen helfen, Ihre Arbeit schnell und gut zu erledigen.





Hunderte von Rezepten, u.a. zu folgenden Themen:



• Windows- und Web Forms-Anwendungen, Web- und Windows-Dienste

• Expertentipps zur Lösung häufiger Probleme bei der Programmierung von Web- und Netzwerk-Anwendungen

• Dateien, Ordner und Streams mit den .NET I/O-Klassen verwalten

• Datenbankzugriff mit MicrosoftADO.NET

• Fortgeschrittene Techniken für Multithreading, XML, .NET Remoting und Verwendung von Pattern

• Multimedia-Anwendungsentwicklung mit dem .NET-Framework

• Sichere Anwendungen mit Codezugriffs-Sicherheit, rollenbasierter Sicherheit und Kryptographie

• Interoperabilität mit der Win32 API und COM-basierten Lösungen





Der Autor:



Allen Jones ist der Autor von C# for Java Developers, Microsoft .NET XML Webdienste - Schritt für Schritt und Programming .NET Security. Seit 13 Jahren in der IT-Industrie tätig, ist er bekannt für seine umfassenden C#-und .NET-Kenntnisse. Er hat sich auf die Entwicklung von E-Commerce- und Sicherheits-Systemen spezialisiert.
Rezension
Durch die logisch gut durchdachten Beispielskripte werden für viele standardisierte Probleme, einfache Lösungswege aufgezeigt. Selbst wenn ein Beispiel einmal nicht das gesamte Problem lösen kann, so zeigen andere Skripte Lösungsansätze auf. Die Beispielanwendungen beziehen sich auf eine große Palette von Anforderungen, z.B. Zeichenketten, XML, Netzwerk, Datenbanken etc. Da sich viele Themen mit einander kombinieren lassen, deckt dieses Buch eine große Bandbreite von Anforderungen ab. Der Schreibstil ist sachlich und gut verständlich, was das lesen auch für Anfänger erleichtert. Sowohl Anfänger als auch Fortgeschrittene werden sich in diesem Buch gut zurechtfinden.

Ronny Grudzinski, lehrerbibliothek.de
Inhaltsverzeichnis
Einführung XIII

Systemanforderungen XIV
Andere Literatur XV
Korrekturen und Kommentare XV


1 Anwendungsentwicklung 1

1 1 Erstellen einer Konsolenanwendung 2
1 2 Erstellen einer Windows-Anwendung 4
1 3 Erstellen und Verwenden eines Codemoduls 7
1 4 Erstellen und Verwenden einer Codebibliothek 9
1 5 Zugriff auf Befehlszeilenargumente 10
1 6 Selektives Einbinden von Code zur Buildzeit 12
1 7 Auf ein Programmelement zugreifen, das denselben Namen wie ein Schlüsselwort besitzt 15
1 8 Erstellung und Verwaltung von stark benannten Schlüsselpaaren 16
1 9 Starke Benennung einer Assembly 18
1 10 Sicherstellen, dass eine stark benannte Assembly nicht verändert wurde 19
1 11 Verzögertes Signieren einer Assembly 20
1 12 Signierung einer Assembly mit einer digitalen Authenticode-Signatur 22
1 13 Erstellung eines Softwarepublisher-Testzertifikats 25
1 14 Verwaltung des globalen Assemblycache 26
1 15 Verhinderung der Dekompilierung Ihres Codes 27


2 Arbeiten mit Daten 29

2 1 Den Inhalt einer Zeichenfolge effektiv bearbeiten 30
2 2 Zeichenfolgen mithilfe alternativer Zeichenkodierungen kodieren 31
2 3 Konvertierung von grundlegenden Werttypen in Byte-Arrays 34
2 4 Kodieren binärer Daten als Text 36
2 5 Eingabeüberprüfung mithilfe regulärer Ausdrücke 38
2 6 Kompilierte reguläre Ausdrücke verwenden 41
2 7 Datums- und Zeitwerte aus Zeichenfolgen erstellen 43
2 8 Zeiten und Daten addieren, subtrahieren und vergleichen 44
2 9 Sortieren eines Arrays oder einer ArrayList 46
2 10 Kopieren einer Auflistung in ein Array 47
2 11 Erstellen einer stark typisierten Auflistung 48
2 12 Speichern eines serialisierbaren Objekts in einer Datei 49


3 Anwendungsdomänen, Reflektion und Metadaten 53

3 1 Erstellung einer Anwendungsdomäne 54
3 2 Weitergabe von Objekten über die Grenzen von Anwendungsdomänen hinaus 55
3 3 Verhindern, dass nicht benötigte Assemblies in die Anwendungsdomänen geladen werden 57
3 4 Erstellen eines Typs, der Grenzen von Anwendungsdomänen nicht passieren kann 58
3 5 Laden einer Assembly in die aktuelle Anwendungsdomäne 58
3 6 Ausführen einer Assembly in einer anderen Anwendungsdomäne 61
3 7 Instanzieren eines Typs in einer fremden Anwendungsdomäne 62
3 8 Daten zwischen Anwendungsdomänen austauschen 66
3 9 Assemblies und Anwendungsdomänen aus dem Speicher entfernen (entladen) 67
3 10 Abfragen von Typinformationen 68
3 11 Überprüfen eines Objekttyps 70
3 12 Ein Objekt mithilfe von Reflektion instanzieren 72
3 13 Erstellen eines benutzerdefinierten Attributs 74
3 14 Die Attribute eines Programmelements mithilfe von Reflektion überprüfen 76


4 Threads, Prozesse und Synchronisierung 79

4 1 Ausfuhren einer Methode unter Verwendung des Thread-Pools 80
4 2 Eine Methode asynchron ausführen 83
4 3 Eine Methode unter Verwendung eines Timers ausführen 89
4 4 Ausführung einer Methode durch den Zustandswechsel eines WaitHandle-Objektes 93
4 5 Eine Methode unter Verwendung eines neuen Threads ausführen 95
4 6 Die Ausführung eines Threads steuern 97
4 7 Ermitteln, ob ein Thread schon beendet wurde 100
4 8 Die Ausführung von mehreren Threads synchronisieren 102
4 9 Eine thread-sichere Auflistungsinstanz erstellen 107
4 10 Starten eines neuen Prozesses 108
4 11 Einen Prozess beenden 110
4 12 Sicherstellen, dass nur eine Instanz einer Anwendung gestartet werden kann 113


5 XML 115

5 1 Anzeigen der Struktur eines XML-Dokuments in einem TreeView-Steuerelement 116
5 2 Strukturknoten in ein XML-Dokument einfügen 120
5 3 Auf schnelle Weise Strukturknoten an ein XML-Dokument anfügen 122
5 4 Bestimmte Elemente durch ihren Namen finden 124
5 5 XML-Knoten in einem bestimmten XML-Namespace finden 125
5 6 Elemente mit einer XPath-Suche finden 127
5 7 XML lesen und schreiben, ohne ein gesamtes XML-Dokument in den
Speicher zu laden 129
5 8 Ein XML-Dokument anhand eines Schemas überprüfen 132
5 9 XML-Serialisierung für benutzerdefinierte Objekte verwenden 138
5 10 Ein Schema für eine NET-Klasse erstellen 141
5 11 Eine Klasse aus einem Schema generieren 142
5 12 Eine XSL-Transformation durchführen 142


6 Windows Forms 147

6 1 Ein Steuerelement programmtechnisch zum Formular hinzufügen 148
6 2 Daten in einem Steuerelement speichern 150
6 3 Verarbeiten aller Steuerelemente eines Formulars 152
6 4 Die sichtbaren Formulare einer Anwendung finden 153
6 5 Alle untergeordneten MDI-Formulare ermitteln 154
6 6 Größe und Position eines Formulars speichern 156
6 7 Ein ListBox-Steuerelement programmtechnisch scrollen 158
6 8 Eine TextBox auf numerische Eingaben beschränken 159
6 9 Ein ComboBox-Steuerelement mit automatischer Vervollständigung verwenden 160
6 10 Ein ListView-Steuerelement nach einer beliebigen Spalte sortieren 163
6 11 Ein Kontextmenü mit einem Steuerelement verbinden 165
6 12 Teile eines Hauptmenüs für ein Kontextmenü verwenden 166
6 13 Erstellen eines mehrsprachigen Formulars 168
6 14 Ein unbewegliches Formular erstellen 171
6 15 Ein rahmenloses Formular bewegbar machen 172
6 16 Ein animiertes Symbol für den Systembereich der Taskleiste erstellen 174
6 17 Den Benutzer auf eine falsche Eingabe in einem Steuerelement hinweisen 175
6 18 Verwenden von Drag & Drop 177
6 19 Kontextsensitive Hilfe verwenden 179
6 20 Den Windows-XP-Stil verwenden 181


7 ASP.NET und Webformulare 183

7 1 Einen Benutzer zu einer anderen Seite umleiten 185
7 2 Informationen zwischen den Anforderungen speichern 186
7 3 Statusbehaftete Membervariablen erstellen 190
7 4 Mit JavaScript auf clientseitige Ereignisse reagieren 191
7 5 Ein Popup-Fenster mit JavaScript erstellen 194
7 6 Steuerelemente programmgesteuert fokussieren 195
7 7 Eine Datei hochladen 196
7 8 Die IIS-Authentifizierung verwenden 199
7 9 Die Formularauthentifizierung verwenden 204
7 10 Eine gezielte Eingabegültigkeitsüberprüfung durchführen 206
7 11 Einem Webformular Steuerelemente dynamisch hinzufügen 208
7 12 Bilder dynamisch erstellen 212
7 13 Benutzersteuerelemente programmgesteuert laden 216
7 14 Seiten oder Fragmente im Cache speichern 219
7 15 Daten mithilfe des ASP NET-Cache wieder verwenden 221
7 16 Das Website-Debugging aktivieren 224
7 17 Die Berechtigungen des ASP NET-Codes ändern 227


8 Grafiken, Multimedia und Drucken 231

8 1 Alle installierten Fonts ermitteln 232
8 2 Treffererkennung bei grafischen Figuren 234
8 3 Ein unregelmäßig geformtes Steuerelement erstellen 237
8 4 Ein bewegliches Sprite erstellen 239
8 5 Ein Bild erstellen, durch dessen Inhalt geblättert werden kann 242
8 6 Erfassen des Bildschirminhalts 244
8 7 Double-Buffering zum Steigern der Geschwindigkeit beim Neuzeichnen einsetzen 246
8 8 Die Miniaturansicht eines Bildes anzeigen 249
8 9 Ein einfaches akustisches Signal ausgeben 250
8 10 Eine WAV- oder MP3-Datei abspielen 251
8 11 Eine Animation mit DirectShow anzeigen 253
8 12 Alle vorhandenen Drucker ermitteln 256
8 13 Ein einfaches Dokument ausdrucken 258
8 14 Ein mehrseitiges Dokument drucken 261
8 15 Umbrochenen Text drucken 264
8 16 Eine dynamische Seitenvorschau anzeigen 265
8 17 Druckaufträge verwalten 268


9 Dateien, Verzeichnisse und E/A 273

9 1 Informationen über eine Datei abrufen 274
9 2 Datei- und Verzeichnisattribute setzen 277
9 3 Dateien und Verzeichnisse kopieren, verschieben oder löschen 279
9 4 Die Größe eines Verzeichnisses ermitteln 281
9 5 Dateiversionsinformationen abrufen 282
9 6 Ein TreeView-Steuerelement Just-in-Time mit einem Verzeichnisbaum füllen 284
9 7 Eine Textdatei lesen oder schreiben 286
9 8 Eine Binärdatei lesen oder schreiben 288
9 9 Eine Datei asynchron einlesen 289
9 10 Dateien mit Platzhalterzeichen filtern 292
9 11 Zwei Dateien miteinander vergleichen 293
9 12 Strings verarbeiten, die Dateinamen repräsentieren 295
9 13 Ermitteln, ob ein Pfad ein Verzeichnis oder eine Datei ist 296
9 14 Mit relativen Pfaden arbeiten 297
9 15 Eine temporäre Datei erstellen 299
9 16 Die gesamte freie Kapazität eines Laufwerks ermitteln 300
9 17 Standarddialogfelder für Dateioperationen anzeigen 301
9 18 Einen isolierten Speicher verwenden 304
9 19 Änderungen im Dateisystem überwachen 306
9 20 Auf einen COM-Anschluss zugreifen 308


10 Datenbanken 311

10 1 Eine Verbindung zu einer Datenbanken herstellen 312
10 2 Das Verbindungs-Pooling nutzen 315
10 3 Eine SQL-Anweisung oder eine gespeicherte Prozedur ausführen 317
10 4 Parameter in einer SQL-Anweisung oder gespeicherten Prozedur verwenden 320
10 5 Die Ergebnisse einer SQL-Abfrage mit einem Datenleser verarbeiten 323
10 6 Ein XML-Dokument mit einer SQL Server-Abfrage abrufen 326
10 7 Alle Instanzen von SQL Server 2000 in Ihrem Netzwerk ermitteln 329


11 Netzwerk und Internet 331

11 1 Eine Datei über HTTP herunterladen 332
11 2 Eine Datei herunterladen und mit einem Stream verarbeiten 333
11 3 Eine HTML-Seite von einer Site abrufen, die eine Authentifizierung verlangt 335
11 4 Eine Webseite in einer Windows-Anwendung anzeigen 337
11 5 Die IP-Adresse des aktuellen Computers ermitteln 339
11 6 Eine IP-Adresse anhand des Host-Namens ermitteln 340
11 7 Ein Ping-Signal an eine IP-Adresse senden 341
11 8 Kommunizieren mit TCP 344
11 9 Die IP-Adresse eines Clients über eine Socket-Verbindung abrufen 348
11 10 Socket-Optionen setzen 350
11 11 Einen Multithreading-TCP-Netzwerkserver erstellen 352
11 12 TCP asynchron verwenden 354
11 13 Über UDP kommunizieren 357
11 14 Eine Email über SMTP versenden 360
11 15 Emails mit MAPI senden und empfangen 361


12 XML-Webdienste und Remoting 363

12 1 Vermeiden des Hart-Codierens eines Webdienst-URLs 364
12 2 Antwort-Caching verwenden 366
12 3 Daten-Caching verwenden 367
12 4 Eine transaktionale Webmethode erstellen 369
12 5 Authentifizierungsinformationen für einen Webdienst einrichten 372
12 6 Eine Webmethode asynchron aufrufen 373
12 7 Remote-fähige Objekte erstellen 375
12 8 Alle remote-fähigen Klassen einer Assembly registrieren 380
12 9 Ein remote-fähiges Objekt mit den IIS hosten 382
12 10 Ein Ereignis über einen Remoting-Kanal auslösen 384
12 11 Den Lebenszyklus eines Remote-Objektes steuern 388
12 12 Versionskontrolle für Remote-Objekte 390
12 13 Eine eindirektionale Methode mit XML-Webdiensten oder dem Remoting erstellen 391


13 Laufzeltsicherheit 395

13 1 Ein teilweise vertrauenswürdiger Code, der Ihre stark benannten Assemblies verwendet 397
13 2 Die Codezugriffssicherheit deaktivieren 399
13 3 Ausführungsberechtigungsüberprüfungen deaktivieren 400
13 4 Sicherstellen, dass die Laufzeit Ihrer Assembly bestimmte Rechte gewährt 402
13 5 Die Berechtigungen einschränken, die Ihrer Assembly gewährt werden 404
13 6 Die Berechtigungsanforderungen einer Assembly einsehen 406
13 7 Zur Laufzeit ermitteln, ob Ihr Code über eine bestimmte Berechtigung verfügt 407
13 8 Die Benutzer begrenzen, die Ihre Klassen erweitern und Klassenmember überschreiben dürfen 409
13 9 Den Beweis einer Assembly untersuchen 411
13 10 Beweise während des Ladens einer Assembly manipulieren 412
13 11 Die Laufzeitsicherheit mit Anwendungsdomänenbeweisen manipulieren 414
13 12 Die Laufzeitsicherheit mit der Sicherheitsrichtlinie der Anwendungsdomäne manipulieren 417
13 13 Ermitteln, ob der aktuelle Benutzer das Mitglied einer bestimmten Windows-Benutzergruppe ist 420
13 14 Die Benutzer bestimmen, die Ihren Code ausführen dürfen 423
13 15 Die Identität eines Windows-Benutzers annehmen 427


14 Kryptographie 431

14 1 Eine kryptographische Zufallszahl erstellen 432
14 2 Den Hashcode eines Kennwortes berechnen 434
14 3 Den Hashcode einer Datei berechnen 436
14 4 Einen Hashcode überprüfen 438
14 5 Die Datenintegrität mit einem verschlüsselten Hashcode gewährleisten 440
14 6 Eine Datei mit der symmetrischen Verschlüsselung schützen 442
14 7 Einen symmetrischen Verschlüsselungsschlüssel aus einem Kennwort ableiten 447
14 8 Geheime Informationen sicher mit der asymmetrischen Verschlüsselung versenden 449
14 9 Einen asymmetrischen Verschlüsselungsschlüssel sicher speichern 454
14 10 Symmetrische Sitzungsschlüssel sicher austauschen 456


15 Interoperabilltät mit nicht verwaltetem Code 461

15 1 Eine Funktion in einer nicht verwalteten DLL aufrufen 462
15 2 Das Handle eines Steuerelements, Fensters oder einer Datei abrufen 465
15 3 Eine nicht verwaltete Funktion aufrufen, die eine Struktur verwendet 466
15 4 Eine nicht verwaltete Funktion aufrufen, die einen Rückruf verwendet 469
15 5 Nicht verwaltete Fehlerinformationen abrufen 470
15 6 Eine COM-Komponente in einem NET-Client verwenden 472
15 7 Eine COM-Komponente schnell freigeben 474
15 8 Optionale Parameter verwenden 474
15 9 Ein ActiveX-Steuerelement in einem NET-Client verwenden 476
15 10 Eine NET-Komponente über COM zur Verfügung stellen 477


16 Oft benötigte Schnittstellen und Schemata 479

16 1 Einen serialisierbaren Typ implementieren 480
16 2 Einen klonbaren Typ implementieren 485
16 3 Einen Typ implementieren, der mit anderen Typen verglichen werden kann 487
16 4 Einen Typ implementieren, dessen Inhalte sequenziell verarbeitet werden können 492
16 5 Eine Klasse implementieren, die ihre Ressourcen aus dem Speicher entfernt 497
16 6 Einen formatierbaren Typ implementieren 500
16 7 Eine Klasse für eine benutzerdefinierte Ausnahme implementieren 503
16 8 Ein benutzerdefiniertes Ereignisargument implementieren 507
16 9 Das Singleton-Schema implementieren 508
16 10 Das Observer-Schema implementieren 509


17 Windows-Integration 515

17 1 Auf Laufzeitumgebungsinformationen zugreifen 516
17 2 Den Wert einer Umgebungsvariablen abrufen 519
17 3 Ein Ereignis in das Windows-Ereignisprotokoll schreiben 520
17 4 Auf die Windows-Registrierung zugreifen 521
17 5 Einen Windows-Dienst erstellen 525
17 6 Einen Windows-Dienst-Installer erstellen 529
17 7 Eine Verknüpfung auf dem Desktop oder im Startmenü erstellen 531


Stichwortverzeichnis 535