Wrox Professional VB 2005 Nov 2005 ISBN 0764575368 pdf
TEAM LinG Professional VB 2005
Professional VB 2005
Bill Evjen, Billy Hollis, Rockford Lhotka,
Tim McCarthy, Rama Ramachandran,
Kent Sharkey, Bill Sheldon Professional VB 2005 Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256
Copyright © 2006 by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada
ISBN-10: 0-7645-7536-8 Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1
1B/SW/RQ/QV/IN Library of Congress Cataloging-in-Publication Data: Professional Visual Basic 2005 / Bill Evjen ... [et al.]. p. cm. Includes index.
ISBN-13: 978-0-7645-7536-5 (paper/website)
ISBN-10: 0-7645-7536-8 (paper/website) 1. Microsoft Visual BASIC.
QA76.73.B3P7485 2005 005.2’768 — dc22 2005012585 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of
the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through
payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923,(978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Legal Department,
Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4355, or online at http://www.wiley.com/go/permissions.
LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY : THE PUBLISHER AND THE AUTHOR MAKE NO REPRESEN-
TATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CONTENTS OF
THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WAR-
RANTIES OF FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CREATED OR EXTENDED BY
SALES OR PROMOTIONAL MATERIALS. THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUIT-
ABLE FOR EVERY SITUATION. THIS WORK IS SOLD WITH THE UNDERSTANDING THAT THE PUBLISHER IS NOT
ENGAGED IN RENDERING LEGAL, ACCOUNTING, OR OTHER PROFESSIONAL SERVICES. IF PROFESSIONAL
ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT.
NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM. THE
FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK AS A CITATION AND/OR A
POTENTIAL SOURCE OF FURTHER INFORMATION DOES NOT MEAN THAT THE AUTHOR OR THE PUBLISHER
ENDORSES THE INFORMATION THE ORGANIZATION OR WEBSITE MAY PROVIDE OR RECOMMENDATIONS IT
For general information on our other products and services please contact our Customer Care Department within the United States at (800) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.
Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trade-
marks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries,and may not be used without written permission. Visual Basic is a registered trademark of Microsoft Corporation in the
United States and/or other countries. All other trademarks are the property of their respective owners. Wiley Publishing,
Inc., is not associated with any product or vendor mentioned in this book.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available
in electronic books.About the Authors Bill Evjen is an active proponent of .NET technologies and community-based learning initiatives for
.NET. He has been actively involved with .NET since the first bits were released in 2000. In the same year, Bill founded the St. Louis .NET User Group ( www.stlnet.org ), one of the world’s first .NET user groups. Bill is also the founder and the executive director of the International .NET Association (INETA – www.ineta.org ), which represents more than 375,000 members worldwide.
Based in St. Louis, Missouri, Bill is an acclaimed author and speaker on ASP.NET and XML Web Services. He has written or coauthored more than 10 books, including Professional C# 2005 and Professional ASP.NET 2.0 (Wrox), XML Web Services for ASP.NET, ASP.NET Professional Secrets (Wiley), and more.
Bill is a technical director for Reuters, the international news and financial services company, and he travels the world speaking to major financial institutions about the future of the IT industry. He gradu- ated from Western Washington University in Bellingham, Washington, with a Russian language degree. When he isn’t tinkering on the computer, he can usually be found at his summer house in Toivakka, Finland. You can reach Bill at evjen@yahoo.com .
To Kalle – Welcome to the family!
Billy Hollis is coauthor of the first book ever published on Visual Basic .NET, VB.NET Programming on
the Public Beta (Wrox Press) as well as numerous other books and articles on .NET. Billy is a Microsoftregional director and an MVP, and he was selected as one of the original .NET “Software Legends.” He writes a monthly column for MSDN Online and is heavily involved in training, consultation, and soft- ware development on the Microsoft .NET platform, focusing on smart-client development and commer- cial packages. He frequently speaks at industry conferences such as Microsoft’s Professional Developer Conference, TechEd, and COMDES. Billy is a member of the INETA speakers’ bureau and speaks at user group meetings all over the United States.
Rockford Lhotka is the principal technology evangelist for Magenic Technologies ( www.magenic.com ),
a company focused on delivering business value through applied technology and one of the nation’s premiere Microsoft Gold Certified Partners. Rockford is the author of several books, including Expert
Visual Basic .NET and C# Business Objects. He is a Microsoft Software Legend, regional director, MVP, and
INETA speaker. He is a columnist for MSDN Online and contributing author for Visual Studio Magazine, and he regularly presents at major conferences around the world — including Microsoft PDC, Tech Ed,
VS Live! and VS Connections. For more information go to www.lhotka.net .
For my Mom and Dad, whose love and guidance have been invaluable in my life. Thank you!
Tim McCarthy is a principal engineer at InterKnowlogy, where he architects and builds highly scalable
n -tier web and smart-client applications utilizing the latest Microsoft platforms and technologies. Tim’s
expertise covers a wide range of Microsoft technologies, including, but not limited to: .NET Framework (ASP.NET/Smart Clients/Web Services), Active Directory, UDDI, SQL Server, Windows SharePoint Services/SharePoint Portal Server 2003, and Service Oriented Architecture (SOA) applications. Tim has worked as a project technical lead/member as well as in a technical consulting role for several Fortune 500 companies. He has held the Microsoft Certified Solution Developer (MCSD) and Microsoft Certified Trainer (MCT) certifications for several years and was one of the first wave of developers to earn the Microsoft Certified Application Developer (MCAD) for .NET and MCSD for .NET certifications. He also holds the Microsoft Certified Database Administrator certification for SQL Server 2000. Tim has been an author and technical reviewer for several books from Wrox Press and most recently was a lead author on Professional VB.NET 2003. His other books include Professional Commerce Server 2000, and Professional ADO 2.5 Programming. Tim is currently working as a lead author on the next edition of
Professional VB.NET . Tim has written numerous articles for the Developer .NET Update newsletter, devel-
oped packaged presentations for MSDN, and has written a whitepaper for Microsoft on using COM+ services in .NET. He has also written articles for SQL Server Magazine and Windows & .NET Magazine. Tim has spoken at technical conferences around the world and several San Diego area user groups (includ- ing both .NET and SQL Server groups) and he has been a regular speaker at the Microsoft Developer Days conference in San Diego for the last several years. Tim has also delivered MSDN webcasts, many of which were repeat requests from Microsoft. Tim also teaches custom .NET classes to companies in need of expert .NET mentoring and training. Tim holds a B.B.A. in marketing from the Illinois Institute of Technology as well as an M.B.A. in market- ing from National University. Before becoming an application developer, Tim was an officer in the United States Marine Corps. Tim’s passion for .NET is only surpassed by his passion for Notre Dame athletics.
I dedicate this book to everybody in my family who supports me. Jasmine, some day you will be writing books, too!
Rama Ramachandran is a software architect at DKR Capital, a major hedge fund company in Stamford,
Connecticut. He is a Microsoft Certified Solutions Developer and Site-Builder and has excelled in designing and developing WinForms and Web applications using .NET, ASP.NET, Visual Basic and SQL Server. Rama has more than 15 years’ experience with all facets of the software development lifecycle and has cowritten Introducing .NET, Professional ASP Data Access, Professional Visual InterDev Programming (all Wrox Press), and four books on classic Visual Basic. Rama is also the “ASP Pro” at Devx.com , where he maintains ASP-related columns. He teaches .NET Development and Web Development for Fairfield University’s master’s degree in software engineering, and at the University of Connecticut. You can reach Rama at ramabeena@hotmail.com .
This book is dedicated to my wife, Beena, and our children, Ashish and Amit. They make my life whole. I’m great at writing about technology but get tongue-tied trying to say how much I love and care about the three of you. I am grateful to our prayer-answering God for your laughing, mischievous, adoring lives. Thanks for being there, Beens. I love you.
Kent Sharkey. Born in an igloo and raised by wolves in a strange realm called “Manitoba,” Kent
Sharkey wandered the wilderness until found by a group of kind technical evangelists and migrated to Redmond. He now is content strategist (yeah, he doesn’t know what he’s supposed to do either) for ASP.NET content on MSDN. When not answering email he dreams of sleeping, complains to everyone around (come to think of it, he does that while answering email as well), and attempts to keep his house- mates (Babi, Cica, and Squirrel) happy.
As with all else, to Margaret. Thank you.
Bill Sheldon is a software architect and engineer originally from Baltimore, Maryland. Holding a degree
in Computer Science from the Illinois Institute of Technology (IIT) and a Microsoft Certified Solution Developer (MCSD) qualification, Bill has been employed as an engineer since resigning his commission with the U.S. Navy following the first Gulf War. Bill is involved with the San Diego .NET User Group and writes for Windows and .NET magazines, including the twice monthly Developer .NET Update email newsletter. He is also a frequent online presenter for MSDN and speaks at live events such as Microsoft Developer Days. He lives with his wife, Tracie, in Southern California, where he is employed as a princi- pal engineer with InterKnowlogy. You can reach Bill at bills@interknowlogy.com .
Credits
Acquisitions Editor Katie Mohr Development Editors Eileen Bien Calabro Ami Frank Sullivan Technical Editor Brian Patterson Production Editor Pamela Hanley Copy Editor Foxxe Editorial Services Editorial Manager Mary Beth Wakefield Vice President & Executive Group Publisher Richard Swadley Vice President and Publisher Joseph B. Wikert
Project Coordinator Ryan Steffen Graphics and Production Specialists Carrie A. Foster Lauren Goddard Denny Hager Barbara Moore Lynsey Osborn Alicia South Quality Control Technicians Laura Albert John Greenough Leeann Harney Jessica Kramer Brian H. Walls Proofreading TECHBOOKS Production Services Indexing Broccoli Information Management
Contents Introduction xxv
12 Web Services
16 Summary
16 Major Differences in .NET 2.0
15 The Future of .NET
15 Easier Deployment
15 Libraries of Prewritten Functionality
14 Reducing Barriers to Internet Development
14 A Spectrum of Programming Models
14 How .NET Affects You
13 .NET Drives Changes in Visual Basic
13 Some Things Never Change . . .
13 No Internal Use of COM
12 The Role of COM
12 XML as the .NET Metalanguage
11 Console Applications
1 What Is .NET?
11 Web Forms
10 Windows Forms
9 User and Program Interfaces
8 What Is in the .NET Class Framework?
8 The Next Layer — The .NET Class Framework
8 Namespaces
7 A Common Type System
7 Multiple-Language Integration and Support
5 Metadata
4 Key Design Goals
3 The Common Language Runtime
2 An Overview of the .NET Framework
2 What’s Wrong with DNA and COM?
1 A Broad and Deep Platform for the Future
17 x Contents
19 Visual Studio .NET — Startup
64 Performing Explicit Conversions
50 Chapter 3: Variables and Type
51 Differences of Value and Reference Types
52 Value Types (Structures)
54 Primitive Types
54 Explicit Conversions
63 Compiler Options
66 Reference Types (Classes)
47 Recording and Using Macros in Visual Studio 2005
68 The Object Class
68 The String Class
70 The DBNull Class and IsDBNull() Function
72 Arrays
73 Collections
76 Parameter Passing
78 Boxing
49 Summary
47 The Server Explorer
20 Visual Studio .NET
30 Working with Visual Basic 2005
21 The Solution Explorer
22 My Project
23 References
24 Assembly Information Screen
25 The New Code Window
26 The Properties Window
29 Dynamic Help
31 Form Properties Set in Code
46 The Command Window
32 Enhancing the Sample Application
34 Adding a Control and Event Handler
34 Customizing the Code
35 Build Configurations
40 Building Applications
43 Useful Features of Visual Studio
46 The Task List
79
Contents Retired Keywords and Methods
80 Elements of Visual Basic 6.0 Removed in .NET
80 Summary
81 Chapter 4: Object Syntax Introduction
83 Object-Oriented Terminology
84 Objects, Classes, and Instances
84 Composition of an Object
85 Working with Objects
88 Object Declaration and Instantiation
88 Object References
90 Dereferencing Objects
90 Early versus Late Binding
90 Creating Classes
94 Creating Basic Classes
94 Constructor Methods 114 Termination and Cleanup 115
Advanced Concepts 116
Overloading Methods 116 Overloading Constructor Methods 119 Shared Methods, Variables, and Events 120 Operator Overloading 125 Delegates 128 Classes versus Components 133
Summary 134
Chapter 5: Inheritance and Interfaces 137
Inheritance 138
Implementing Inheritance140 Multiple Interfaces
187 Object Interfaces
187 Secondary Interfaces 189
Summary 195
Chapter 6: The Common Language Runtime 197
Elements of a .NET Application 198Modules 198 Assemblies 199 Types 200
Inheritance 241
Summary 257
Summary 281
Generic Types 267 Generic Methods 275 Constraints 276 Generics and Late Binding 280
Creating Generics 267
261 Generic Methods 265
260 Generic Types
259 Using Generics
xii Contents
Versioning and Deployment 201
Chapter 7: Applying Objects and Components 223
Abstraction 223 Encapsulation 227 Polymorphism 230 Method Signatures 230 Implementing Polymorphism 230Summary 222
Traditional “Garbage Collection” 211 Faster Memory Allocation for Objects 218 Garbage Collector Optimizations 220
IL Disassembler 209 Memory Management 210
The Common Type System 203 Metadata 204 Better Support for Metadata 205 Attributes 206 The Reflection API 208
Cross-Language Integration 203
Better Support for Versioning 201 Better Deployment 202
When to Use Inheritance 242 Inheritance and Multiple Interfaces 246 How Deep to Go? 252 Fragile Base Class Issue 254
Contents Chapter 9: Namespaces
283 What Is a Namespace?
284 Namespaces and References
287 Common Namespaces 289
Importing and Aliasing Namespaces 291
Importing Namespaces 292 Referencing Namespaces in ASP.NET 293 Aliasing Namespaces 294
Creating Your Own Namespaces 295 My 298
My.Application 299 My.Computer 303 My.Forms 307 My.Resources 308 My.User 308 My.WebServices 308
Summary 309
Chapter 10: Exception Handling and Debugging 311
A Brief Review of Error Handling in VB6 312 Exceptions in .NET 314Important Properties and Methods of an Exception 314 How Exceptions Differ from the Err Object in VB6 315
Structured-Exception-Handling Keywords in VB.NET 315
The Try, Catch, and Finally Keywords 316 The Throw Keyword 318 Throwing a New Exception 319 The Exit Try Statement 320 Nested Try Structures 321 The Message Property 323 The InnerException and TargetSite Properties 323
Interoperability with VB6-Style Error Handling 328 Error Logging 329
Writing to Trace Files 333
Analyzing Problems and Measuring Performance via the Trace Class 335
Summary 338 xiv Contents
Chapter 11: Data Access with ADO.NET 2.0 341
ADO.NET 2.0 Architecture Enhancements 342 ADO.NET Components 343370 Properties 371 Stored Procedure XML Structure 372 Methods 373 Using DataSet Objects to Bind to DataGrids 385
XML Stream-Style Parsers 399
System.Xml Document Support 399
Source Code Style Attributes 397
XML Serialization 392
Chapter 12: Using XML in Visual Basic 2005 389
An Introduction to XML 391Summary 388
369 Constructors
.NET Data Providers 344
Working with the Common Provider Model 366 Connection Pooling Enhancements in ADO.NET 2.0 369 Building a Data Access Component
361 ADO.NET DataTable Objects 363 ADO.NET 2.0 Enhancements to the DataSet and DataTable 364
DataTableCollection 359 DataRelationCollection 360 ExtendedProperties 360 Creating and Using DataSet Objects
The DataSet Component 359
DataReader Object 350 Executing Commands Asynchronously 352 DataAdapter Objects 354 SQL Server .NET Data Provider 358 OLE DB .NET Data Provider 359
Connection Object 344 Command Object 345 Using Stored Procedures with Command Objects 346
Writing an XML Stream 400 Reading an XML Stream 405 Using the MemoryStream Object 414 Document Object Model (DOM) 418
Contents
470 Dealing with Exceptions Using the SecurityException Class 471 Cryptography Basics
The System.Windows.Forms Namespace 502 Using Forms 502
Default Instances of Forms 498 Changes in Existing Controls 499 New Controls 500 Replacements for Older Windows Forms Controls 501
The Importance of Windows Forms 498 Summary of Changes in Windows Forms version 2.0 498
Chapter 14: Windows Forms 497
474
Summary 495
473 Hash Algorithms
Figuring the Minimum Permissions Required for Your Application 465 Using Visual Studio to Figure Minimum Permissions 467 Security Tools
XSLT Transforms 424
Managing Code Access Permissions 449 Managing Security Policy 454
Code Access Permissions 445 Role-Based Permissions 446 Identity Permissions 449
Chapter 13: Security in the .NET Framework 2.0 439
Security Concepts and Definitions 440 Permissions in the System.Security.Permissions Namespace 442
Summary 437
XML and SQL Server 2005 436
432 ADO.NET and SQL Server 2000’s Built-In XML Features 434
XSLT Transforming between XML Standards 429 Using XML in Visual Basic 2005 430 Other Classes and Interfaces in System.Xml.Xsl 432
Showing Forms via Sub Main 503 Setting the Startup Form 503 Startup Location 504 Form Borders 505 Always on Top — The TopMost Property 505 Owned Forms 505 xvi Contents
Making Forms Transparent and Translucent 507 Visual Inheritance 508 Scrollable Forms 509
Forms at Runtime 509 Controls 510
Control Tab Order 511 Control Arrays 511 Automatic Resizing and Positioning of Controls 513
FlowLayoutPanel Control 517 TableLayoutPanel Control 520 Extender Provider Controls 520 Advanced Capabilities for Data Entry 523 Validating Data Entry 526 Toolbars and the New ToolStrip Control 528 Menus 531 Common Dialogs 533 Drag and Drop 535 Panel and GroupBox Container Controls 538 Summary of Standard Windows.Forms Controls 539
Retired Controls 543 Using ActiveX Controls 543 Other Handy Programming Tips 543 MDI Forms 544 An MDI Example in VB.NET 545 Dialog Forms 547
Summary 549
552 Developing Custom Controls in .NET 552
Inherit from an Existing Control 553 Build a Composite Control 553 Write a Control from Scratch 554
Inheriting from an Existing Control 554
Overview of the Process 554 Adding Additional Logic to a Custom Control 555
Other Useful Attributes 559 Defining a Custom Event for the Inherited Control 560
Creating a CheckedListBox that Limits the Number of Selected Items 560
The Control and UserControl Base Classes 564
The Control Class 564 The UserControl Class 565
Contents A Composite UserControl
A More Complex Example 594 The Processing Flow of ASP.NET Web Forms 596
Chapter 17: ASP.NET 2.0 Advanced Features 627
Applications and Pages 627Web Forms versus ASP 609 Transferring Control among Web Forms 611 A Final Example 611
Summary 625
The Web Form’s Lifecycle 607 Event Categories 608
Events in Web Forms 606
The Concept of Server-Side Controls 598 HTML Server Controls 600 ASP.NET Server Controls 602 Validation Controls 604 User Controls 605
The Controls Available in Web Forms 598
Single-File Page Model 590 Code-Behind Page Model 591 The Template for Presentation 593
566 Creating a Composite UserControl
The Anatomy of a Web Form 590
Setting Up the Environment 584 The HelloWorld Web Form 584
Chapter 16: Building Web Applications 583
A Web Site in Action 583Attaching an Icon for the Toolbox 579 Embedding Controls in Other Controls 580
Summary 582
Painting a Custom Control with GDI+ 573
Building a Control from Scratch 572
567 How Does Resize Work? 568 Setting a Minimum Size 568 Exposing Properties of Subcontrols 568 Stepping Through the Example 569
Cross-Page Posting 628 ASP.NET Advanced Compilation 632 xviii Contents
Master Pages 634
Assemblies and Deployment 678
Application Deployment 692
Chapter 19: Deployment 691
Summary 689
The Assembly Class 687 Putting Assemblies to Work 689
Dynamic Loading of Assemblies 687
Application Isolation 681 Side-by-Side Execution 682 Self-Describing 682 Version Policies 682 Configuration Files 684
Versioning Issues 681
Application-Private Assemblies 678 Shared Assemblies 679
The Identity Section 675 Referenced Assemblies 677
Creating a Master Page 635 Creating the Content Page 637 Declaring the Master Page Application-Wide 641
Assemblies 672 The Manifest 673
Chapter 18: Assemblies 671
Configuring ASP.NET 666 Summary 668
Membership and Role Management 661 Personalization 665
Using the SiteMapPath Server Control 654 Menu Server Control 656 The TreeView Server Control 657
652 Navigation 653
642 Using the GridView and SqlDataSource Controls 643 Allowing for Editing and Deleting of Records with the GridView 648 Don’t Stop There!
Providing Default Content in Your Master Page 642 Data-Driven Applications
Why Is Deployment Easier in .NET? 692
Contents
XCOPY Deployment 694 Using the Windows Installer 694
Visual Studio .NET Deployment Projects 695 Project Templates
696 Creating a Deployment Project 698 Walkthroughs 698
Modifying the Deployment Project 710
Project Properties 711 The File System Editor 714 The Registry Editor 719 The File Types Editor 722 The User Interface Editor 723 The Custom Actions Editor 726 The Launch Conditions Editor 729
Building 732 Internet Deployment of Windows Applications 733
No-Touch Deployment 733 ClickOnce Deployment 735 Custom Deployment Options 745
Summary 745
748 COM and .NET in Practice 749
A Legacy Component 749 The .NET Application 752 Trying It All Out 754 Using TlbImp Directly 755 Late Binding 756
ActiveX Controls 761
A Legacy ActiveX Control 761 A .NET Application, Again 763 Trying It All Out, Again 766
Using .NET Components in the COM World 766 A .NET Component
767 RegAsm 769 TlbExp 772
Summary 772 xx Contents Chapter 21: Enterprise Services
773 Transactions 774
What Is a Thread? 803
Introduction to Web Services 835 Early Architectural Designs 837
Chapter 23: XML Web Services 835
Summary 834
A Quick Tour 812 Threading Options 815 Manually Creating a Thread 820 Shared Data 822 Avoid Sharing Data 823 Sharing Data with Synchronization 825 Synchronization Objects 827
Implementing Threading 812
Processes, AppDomains, and Threads 805 Thread Scheduling 807 Thread Safety and Thread Affinity 809 When to Use Threads 809 Designing a Background Task 811 Interactive Applications 811
Chapter 22: Threading 803
The ACID Test 774
Summary 801
An Example of Queued Components 793 Transactions with Queued Components 799
Queued Components 792
Just-In-Time 791 Object Pooling 792 Holding Things Up 792
Other Aspects of Transactions 791
An Example of Transactions 776
Transactional Components 775
The Network Angle 837 Application Development 837 Merging the Two with the Web 837 The Foundations of Web Services 838
Contents The Problems
The Downside 868
879 Using IIS As a Remoting Host 890 Using Activator.GetObject 894 Interface-Based Design 895 Using Generated Proxies 897
879 A Simple Example
872 SingleCall, Singleton, and Activated Objects 875 Implementing Remoting
872 Basic Terminology
871 Remoting Overview
Where We Go from Here 869
Summary 869
Security 868 State 868 Transactions 868 Speed and Connectivity 868
The Secure Sockets Layer 867 Directory-Level Security 867 Other Types of Security 868
839 The Other Players 840 What All the Foundations Missed 841
Security in Web Services 866
Why Web Services? 861 How This All Fits Together 862 State Management for XML Web Services 862 Using DNS As a Model 863
Architecting with Web Services 861
858 System.Web.Services.Description Namespace 859 System.Web.Services.Discovery Namespace 860 System.Web.Services.Protocols Namespace 860
858 System.Web.Services Namespace
Using Visual Studio 2005 to Build Web Services 848 Visual Basic and System.Web.Services
Building a Web Service 844 A Realistic Example 848
Summary 898 xxii Contents Chapter 25: Windows Services
899 Example Windows Services
Writing Events Using an Eventlog 922 Creating a FileSystemWatcher 923
Web Requests (and Responses) 935 Simplifying Common Web Requests with WebClient 952
The System.Net Namespace 935
933 Ports: They’re Not Just for Ships 934 Firewalls: Can’t Live with Them, Can’t Live without Them 934
Getting Your Message Across: Protocols, Addresses, and Ports 931 Addresses and Names
Chapter 26: Network Programming 931
Summary 929
To Debug a Service 927
Debugging the Service 927
Custom Commands 919 Passing Strings to a Service 921 Creating a File Watcher 922
899 Characteristics of a Windows Service 900 Interacting with Windows Services 901 Creating a Windows Service 902
More About ServiceController 919
The ServiceController Class 916 Integrating a ServiceController into the Example 917
Communicating with the Service 915
Creating a Performance Counter 912 Integrating the Counter into the Service 914 Changing the Value in the Performance Counter 914
Monitoring a Performance Counter 912
Installing the Service 910 Starting the Service 910 Uninstalling the Service 911
Creating a Windows Service with Visual Basic 906 Creating a Counter Monitor Service 907
The .NET Framework Classes for Windows Services 902 Other Types of Windows Services 905
Creating Your Own Web Server with HttpListener 955 Summary 963
Contents
965 Sockets 969
Building the Application 970 Creating Conversation Windows 972 Sending Messages 980 Shutting Down the Application 986
Using Internet Explorer in Your Applications 990 Windows Forms and HTML — No Problem!
991
Summary 1000
Appendix A: The Visual Basic Compiler 1001
Appendix B: Visual Basic Resources 1017Index 1019
Introduction
In 2002, Visual Basic took the biggest leap in innovation since it was released, with the introduction of Visual Basic .NET (as it was renamed). After more than a decade, Visual Basic was overdue for a major overhaul. But .NET goes beyond an overhaul. It changes almost every aspect of software development.
From integrating Internet functionality to creating object-oriented frameworks, Visual Basic .NET chal- lenged traditional VB developers to learn dramatic new concepts and techniques. 2005 brings us an enhanced Visual Basic language (renamed this time Visual Basic 2005). New features have been added that cement this language’s position as a true object-oriented language. With Visual Basic 2005, it is still going to be a challenge for the traditional VB6 developers to learn, but it is an easy road and books like this are here to help you on your path. First, it’s necessary to learn the differences between Visual Basic 2005 and the older versions. In some cases, the same functionality is implemented in a different way. This was not done arbitrarily — there are good reasons for the changes. But you must be prepared to unlearn old habits and form new ones. Next, you must be open to the new concepts. Full object orientation, new component techniques, new visual tools for both local and Internet interfaces — all of these and more must become part of your skill set to effectively develop applications in Visual Basic. In this book, we cover Visual Basic virtually from start to finish. We begin by looking at the .NET Framework and end by looking at the best practices for deploying .NET applications. In between, we look at everything from database access to integration with other technologies such as XML, along with investigating the new features in detail. You will see that Visual Basic 2005 has emerged as a powerful yet easy-to-use language that will allow you to target the Internet just as easily as the desktop.
The Impor tance of V isual Basic
Early in the adoption cycle of .NET, Microsoft’s new language, C#, got the lion’s share of attention. But as .NET adoption has increased, Visual Basic’s continuing importance has also been apparent. Microsoft has publicly stated that they consider Visual Basic the language of choice for applications where devel- oper productivity is one of the highest priorities.
Future development of Visual Basic is emphasizing capabilities that enable access to the whole expanse of the .NET Framework in the most productive way, while C# development is emphasizing the experi- ence of writing code. That fits the traditional role of Visual Basic as the language developers use in the real world to create business applications as quickly as possible.
This difference is more than academic. One of the most important advantages of the .NET Framework is that it allows applications to be written with dramatically less code. In the world of business applica- tions, the goal is to concentrate on writing business logic and to eliminate routine coding tasks as much as possible. The value in this new world is not in churning out lots of code — it is in writing robust, use- ful applications with as little code as possible. Introduction
Visual Basic is an excellent fit for this type of development, which makes up the bulk of software devel- opment in today’s economy. And it will grow to be an even better fit as it is refined and evolved for exactly that purpose.
Who Is This Book For?
This book is written to help experienced developers learn about Visual Basic 2005. From those who are just starting the transition from earlier versions to those who have used Visual Basic for a while and need to gain a deeper understanding, this book provides a discussion on the most common program- ming tasks and concepts you need.
Professional Visual Basic 2005 offers a wide-ranging presentation of Visual Basic concepts, but the .NET
Framework is so large and comprehensive that no single book can cover it all. The most important area in which this book does not attempt to be complete is Web development. While chapters discussing the basics of browser-based programming in Visual Basic are included, professional Web developers should instead refer to Professional ASP.NET 2.0 (Wrox Press).
What You Need to Use This Book
Although, it is possible to create Visual Basic applications using the command-line tools contained in the .NET Framework SDK, you will need Visual Studio 2005 (Professional or higher), which includes the .NET Framework SDK, to get the most out of this book. You may use Visual Studio .NET 2002 or Visual Studio 2003 instead, but there may be cases where much of the lessons will just not work because func- tionalities and capabilities will not be available in these older versions.
In addition: ❑ Some chapters make use of SQL Server 2005. However, you can also run the example code using Microsoft’s SQL Express, which ships with Visual Studio 2005.
❑ Several chapters make use of Internet Information Services (IIS). IIS ships with Windows 2003 Server, Windows 2000 Server, Windows 2000 Professional, and Windows XP, although it is not installed by default.
❑
Chapter 21 makes use of MSMQ to work with queued transactions. MSMQ ships with Windows 2003 Server, Windows 2000 Server, Windows 2000 Professional, and Windows XP, although it is not installed by default.
What Does This Book Cover?
much it changes application development. You gain an understanding of why you need .NET by looking at what’s wrong with the current development technologies, including COM and the DNA architectural model. Then, we look at how .NET corrects the drawbacks by using the common language runtime (CLR).
xxvi
Introduction
Chapter 2, “Introducing Visual Basic 2005 and Visual Studio 2005” — This chapter provides a first look
at a Visual Basic application. As we develop this application, you’ll take a tour of some of the new fea- tures of Visual Studio 2005.
Chapter 3, “Variables and Types” — This chapter introduces many of the types commonly used in Visual Basic. The main goal of this chapter is to familiarize you with value and reference types and to
help those with a background in VB6 understand some of the key differences in how variables are defined in Visual Basic.
Chapter 4, “Object Syntax Introduction” — This is the first of three chapters that explore object-
oriented programming in Visual Basic. This chapter will define objects, classes, instances, encapsulation, abstraction, polymorphism, and inheritance.
Chapter 5, “Inheritance and Interfaces” — This chapter examines inheritance and how it can be used
within Visual Basic. We create simple and abstract base classes and demonstrate how to create base classes from which other classes can be derived.
Chapter 6, “The Common Language Runtime” — This chapter examines the core of the .NET platform,
the common language runtime (CLR). The CLR is responsible for managing the execution of code com- piled for the .NET platform. We cover versioning and deployment, memory management, cross-language integration, metadata, and the IL Disassembler.
Chapter 7, “Applying Objects and Components” — This chapter puts the theory of Chapters 4 and 5
into practice. The four defining object-oriented concepts (abstraction, encapsulation, polymorphism, inheritance) are discussed, and we explain how these concepts can be applied in design and develop- ment to create effective object-oriented applications.
Chapter 8, “Generics” — This chapter focuses on one of the biggest enhancements to Visual Basic in this
version — generics. Generics enables you to make a generic collection that is still strongly typed — pro- viding fewer chances for errors, increasing performance, and giving you Intellisense features when you are working with your collections.
Chapter 9, “Namespaces” — This chapter introduces namespaces and their hierarchical structure. An
explanation of namespaces and some common ones are given. In addition, you learn how to create new namespaces, and how to import and alias existing namespaces within projects. This chapter also looks at the new My namespace that was made available in Visual Basic 2005.
Chapter 10, “Exception Handling and Debugging” — This chapter covers how error handling and debugging work in Visual Basic 2005 by discussing the CLR exception handler and the new Try . . .
Catch . . . Finally structure. We also look at error and trace logging, and how you can use these meth-
ods to obtain feedback on how your program is working. Chapter 11, “Data Access with ADO.NET 2.0” — This chapter focuses on what you will need to knowabout the ADO.NET object model to be able to build flexible, fast, and scalable data access objects and applications. The evolution of ADO into ADO.NET is explored, and the main objects in ADO.NET that you need to understand in order to build data access into your .NET applications are explained. Introduction
Chapter 12, “Using XML in Visual Basic 2005” — This chapter presents the features of the .NET Framework that facilitate the generation and manipulation of XML. We describe the .NET Framework’s XML-related namespaces, and a subset of the classes exposed by these namespaces is examined in detail. This chapter also touches on a set of technologies that utilize XML, specifically ADO.NET and SQL Server. Chapter 13, “Security in the .NET Framework 2.0” — This chapter examines the additional tools and func-
tionality with regard to the security provided by .NET. Caspol.exe and Permview.exe , which assist in establishing and maintaining security policies, are discussed. The System.Security.Permissions namespace is looked at, and we discuss how it relates to managing permissions. Finally, we examine the
System.Security.Cryptography namespace and run through some code to demonstrate the capabilities of this namespace.
Chapter 14, “Windows Forms” — This chapter looks at Windows Forms, concentrating primarily on
forms and built-in controls. What is new and what has been changed from the previous versions of Visual Basic are discussed, along with the System.Windows.Forms namespace.
Chapter 15, “Windows Forms Advanced Features” — This chapter looks at some of the more advanced
features that are available to you in building your Windows Forms applications. Chapter 16, “Building Web Applications” — This chapter explores Web forms and how you can benefitfrom their use. Using progressively more complex examples, this chapter explains how .NET provides the power of Rapid Application Development (normally associated with Windows applications) for the development of Web applications.
Chapter 17, “ASP.NET 2.0 Advanced Features” — This chapter looks at a lot of the new and advanced
features that have been made available to you with the latest release of ASP.NET 2.0. Examples of items covered include cross-page posting, master pages, site navigation, personalization, and more.
Chapter 18, “Assemblies” — This chapter examines assemblies and their use within the CLR. The struc- ture of an assembly, what it contains, and the information it contains is examined. Chapter 19, “Deployment” — This chapter examines the manifest of the assembly, and its role in deploy-
ment will be looked at. We also look at what Visual Studio 2005 and the CLR have to offer you when you come to deploy your applications.
Chapter 20, “Working with Classic COM and Interfaces” — This chapter discusses COM and .NET
component interoperability, and what tools are provided to help link the two technologies. Chapter 21, “Enterprise Services” — This chapter explores the .NET component services — in particular, transaction processing and queued components.Chapter 22, “Threading” — This chapter explores threading and explains how the various objects in
the .NET Framework enable any of its consumers to develop multithreaded applications. We examine how threads can be created, how they relate to processes, and the differences between multitasking and multithreading.
Chapter 23, “XML Web Services” — This chapter looks at how to create and consume Web services