| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
| |
Combining MFC and Managed Extensions | |
| |
| |
Introduction | |
| |
| |
Writing a Managed Extensions Application | |
| |
| |
Writing an MFC Application That Accesses .NET | |
| |
| |
Mixed-Mode Programming Issues | |
| |
| |
Avoiding Inadvertent #define Side Effects | |
| |
| |
Allocating Reference Objects in MFC Debug Builds | |
| |
| |
Using String Literals and Converting Strings | |
| |
| |
Working with .NET Types | |
| |
| |
Defining and Using Managed Types | |
| |
| |
Boxing and Unboxing | |
| |
| |
Managed and Unmanaged Pointers | |
| |
| |
Managed Arrays | |
| |
| |
Destructors | |
| |
| |
Summary | |
| |
| |
| |
Regular Expressions | |
| |
| |
Introduction | |
| |
| |
Using the Regex Class to Split Strings | |
| |
| |
Splitting a String | |
| |
| |
Searching Strings with the Match and MatchCollection Classes | |
| |
| |
Processing Groups and Captures | |
| |
| |
Named Captures | |
| |
| |
Noncapturing Groups | |
| |
| |
Working with Captures | |
| |
| |
Parsing and Replacing Strings | |
| |
| |
Replacing Matches Using Groups and Substitution Patterns | |
| |
| |
Putting It All Together: Writing an E-mail Parser | |
| |
| |
Retrieving E-mails from Text | |
| |
| |
Doing Domain Counts | |
| |
| |
Demo Application to Parse for E-mail Information | |
| |
| |
A More Advanced E-mail Regular Expression | |
| |
| |
Summary | |
| |
| |
| |
File I/O and Registry | |
| |
| |
Introduction | |
| |
| |
Stream, Readers, and Writers in .NET | |
| |
| |
Using the FileStream Class | |
| |
| |
Using the MemoryStream and BufferedStream Classes | |
| |
| |
Text File Processing with StreamReader and StreamWriter | |
| |
| |
String Processing with the StringWriter and StringReader | |
| |
| |
Using the BinaryWriter and BinaryReader Classes | |
| |
| |
File System Classes | |
| |
| |
Acquiring File Information | |
| |
| |
Enumerating Files and Directories | |
| |
| |
Searching for Files | |
| |
| |
Sampling Some Typical File Operations | |
| |
| |
Monitoring Directories and Files for Changes | |
| |
| |
Parsing Paths | |
| |
| |
Accessing the Registry | |
| |
| |
Enumerating Registry Subkeys | |
| |
| |
Enumerating Values | |
| |
| |
Creating New Registry Keys and Values | |
| |
| |
Summary | |
| |
| |
| |
Cryptography, Hash Codes, and Data Encryption | |
| |
| |
Introduction | |
| |
| |
Cryptography Basics | |
| |
| |
Symmetric Key Encryption | |
| |
| |
Asymmetric Key Encryption | |
| |
| |
Hash Codes | |
| |
| |
Data Signing | |
| |
| |
Using Hash Codes | |
| |
| |
Create Hash Code Demo | |
| |
| |
Text String Comparer Demo | |
| |
| |
Using Symmetric (Private) Key Encryption | |
| |
| |
Private Key Encrypting/Decrypting Demo Using DES | |
| |
| |
Using Asymmetric (Public) Key Encryption | |
| |
| |
Writing a Class to Encrypt and Decrypt Data Using RSA | |
| |
| |
Public Key Encrypting/Decrypting Demo Using RSA | |
| |
| |
Combining Symmetric Encryption, Asymmetric Encryption, and Hash Codes | |
| |
| |
Using Digital Signatures | |
| |
| |
Signature Demo | |
| |
| |
Summary | |
| |
| |
| |
XML and the DOM | |
| |
| |
Introduction | |
| |
| |
Writing and Reading XML Documents | |
| |
| |
Writing XML Documents | |
| |
| |
Reading XML Documents | |
| |
| |
Demo Maintenance Application Using XML | |
| |
| |
The DOM and the XmlDocument Class | |
| |
| |
Loading and Saving XML Documents | |
| |
| |
Enumerating the Elements of an XML Document | |
| |
| |
Editing Element Values | |
| |
| |
Reading and Writing Attributes | |
| |
| |
Getting and Setting the Text and XML of a Node or Node Branch | |
| |
| |
Searching for Specific Nodes | |
| |
| |
Demo to Display XML Files | |
| |
| |
Simple Maintenance Applications Using the DOM | |
| |
| |
Summary | |
| |
| |
| |
Disconnected Data via ADO.NET and DataSets | |
| |
| |
Introduction | |
| |
| |
ADO.NET Basics | |
| |
| |
ADO.NET Terminology and Main Classes | |
| |
| |
Constructing and Filling DataSet Objects | |
| |
| |
Untyped vs. Typed Datasets | |
| |
| |
Basic Database Operations with ADO.NET | |
| |
| |
Reading Data | |
| |
| |
Inserting and Updating Rows | |
| |
| |
Deleting and Removing Rows | |
| |
| |
Disconnected Data and Auto-Increment Primary Keys | |
| |
| |
Filling in Missing Schema and Primary Key Information for Untyped Datasets | |
| |
| |
Demo--Simple Maintenance Application | |
| |
| |
Working in Batch | |
| |
| |
Creating Multiple DataTables in a DataSet | |
| |
| |
Batch Row Changes | |
| |
| |
Batch Table Updates | |
| |
| |
Working with Row State Information | |
| |
| |
Searching, Sorting, and Filtering Data | |
| |
| |
Searching DataTable and DataRowCollection Objects | |
| |
| |
Sorting, Searching, and Filtering Data with DataView Objects | |
| |
| |
Working with Typed Datasets | |
| |
| |
Generating a Typed Dataset | |
| |
| |
Using Typed Datasets | |
| |
| |
Weighing the Pros and Cons of Typed Datasets | |
| |
| |
Summary | |
| |
| |
| |
Advanced ADO.NET | |
| |
| |
Introduction | |
| |
| |
Working with Binary (BLOB) Data | |
| |
| |
Using the DataReader Class | |
| |
| |
Using the DataSet Class | |
| |
| |
Demo Application to Read and Write Image Data | |
| |
| |
Associating Related Tables with the DataRelation Class | |
| |
| |
Navigating Hierarchical Data | |
| |
| |
Using Stored Procedures to Insert Hierarchical Data with Auto-Increment Columns | |
| |
| |
Understanding Concurrency | |
| |
| |
Demo Application to Test Various Concurrency Issues | |
| |
| |
The Roles of the Data Adapter and Command Builder in Concurrency | |
| |
| |
Deciding Where to Catch Concurrency Conflicts | |
| |
| |
Deciding How to Handle Concurrency Conflicts | |
| |
| |
Summary | |
| |
| |
| |
Combining ADO.NET and XML | |
| |
| |
Introduction | |
| |
| |
Serializing XML from a Single DataTable or Multiple Unrelated DataTables | |
| |
| |
Serializing Datasets Containing Related Data Tables | |
| |
| |
Mapping DataTable Columns to XML Node Types | |
| |
| |
Saving Formatted XML | |
| |
| |
Writing Schema Information | |
| |
| |
Generating XML from a DataTable | |
| |
| |
Filling DataSet Objects from XML | |
| |
| |
Working with DiffGrams | |
| |
| |
DiffGram Format | |
| |
| |
Example of Creating DiffGrams | |
| |
| |
Summary | |
| |
| |
| |
Remoting | |
| |
| |
Introduction | |
| |
| |
Issues with DCOM | |
| |
| |
Remoting and Web Services | |
| |
| |
Demo: Writing a Demo Remoting Application | |
| |
| |
Designing and Coding the Interface | |
| |
| |
Implementing the Remoting Server | |
| |
| |
Implementing the Remoting Client | |
| |
| |
Understanding When Objects Get Constructed | |
| |
| |
Wrapping MFC Objects for Remoting | |
| |
| |
Selecting Remoting Channels | |
| |
| |
Using Asynchronous Callbacks | |
| |
| |
Returning Objects to the Server | |
| |
| |
Implementing the Remoting Server | |
| |
| |
Implementing the Remoting Client | |
| |
| |
Using Remoting in Interprocess Communication | |
| |
| |
The Remoted Object | |
| |
| |
Implementing the Remoting Server | |
| |
| |
Implementing the Remoting Client | |
| |
| |
Implementing a Remoting Server in a Windows Service | |
| |
| |
The Remoted Object | |
| |
| |
Implementing the Remoting Server | |
| |
| |
Implementing the Service Installer | |
| |
| |
Implementing the Remoting Client | |
| |
| |
Summary | |
| |
| |
| |
Event Log, Process Control, and Benchmarking | |
| |
| |
Introduction | |
| |
| |
Working with the Windows Event Log | |
| |
| |
Constructing EventLog Objects and Enumerating Event Logs | |
| |
| |
Creating Event Sources and Custom Event Logs | |
| |
| |
Writing Event Log Entries | |
| |
| |
Enumerating Event Log Entries | |
| |
| |
Handling Event Log Notifications | |
| |
| |
Process Control | |
| |
| |
Starting a New Process | |
| |
| |
Getting Exit Notification | |
| |
| |
Enumerating Running Processes | |
| |
| |
Determining If a Process Is Responding | |
| |
| |
Enumerating Process Modules | |
| |
| |
Monitoring System Performance | |
| |
| |
Enumerate Existing Performance Objects and Counters | |
| |
| |
Reading Performance Data | |
| |
| |
Publish Performance Data | |
| |
| |
Publish Differential Data | |
| |
| |
Summary | |
| |
| |
| |
Managing Your Managed Objects | |
| |
| |
Introduction | |
| |
| |
Using .NET Collections | |
| |
| |
Collection Basics | |
| |
| |
Using the ArrayList Class | |
| |
| |
Using the Hashtable Class | |
| |
| |
Using the SortedList Class | |
| |
| |
Using the Queue Class | |
| |
| |
Using the Stack Class | |
| |
| |
Implementing a Custom Collection Class | |
| |
| |
Serializing Managed Objects to and from Disk | |
| |
| |
Serializing Entire Objects | |
| |
| |
Serializing Selected Members | |
| |
| |
Summary | |
| |
| |
| |
XML Overview and Syntax | |
| |
| |
| |
XPath Overview and Syntax | |
| |
| |
Index | |