
C# ПІДРУЧНИКИ / c# / Premier Press - C# Professional Projects
.pdf
xContents at a Glance
Part VI
Part VII
Part VIII
Part IX
Part X
Professional Project 4:
Creating an Airline Reservation Portal. . . . . 395
18 |
Project Case Study and Design . . . . . . . . . . . . . . . . . . . . |
399 |
19 |
Basics of ASP.NET Web Applications. . . . . . . . . . . . . . . |
429 |
20 |
Designing the Application. . . . . . . . . . . . . . . . . . . . . . . . |
453 |
21 |
Implementing the Business Logic . . . . . . . . . . . . . . . . . . |
483 |
|
Y |
|
22 |
Creating the Customer Transaction Portal. . . . . . . . . . . . |
521 |
|
L |
|
23 |
Debugging and Testing the Application. . . . . . . . . . . . . . |
537 |
|
F |
|
24 |
Administering the Application . . . . . . . . . . . . . . . . . . . . |
551 |
25 |
Securing the Application . . . . . . . . . . . . . . . . . . . . . . . . . |
567 |
26 |
Deploying the Application . . . . . . . . . . . . . . . . . . . . . . . |
581 |
Professional Project 5: |
|
|
Creating a WebMPortal for a Bookstore . . . . 593 |
||
27 |
Project CaseAStudy and Design . . . . . . . . . . . . . . . . . . . . |
597 |
28 |
ExploringEASP.NET Web Services . . . . . . . . . . . . . . . . . |
619 |
29 |
TDeveloping Web Services . . . . . . . . . . . . . . . . . . . . . . . . |
641 |
30 |
Developing Web Service Clients . . . . . . . . . . . . . . . . . . . |
667 |
Professional Project 6:
Creating a Mobile Application . . . . . . . . . . . 713
31 Project Case Study and Design . . . . . . . . . . . . . . . . . . . . 717 32 Basics of Mobile Applications . . . . . . . . . . . . . . . . . . . . . 727 33 Implementing the Business Logic . . . . . . . . . . . . . . . . . . 763
Beyond the Labs . . . . . . . . . . . . . . . . . . . . . 793
34 Advanced C# Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . 795
Appendixes . . . . . . . . . . . . . . . . . . . . . . . . . 829
A Unsafe Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
B Introduction to Visual Basic .NET . . . . . . . . . . . . . . . . . 843
CVisual Studio.NET Integrated
Development Environment . . . . . . . . . . . . . . . . . . . . . . . 877
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
Team-Fly®

Contents
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi
Goal of the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi How to Use this Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxii
PART I INTRODUCTION TO C# . . . . . . . . . . . . . . . . . 1
Chapter 1 Overview of the .NET Framework . . . . . . . . . . . 3
Introduction to the .NET Framework . . . . . . . . . . . . . . . . . . . . . . 4 Common Language Runtime (CLR) . . . . . . . . . . . . . . . . . . . . 6 Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
An Overview of .NET Framework Base Classes . . . . . . . . . . . . . 14 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Chapter 2 C# Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . |
17 |
Introduction to C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Initializing Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Variable Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Variable Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Types of Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Variable Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Types of Data Type Casting . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

xii Contents
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Initializing Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Working with Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Statements and Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Types of Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
PART II HANDLING DATA . . . . . . . . . . . . . . . . . . . . 41
Chapter 3 Components of C# . . . . . . . . . . . . . . . . . . . . . 43
Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Declaring Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Declaring a Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Calling a Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Passing Parameters to Methods . . . . . . . . . . . . . . . . . . . . . . . 52
Method Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Overloading a Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Declaring Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Accessing Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Structs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Contents xiii
Writing, Compiling, and Executing a C# Program. . . . . . . . . . . . 64
Writing a C# Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Compiling a C# Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Executing a C# Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Chapter 4 More about Components . . . . . . . . . . . . . . . . 67
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Single-Dimensional Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Multidimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Methods in Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Creating Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Working with Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Indexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Boxing and Unboxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Preprocessor Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 #region and #endregion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 #define and #undef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 #if, #endif, #else, and #elif. . . . . . . . . . . . . . . . . . . . . . . . . . 80 #error and #warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Chapter 5 Attributes and Properties . . . . . . . . . . . . . . . 83
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Declaring Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Attribute Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Attribute Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Default Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

xiv Contents
Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Declaring Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Types of Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Chapter 6 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Introduction to Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Creating Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Aborting Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Joining Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Suspending Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Making Threads Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Thread States. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Thread Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
PART III PROFESSIONAL PROJECT 1 . . . . . . . . . . . 109
Project 1 Creating a Customer Maintenance Project. . 111
Project 1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Chapter 7 Project Case Study . . . . . . . . . . . . . . . . . . . 113
Case Study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Project Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Analyzing Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
High-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Primary and Foreign Keys . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Referential Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Contents xv
Designing a Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Designing the Windows Forms
Used in Customer Maintenance Project . . . . . . . . . . . . . . . . 130
Low-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Integration and Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
User Acceptance Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Operations and Maintenance . . . . . . . . . . . . . . . . . . . . . . . . 138
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Chapter 8 Windows Forms and Controls. . . . . . . . . . . . 141
Introduction to Visual Studio .NET Projects. . . . . . . . . . . . . . . 142 Creating a New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Windows Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Creating a Windows Application
for the Customer Maintenance Project. . . . . . . . . . . . . . . . . . . . 164 Creating an Interface for Form1 . . . . . . . . . . . . . . . . . . . . . . . 165 Creating an Interface for WorkerForm . . . . . . . . . . . . . . . . . . . 167 Creating an Interface for CustomerForm . . . . . . . . . . . . . . . . . 168 Creating an Interface for ReportsForm . . . . . . . . . . . . . . . . . . 170 Creating an Interface for JobDetailsForm . . . . . . . . . . . . . . . 172
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Chapter 9 Validations and Exception Handling . . . . . . . 175
Performing Validations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Identifying the Validation Mechanism . . . . . . . . . . . . . . . . . 177
Using the ErrorProvider Control . . . . . . . . . . . . . . . . . . . . . 183
Handling Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Using the try and catch Statements . . . . . . . . . . . . . . . . . . . 187
Using the Debug and Trace Classes . . . . . . . . . . . . . . . . . . . . 189

xvi Contents
Debugging the Customer Management Application . . . . . . . . . 190
Using the Debugging Features of Visual Studio .NET . . . . . 190
Using the Task List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Chapter 10 Database Interaction Using ADO.NET . . . . . . 197
Connecting Windows Forms to a Data Source
Using ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Creating Form1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Connecting WorkerForm to the Workers Table . . . . . . . . . . . 200 Connecting CustomerForm to the tblCustomer Table . . . . . . 211 Connecting the JobDetails Form
to the tblJobDetails Table . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Chapter 11 Crystal Reports . . . . . . . . . . . . . . . . . . . . . . 239
Introduction to the Crystal Reports Designer Tool. . . . . . . . . . . 240
Creating the Reports Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Creating Crystal Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Creating the Windows Forms Viewer Control . . . . . . . . . . . 248
Creating the Monthly Customer Visit Report . . . . . . . . . . . . . . 251
Creating the Monthly Balancing and Alignment Report . . . . . . 254
Creating the Monthly Worker Report . . . . . . . . . . . . . . . . . . . . 256
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Chapter 12 Deploying a Windows Application. . . . . . . . . 259
Introduction to Deploying a Windows Application . . . . . . . . . . 260
Deployment Projects Available in Visual Studio .NET . . . . . 261
Deployment Project Editors . . . . . . . . . . . . . . . . . . . . . . . . . 279
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

Contents xvii
PART IV |
PROFESSIONAL PROJECT 2 . . . . . . . . . . . |
293 |
Project 2 Creating the Employee
Records System (ERS) Project. . . . . . . . . . . 295
Project 2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Chapter 13 Project Case Study and Design . . . . . . . . . . 297
Case Study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Project Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Analyzing Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
High-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Low-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Chapter 14 Implementing the Business Logic. . . . . . . . . 311
Populating the TreeView Control . . . . . . . . . . . . . . . . . . . . . . . 312
Displaying Employee Codes in the TreeView Control . . . . . 313
Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Displaying Employee Details in the ListView Control . . . . . 318
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
PART V PROFESSIONAL PROJECT 3 . . . . . . . . . . . 329
Project 3 Creating a Creative Learning Project . . . . . . 331
Project 3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

xviii Contents
Chapter 15 Project Case Study and Design . . . . . . . . . . 333
Case Study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Project Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Analyzing Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
High-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Low-Level Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Chapter 16 Implementing the Programming Logic . . . . . 349
Adding the Programming Logic to the Application . . . . . . . . . . 350
Adding Code to the Form Load() Method . . . . . . . . . . . . . . 351
Adding Code to the OK Button . . . . . . . . . . . . . . . . . . . . . . 353
Adding Code to the Exit Button . . . . . . . . . . . . . . . . . . . . . 363
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Chapter 17 Interacting with a Microsoft Word |
|
Document and Event Viewer . . . . . . . . . . . . |
365 |
Interacting with a Microsoft Word Document. . . . . . . . . . . . . . 366
The Created Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Adding Code to the Created Event. . . . . . . . . . . . . . . . . . . . 367
Overview of XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
The XmlReader Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
The XmlWriter Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Displaying Data in an XML Document . . . . . . . . . . . . . . . . 373
Displaying an Error Message in the Event Log. . . . . . . . . . . 377
Displaying Event Entries from Event Viewer . . . . . . . . . . . . 383
Displaying Data from the Summary.xml
Document in a Message Box . . . . . . . . . . . . . . . . . . . . . . . . 385
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

Contents xix
PART VI |
PROFESSIONAL PROJECT 4 . . . . . . . . . . . |
395 |
Project 4 Creating an Airline Reservation Portal. . . . . 397
Project 4 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Chapter 18 Project Case Study and Design . . . . . . . . . . 399
Airline Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Role of a Business Manager . . . . . . . . . . . . . . . . . . . . . . . . . 401
Role of a Network Administrator . . . . . . . . . . . . . . . . . . . . . 402
Role of a Line-of-Business Executive . . . . . . . . . . . . . . . . . . 402
Project Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Creation and Deletion of User Accounts. . . . . . . . . . . . . . . . 403
Addition of Flight Details . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Reservations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Cancellations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Query of Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Confirmation of Tickets. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Creation of Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Launch of Frequent Flier Programs . . . . . . . . . . . . . . . . . . . 406
Summarizing the Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Project Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Database Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Web Forms Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Enabling Security with the Directory Structure. . . . . . . . . . . 425
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Chapter 19 Basics of ASP.NET Web Applications . . . . . . 429
Getting Started with ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . 430
Prerequisites for ASP.NET Applications. . . . . . . . . . . . . . . . 431
New Features in ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . 431
Types of ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . 433