Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C# ПІДРУЧНИКИ / c# / Premier Press - C# Professional Projects

.pdf
Скачиваний:
475
Добавлен:
12.02.2016
Размер:
14.7 Mб
Скачать

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