Tải bản đầy đủ (.pdf) (677 trang)

Application development using c and net

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.17 MB, 677 trang )

Application Development Using C# and .NET
By Michael Stiefel, Robert J. Oberg



Table of
Contents

Publisher:
Pub Date:
ISBN:
Pages:
Slots:

Prentice Hall PTR
December 21, 2001
0-13-093383-X
656
1

Copyright
The Integrated .NET Series From Object Innovations
Preface
Organization
Sample Programs
Caveat
Web Sites
Acknowledgments
The Integrated .NET Series from Object Innovations and Prentice Hall PTR
Introduction
Introductory .NET Language Books


Introduction to C# Using .NET
Introduction to Programming Visual Basic Using .NET
Programming Perl in the .NET Environment
Intermediate .NET Framework Books


Application Development Using C# and .NET
Application Development Using Visual Basic .NET
.NET Architecture and Programming Using Visual C++
Fundamentals of Web Applications Using .NET and XML
Chapter 1. What Is Microsoft .NET?
Microsoft and the Web
Windows on the Desktop
A New Programming Platform
The Role of XML
Summary
Chapter 2. .NET Fundamentals
Problems of Windows Development
Applications of the Future
.NET Overview
Summary
Chapter 3. C# Overview for Sophisticated Programmers
Hello World in C#
Performing Calculations in C#
Classes
C# Type System
Strings
Arrays and Indexers
More about Methods
Exceptions



Unsafe Code
Summary
Chapter 4. Object-Oriented Programming in C #
Review of Object-Oriented Concepts
Acme Travel Agency Case Study: Design
Inheritance in C#
Access Control
Acme Travel Agency Case Study: Implementation
More about Inheritance
Summary
Chapter 5. C# in the .NET Framework
System.Object
Collections
Interfaces
Acme Travel Agency Case Study: Step 2
Generic Interfaces in .NET
Delegates
Attributes
Summary
Chapter 6. User Interface Programming
Windows Forms Hierarchy
Simple Forms Using .NET SDK
Menus
Controls


Visual Studio.NET and Forms
Dialog Boxes

ListBox Control
Acme Travel Agency Case Study—Step 3
Summary
Chapter 7. Assemblies and Deployment
Assemblies
Private Assembly Deployment
Shared Assembly Deployment
Assembly Configuration
Multimodule Assemblies
Setup and Deployment Projects
Summary
Chapter 8. .NET Framework Classes
Metadata and Reflection
Input and Output in .NET
Serialization
.NET Application Model
Context
Application Isolation
Asynchronous Programming
Remoting
Custom Attributes
Garbage Collection and Finalization
Summary


Chapter 9. Programming with ADO.NET
.NET Data Providers
The Visual Studio.NET Server Explorer
Data Readers
Parameters Collection

SqlDataAdapter and the DataSet Class
DataSet Collections
DataSet Fundamentals
Database Transactions and Updates
Optimistic vs. Pessimistic Locking and the DataSet
Working with DataSets
Acme Travel Agency Case Study
XML Data Access
AirlineBrokers Database
Schema with Relationships
Typed DataSet
Summary
Chapter 10. ASP.NET and Web Forms
What Is ASP.NET?
Web Forms Architecture
Request/Response Programming
Web Applications Using Visual Studio.NET
Acme Travel Agency Case Study
ASP.NET Applications
State in ASP.NET Applications


ASP.NET Configuration
Server Controls
HTML Server Controls
Database Access in ASP.NET
Summary
Chapter 11. Web Services
Protocols
Web Service Architecture

SOAP Differences
Web Service Class
Hotel Broker Web Service
Summary
Chapter 12. Security
User-Based Security
Code Access Security
Internet Security
Role-Based Security in .NET
Forms-Based Authentication
Code Access Permissions
Code Identity
Security Policy
Summary
Chapter 13. Tracing and Debugging in .NET
The TraceDemo Example


Enabling Debug and Trace Output
Using the Debug and Trace Classes
Using Switches to Enable Diagnostics
Enabling or Disabling Switches
TraceListener
Listeners Collection
Summary
Chapter 14. Interoperability
Calling COM Components from Managed Code
Calling Managed Components from COM Client
Platform Invocation Services (PInvoke)
Summary

Appendix A. Visual Studio.NET
Overview of Visual Studio.NET
Creating a Console Application
Project Configurations
Debugging
Summary


Copyright
Library of Congress Cataloging-in-Publication Data
Stiefel, Michael.
Application development using C# and .NET / Michael Stiefel, Robert J. Oberg
p. cm.
1. System design. 2. Computer software—Development. 3. C# (Computer
program language). I. Oberg, Robert J. II. Title.
QA76.9.S88 S745 2002
005.2'768—-dc21
2001056574
Editorial/Production Supervision: Nick Radhuber
Acquisitions Editor: Jill Harry
Marketing Manager: Dan DePasquale
Manufacturing Buyer: Maura Zaldivar
Cover Design: Anthony Gemmellaro
Cover Design Direction: Jerry Votta
Interior Series Design: Gail Cocker-Bogusz
© 2002 by Michael Stiefel and Robert J. Oberg
Published by Prentice Hall PTR
Prentice-Hall, Inc.
Upper Saddle River, NJ 07458
Prentice Hall books are widely used by corporations and government agencies for



training, marketing, and resale.
The publisher offers discounts on this book when ordered in bulk quantities. For
more information, contact Corporate Sales Department, phone: 800-382-3419;
fax: 201-236-7141; email: Or write: Corporate Sales
Department, Prentice Hall PTR, One Lake Street, Upper Saddle River, NJ 07458.
Product and company names mentioned herein are the trademarks or registered
trademarks of their respective owners.
All rights reserved. No part of this book may be reproduced, in any form or by
any means, without permission in writing from the publisher.
Printed in the United States of America
10 9 8 7 6 5 4 3 2 1
Pearson Education LTD.
Pearson Education Australia PTY, Limited
Pearson Education Singapore, Pte. Ltd
Pearson Education North Asia Ltd
Pearson Education Canada, Ltd.
Pearson Educación de Mexico, S.A. de C.V.
Pearson Education—Japan
Pearson Education Malaysia, Pte. Ltd
Pearson Education, Upper Saddle River, New Jersey

Dedication
To the memory of
Dr. A. Edward Stefanacci, 1930-1993
To keep an adjunct to remember theeWere to import forgetfulness in me.


William Shakespeare Sonnet 122



The Integrated .NET Series From Object
Innovations
C#


Introduction to C# Using .NET



Oberg
Application Development Using C# and .NET
Stiefel/Oberg

Visual Basic


Introduction to Programming Visual Basic Using .NET



Wyatt/Oberg
Application Development Using Visual Basic and .NET
Oberg/Thorsteinson/Wyatt

Visual C++


.NET Architecture and Programming Using Visual C++

Thorsteinson/Oberg

Web Applications


Fundamentals of Web Applications Using .NET and XML
Bell/Feng/Soong/Zhang/Zhu

PERL


Programming PERL in the .NET Environment
Saltzman/Oberg


Preface
Microsoft .NET is an advance in programming technology that greatly simplifies
application development both for traditional, proprietary applications, and for the
emerging paradigm of Web-based services. .NET is a complete restructuring of
Microsoft's whole system infrastructure and represents a major learning challenge
for programmers developing applications on Microsoft platforms. The new
platform includes a new programming language C# and a major class library, the
.NET Framework.
This book covers important topics in the .NET Framework for experienced
programmers. You do not need prior experience in C#, because there is a selfcontained treatment, but you should have experience in some object-oriented
language such as C++ or Java. The book could also be read by a seasoned Visual
Basic programmer who has experience working with objects and components in
VB.
If you already understand C#, you may safely skip or skim Chapters 3 and 4.
Chapter 5 contains important information about the interactions of C# and the

.NET Framework. You may then proceed with a detailed study of the .NET
Framework in Chapters 6 and beyond. For a thorough introduction to the C#
language you may read the book Introduction to C# Using .NET.
The book is practical, with many examples and a major case study. The goal is to
equip you to begin building significant applications using the .NET Framework.
The book is part of The Integrated .NET Series from Object Innovations and
Prentice Hall PTR.


Organization
The book is organized into five major parts, and is structured to make it easy for
you to navigate to what you most need to know. The first part, consisting of
Chapters 1 and 2, should be read by everyone. It answers the question "What is
Microsoft .NET?" and outlines the programming model of the .NET Framework.
The second part, consisting of Chapters 3-5, covers the C# programming
language. If you are already familiar with C# you can skim these chapters, paying
the most attention to Chapter 5, which covers topics such as interfaces, delegates,
and events. This chapter also describes important interactions between C# and the
.NET Framework. The case study, which is elaborated throughout the entire
book, is introduced in Chapter 4.
The third part, Chapters 6-9, covers important fundamental topics in the .NET
Framework. Chapter 6 covers user interface programming using the Windows
Forms classes. Chapter 7 discusses assemblies and deployment, which constitute
a major advance in the simplicity and robustness of deploying Windows
applications, ending the notorious "DLL hell." Chapter 8 delves into important
.NET Framework classes, including the topics of metadata, serialization,
threading, attributes, application domains, asynchronous programming, remoting,
and memory management. Chapter 9 covers ADO.NET, which provides a
consistent set of classes for accessing both relational and XML Data.
The fourth part of the book provides an in-depth introduction to Web

programming using ASP.NET and SOAP. Chapter 10 introduces the
fundamentals of ASP.NET, including the use of Web Forms, which greatly
simplifies the development of sophisticated Web sites. Chapter 11 covers SOAP
and Web Services, which provide an easy-to-use and robust mechanism for
heterogeneous systems to interoperate.
The final part of the book covers additional important topics in the .NET
Framework. Chapter 12 covers the topic of security in detail, including code
access security, declarative security, and the securing of Web applications and
services. Chapter 13 introduces the debug and trace classes provided by .NET.
Chapter 14 covers interoperability of .NET with COM and with Win32
applications.


Sample Programs
The only way to really learn a major framework is to read and write many, many
programs, including some of reasonable size. This book provides many small
programs that illustrate pertinent features of .NET in isolation, which makes them
easy to understand. The programs are clearly labeled in the text, and they can all
be found in the software distribution that accompanies this book.
A major case study, the Acme Travel Agency, is progressively developed in
Chapters 4 through 12. It illustrates many features of C# and .NET working in
combination, as they would in a practical application.
The sample programs are provided in a self-extracting file on the book's Web site.
When expanded, a directory structure is created, whose default root is
c:\OI\NetCs. The sample programs, which begin with the second chapter, are in
directories Chap02, Chap03, and so on. All the samples for a given chapter are
in individual folders within the chapter directories. The names of the folders are
clearly identified in the text. Each chapter that contains a step of the case study
has a folder called CaseStudy, containing that step. If necessary, there is a
readme.txt file in each chapter directory to explain any instructions necessary for

getting the examples to work.
This book is part of The Integrated .NET Series. The sample programs for other
books in the series are located in their own directories underneath \OI, so all the
.NET examples from all books in the series will be located in a common area as
you install them.
These programs are furnished solely for instructional purposes and should not be
embedded in any software product. The software (including instructions for use)
is provided "as is" without warranty of any kind.


Caveat
The book and the associated code were developed with Beta 2 of the .NET
Framework. Microsoft has indicated that this version of .NET is close to what
will be the final version. Nonetheless, changes will be made before .NET is
released. The code in the examples has been verified to work only with Windows
2000. Database code has been verified with SQL Server 2000. Several examples
in the database and security chapters have machine names embedded in
connection strings or role names. When trying to run these examples, you will
have to replace those names with the appropriate name for your machine. To
make installation easy, the database examples run with user name "sa" and
without a password. Needless to say, in a real system you should NEVER have
any login id without a password or have a database application use sa to log into a
database. [1]
[1]

That is just one of several steps necessary to avoid an SQL Injection
attack.


Web Sites

The Web site for the book series is:
www.objectinnovations.com/dotnet.htm
A link is provided at that Web site for downloading the sample programs for this
book.
Additional information about .NET technology is available at:
www.reliablesoftware.com
The book sample programs are available at this Web site as well.
The Web site for the book will also have a list of .NET learning resources that
will be kept up-to-date.


Acknowledgments
We are indebted to Mike Meehan for helping to get this project off the ground,
starting at a meeting at the PDC when Microsoft announced .NET. That
conversation put into motion what has become a substantial series of books on
.NET technology, in which this volume is the second. We would also like to
thank Jill Harry at Prentice Hall for her ongoing support with this ambitious book
project.
Several people at Microsoft reviewed parts of the book: Steven Pratschner, Jim
Hogg, Michael Pizzo, Michael Day, Krzysztof Cwalina, Keith Ballinger, and Eric
Olsen. We thank them for taking time out from their very tight schedules to
correct our manuscript. Connie Sullivan and Stacey Giard coordinated technical
sessions and helped assure our access to resources at Microsoft.
Moshe Raab took precious time off from his consulting work and provided many
helpful suggestions. Peter Thorsteinson, an author of another book in our series,
was a valuable resource for understanding the deployment of .NET applications.
Will Provost helped clarify several issues related to XML. We also want to thank
all the other authors in the .NET series, because there is much synergy in a group
working on parallel books, even if in the heat of writing we did not always
collaborate as closely as we might have. These hardworking people include Eric

Bell, Howard Feng, Michael Saltzman, Ed Soong, Dana Wyatt, David Zhang, and
Sam Zhu.
As always, reviewers should get credit for improving the quality of the work; any
remaining errors are the responsibility of the authors.
Robert always has a hard time writing acknowledgments, because there are so
many people to thank on such a major project. I (Robert) usually thank Michael
Stiefel, but this time he is my co-author, and so we are on the same side of the
fence, thanking others. My wife, Marianne, has provided enormous support and
encouragement for all my writing efforts. This project was especially demanding,
and so her support is all the more appreciated. Thank you all, and the other
colleagues, friends, and students—too numerous to mention individually—who
have helped me over the years.
Michael would like to thank his wife not only for her understanding of his
intellectual lack of presence while writing the book (even if he was physically
present), but also for the associated behaviors, not the least of which was the
repeated playing of music that one social critic referred to as "Das Lied von der
Erde and other light classics." Of course I did not follow his other advice about
how to write a book.


November 23, 2001


The Integrated .NET Series from Object
Innovations and Prentice Hall PTR
About this Series
Robert J. Oberg, Series Editor


Introduction

The Integrated .NET Book Series from Object Innovations and Prentice Hall PTR
is a unique series of introductory and intermediate books on Microsoft's important
.NET technology. These books are based on proven industrial-strength course
development experience. The authors are expert practitioners, teachers, and
writers who combine subject-matter expertise with years of experience in
presenting complex programming technologies such as C++, MFC, OLE, and
COM/COM+. These books teach in a systematic, step-by-step manner and are not
merely summaries of the documentation. All the books come with a rich set of
programming examples, and a thematic case study is woven through several of the
books.
From the beginning, these books have been conceived as an integrated whole, and
not as independent efforts by a diverse group of authors.. The initial set of books
consists of three introductory books on .NET languages and four intermediate
books on the .NET Framework. Each book in the series is targeted at a specific
part of the important .NET technology, as illustrated by the diagram below.


Introductory .NET Language Books
The first set of books teaches several of the important .NET languages. These
books cover their language from the ground up and have no prerequisite other
than programming experience in some language. Unlike many .NET language
books, which are a mixture of the language and topics in the .NET Framework,
these books are focused on the languages, with attention to important interactions
between the language and the framework. By concentrating on the languages,
these books have much more detail and many more practical examples than
similar books.
The languages selected are the new language C#, the greatly changed VB.NET,
and Perl.NET, the open source language ported to the .NET environment. Visual
C++ .NET is covered in a targeted, intermediate book, and JScript.NET is
covered in the intermediate level .NET Web-programming book.



Introduction to C# Using .NET
This book provides thorough coverage of the C# language from the ground up. It
is organized with a specific section covering the parts of C# common to other Clike languages. This section can be cleanly skipped by programmers with C
experience or the equivalent, making for a good reading path for a diverse group
of readers. The book gives thorough attention to the object-oriented aspects of C#
and thus serves as an excellent book for programmers migrating to C# from
Visual Basic or COBOL. Its gradual pace and many examples make the book an
excellent candidate as a college textbook for adventurous professors looking to
teach C# early in the language's life-cycle.


Introduction to Programming Visual Basic
Using .NET
Learn the VB.NET language from the ground up. Like the companion book on
C#, this book gives thorough attention to the object-oriented aspects of VB.NET.
Thus the book is excellent for VB programmers migrating to the more
sophisticated VB.NET, as well as for programmers experienced in languages such
as COBOL. This book would also be suitable as a college textbook.


Programming Perl in the .NET Environment
A very important part of the vision behind Microsoft® .NET is that the platform
is designed from the ground up to support multiple programming languages from
many sources, and not just Microsoft languages. This book, like other books in
the series, is rooted in long experience in industrial teaching. It covers the Perl
language from the ground up. Although oriented toward the ActiveState Perl.NET
compiler, the book also provides excellent coverage of the Perl language suitable
for other versions as well.



Intermediate .NET Framework Books
The second set of books is focused on topics in the .NET Framework, rather than
on programming languages. Three parallel books cover the .NET Framework
using the important languages C#, VB.NET, and Visual C++. The C# and
VB.NET books include self-contained introductions to the languages suitable for
experienced programmers, allowing them to rapidly come up to speed on these
languages without having to plow through the introductory books. The fourth
book covers the important topic of web programming in .NET, with substantial
coverage of XML, which is so important in the .NET Framework.
The design of the series makes these intermediate books much more suitable to a
wider audience than many similar books. The introductory books focus on
languages frees up the intermediate books to cover the important topics of the
.NET Framework in greater depth. The series design also makes for flexible
reading paths. Less experienced readers can read the introductory language books
followed by the intermediate framework books, while more experienced readers
can go directly to the intermediate framework books.


×