Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

C sharp Network Programming
PREMIUM
Số trang
628
Kích thước
4.3 MB
Định dạng
PDF
Lượt xem
1590

C sharp Network Programming

Nội dung xem thử

Mô tả chi tiết

C# Network Programming

by Richard Blum ISBN:0782141765

Sybex © 2003 (647 pages)

This book helps newcomers get started with a look at the basics of network programming as they

relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution.

Table of Contents

C# Network Programming

Introduction

Part I - Network Programming Basics

Chapter 1 - The C# Language

Chapter 2 - IP Programming Basics

Chapter 3 - C# Network Programming Classes

Chapter 4 - DNS and C#

Part II - Network Layer Programing

Chapter 5 - Connection-Oriented Sockets

Chapter 6 - Connectionless Sockets

Chapter 7 - Using The C# Sockets Helper Classes

Chapter 8 - Asynchronous Sockets

Chapter 9 - Using Threads

Chapter 10 - IP Multicasting

Part III - Application Layer Programming Examples

Chapter 11 - ICMP

Chapter 12 - SNMP

Chapter 13 - SMTP

Chapter 14 - HTTP

Chapter 15 - Active Directory

Chapter 16 - Remoting

Chapter 17 - Security

Index

List of Figures

List of Tables

List of Listings

List of Sidebars

C# Network Programming

by Richard Blum ISBN:0782141765

Sybex © 2003 (647 pages)

This book helps newcomers get started with a look at the basics of network programming as they

relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution.

Table of Contents

C# Network Programming

Introduction

Part I - Network Programming Basics

Chapter 1 - The C# Language

Chapter 2 - IP Programming Basics

Chapter 3 - C# Network Programming Classes

Chapter 4 - DNS and C#

Part II - Network Layer Programing

Chapter 5 - Connection-Oriented Sockets

Chapter 6 - Connectionless Sockets

Chapter 7 - Using The C# Sockets Helper Classes

Chapter 8 - Asynchronous Sockets

Chapter 9 - Using Threads

Chapter 10 - IP Multicasting

Part III - Application Layer Programming Examples

Chapter 11 - ICMP

Chapter 12 - SNMP

Chapter 13 - SMTP

Chapter 14 - HTTP

Chapter 15 - Active Directory

Chapter 16 - Remoting

Chapter 17 - Security

Index

List of Figures

List of Tables

List of Listings

List of Sidebars

Back Cover

On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network

Programming, and you’ll find that building network applications is easier and quicker than ever.

This book helps newcomers get started with a look at the basics of network programming as they relate to C#,

including the language’s network classes, the Winsock interface, and DNS resolution. Spend as much time here as you

need, then dig into the core topics of the network layer. You’ll learn to make sockets connections via TCP, and

“connectionless” connections via UDP. You’ll also discover just how much help C# gives you with some of your

toughest chores, such as asynchronous socket programming, multithreading, and multicasting.

Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of

detailed application-layer programming examples that show you how to work with real protocols and real network

environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to

communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to

query and modify Active Directory entries.

Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For

example, you’ll learn two ways to share application methods across the network: using Web services and remoting.

You’ll also master the security features intrinsic to C# and .NET—features that stand to benefit all of your

programming projects.

About the Author

Richard Blum has spent 14 years as a network and system administrator for the US Department of Defense, supporting

a large network of workstations and servers. He holds a BS in Electrical Engineering and an MS in Management

Information Systems, both from Purdue University.

C# Network Programming

Richard Blum

Associate Publisher: Joel Fugazzotto

Acquisitions Editor: Denise S. Lincoln

Developmental Editor: Carol Henry

Editor: Sally Engelfried

Production Editor: Erica Yee

Technical Editor: Dan Frumin

Graphic Illustrator: Jeff Wilson, Happenstance Type-O-Rama

Electronic Publishing Specialists: Scott Benoit, Judy Fung

Proofreaders: Emily Hsuan, Dave Nash, Laurie O’Connell, Yariv Rabinovitch, Nancy Riddiough

Indexer: Ted Laux

Cover Designer: Carol Gorska, Gorska Design

Cover Photographer: Carlos Navajas, The Image Bank

Copyright © 2003 SYBEX Inc., 1151 Marina Village Parkway, Alameda, CA 94501. World rights reserved. No

part of this publication may be stored in a retrieval system, transmitted, or reproduced in any way, including

but not limited to photocopy, photograph, magnetic, or other record, without the prior agreement and written

permission of the publisher.

Library of Congress Card Number: 2002111958

ISBN: 0-7821-4176-5

SYBEX and the SYBEX logo are either registered trademarks or trademarks of SYBEX Inc. in the United

States and/or other countries.

Screen reproductions produced with FullShot 99. FullShot 99 © 1991-1999 Inbit Incorporated. All rights

reserved.FullShot is a trademark of Inbit Incorporated.

Internet screen shot(s) using Microsoft Internet Explorer Version 6 reprinted by permission from Microsoft

Corporation.

TRADEMARKS: SYBEX has attempted throughout this book to distinguish proprietary trademarks from

descriptive terms by following the capitalization style used by the manufacturer.

The author and publisher have made their best efforts to prepare this book, and the content is based upon

final release software whenever possible. Portions of the manuscript may be based upon pre-release

versions supplied by software manufacturer(s). The author and the publisher make no representation or

warranties of any kind with regard to the completeness or accuracy of the contents herein and accept no

liability of any kind including but not limited to performance, merchantability, fitness for any particular purpose,

or any losses or damages of any kind caused or alleged to be caused directly or indirectly from this book.

Manufactured in the United States of America

10 9 8 7 6 5 4 3 2 1

Software License Agreement: Terms and Conditions

The media and/or any online materials accompanying this book that are available now or in the future contain

programs and/or text files (the “Software”) to be used in connection with the book. SYBEX hereby grants to

you a license to use the Software, subject to the terms that follow. Your purchase, acceptance, or use of the

Software will constitute your acceptance of such terms.

The Software compilation is the property of SYBEX unless otherwise indicated and is protected by copyright

to SYBEX or other copyright owner(s) as indicated in the media files (the “Owner(s)”). You are hereby granted

a single-user license to use the Software for your personal, noncommercial use only. You may not

reproduce, sell, distribute, publish, circulate, or commercially exploit the Software, or any portion thereof,

without the written consent of SYBEX and the specific copyright owner(s) of any component software included

on this media.

In the event that the Software or components include specific license requirements or end-user agreements,

statements of condition, disclaimers, limitations or warranties (“End-User License”), those End-User Licenses

supersede the terms and conditions herein as to that particular Software component. Your purchase,

acceptance, or use of the Software will constitute your acceptance of such End-User Licenses.

By purchase, use or acceptance of the Software you further agree to comply with all export laws and

regulations of the United States as such laws and regulations may exist from time to time.

Reusable Code in This Book

The author(s) created reusable code in this publication expressly for reuse by readers. Sybex grants readers

limited permission to reuse the code found in this publication, and available for download from our website so

long as the author(s) are attributed in any application containing the reusable code and the code itself is

never distributed, posted online by electronic transmission, sold, or commercially exploited as a stand-alone

product.

Software Support

Components of the supplemental Software and any offers associated with them may be supported by the

specific Owner(s) of that material, but they are not supported by SYBEX. Information regarding any available

support may be obtained from the Owner(s) using the information provided in the appropriate read.me files

or listed elsewhere on the media.

Should the manufacturer(s) or other Owner(s) cease to offer support or decline to honor any offer, SYBEX

bears no responsibility. This notice concerning support for the Software is provided for your information only.

SYBEX is not the agent or principal of the Owner(s), and SYBEX is in no way responsible for providing any

support for the Software, nor is it liable or responsible for any support provided, or not provided, by the

Owner(s).

Disclaimer

SYBEX makes no warranty or representation, either expressed or implied, with respect to the Software or its

contents, quality, performance, merchantability, or fitness for a particular purpose. In no event will SYBEX, its

distributors, or dealers be liable to you or any other party for direct, indirect, special, incidental, consequential,

or other damages arising out of the use of or inability to use the Software or its contents even if advised of the

possibility of such damage. In the event that the Software includes an online update feature, SYBEX further

disclaims any obligation to provide this feature for any specific duration other than the initial posting.

The exclusion of implied warranties is not permitted by some states. Therefore, the above exclusion may not

apply to you. This warranty provides you with specific legal rights; there may be other rights that you may have

that vary from state to state. The pricing of the book with the Software by SYBEX reflects the allocation of risk

and limitations on liability contained in this agreement of Terms and Conditions.

Shareware Distribution

This Software may contain various programs that are distributed as shareware. Copyright laws apply to both

shareware and ordinary commercial software, and the copyright Owner(s) retains all rights. If you try a

shareware program and continue using it, you are expected to register it. Individual programs differ on details

of trial periods, registration, and payment. Please observe the requirements stated in appropriate files.

Copy Protection

The Software in whole or in part may or may not be copy-protected or encrypted. However, in all cases,

reselling or redistributing these files without authorization is expressly forbidden except as specifically

provided for by the Owner(s) therein.

This book is dedicated to Sister Marie Imelda, C.S.C, who in the late 1970s fought and struggled to teach a

bunch of goofy high school kids how to program. Thanks, Sister. “Trust in the Lord with all your heart and

lean not on your own understanding; in all your ways acknowledge him, and he will make your paths

straight.” Prov. 3:5-6 (NIV)

Acknowledgments

First, all honor, glory, and praise goes to God, who through His Son, all things are possible, and who gives us

the gift of eternal life.

I would like to thank all the great people at Sybex for their help, guidance, and professionalism. Thanks to

Denise Santoro Lincoln, the Acquisitions Editor, for offering me the opportunity to write this book. Also, thanks

to Carol Henry, the Developmental Editor, for all her work guiding this book along and helping make my

paragraphs make sense.

Many thanks to Sally Engelfried, the Copy Editor, for turning my poor grammar into perfect sentences, and to

Dan Frumin, the Technical Editor, for going above and beyond the call of duty fixing my programs and

pointing out my technical blunders. Also, thanks to Carole McClendon at Waterside Productions for her help

in arranging this book for me.

Finally, I would like to thank my parents, Mike and Joyce Blum, for their dedication and support, and my wife

Barbara and daughters Katie Jane and Jessica for their faith, love, and understanding, especially while I was

writing this book.

The quotation on the bottom of the front cover is taken from the sixty-third chapter of Lao Tzu’s Tao Te Ching,

the classic work of Taoist philosophy. This particular verse is from the translation by D. C. Lau (copyright

1963) and communicates the idea that one should confront the difficult while it is still easy and accomplish a

great task by a series of small acts.

It is traditionally held that Lao Tzu lived in the fifth century B.C. in China, during the Chou dynasty, but it is

unclear whether he was actually a historical figure. It is said that he was a teacher of Confucius. The

concepts embodied in the Tao Te Ching influenced religious thinking in the Far East, including Zen Buddhism

in Japan. Many in the West, however, have wrongly understood the Tao Te Ching to be primarily a mystical

work; in fact, much of the advice in the book is grounded in a practical moral philosophy governing personal

conduct.

Introduction

Networks (and network programming) have come a long way over the past 20 years. In the early days of

network computing (the ’80s), network programming was left to the advanced programmer, who typically built

applications using the C programming language in (mostly) Unix environments. Now, networks are

everywhere, from large corporations to small home users. With so many computers connected together via

networks, network-aware applications are an accepted necessity. Existing applications must incorporate

network features to stay competitive in the marketplace, and adding network communication to applications is

essential. Network programs are used for everything from children’s games to advanced corporate database

systems.

Network programming has always been a key feature of the Microsoft Windows operating system.

Unfortunately, you’ve had to know advanced C or C++ programming concepts to utilize the network

programming features in Windows programs. Now, though, the .NET Framework languages simplify the task

of adding network features to your applications. The .NET libraries provide many network classes that can

integrate network programming.

As a network administrator, I’ve written many network programs using the C and Java languages for both

Windows and Unix platforms. Today’s network management and security requirements make it essential to

communicate with network devices and track workstations on the network. Trying to quickly write clean

network code can be difficult when you are working within the structure of the C socket APIs (especially in

WinSock), and running Java applications is often a painful experience due to slow processing speeds and

poor Windows support.

The C# language has solved many of my network programming problems by allowing me to quickly

prototype and deploy network applications using C# classes. Combining the C# Forms library to write the

graphical code with the C# Socket library to write the networking code makes creating professional network

applications simple. With C# network classes, what used to take a day to write often only takes an hour or

less.

Who Should Read This Book

Obviously, if you are a C# programmer who is interested in creating network programs, this book is

specifically intended to help you out. I’ve described each network C# class in detail, and you’ll find lots of

examples to help you implement the classes in your own work. If you have never before written a network

program, I’ve included useful explanations of the concepts and ideas behind network programming in

general, including common techniques for passing data between network devices.

You may already be familiar with writing network programs using other languages, such as C, C++, or Java. In

that case, you’ll be interested in seeing how easy it is to do this with the C# language.

If you are new to the C# language, the first chapter describes the basics of creating and compiling C#

programs. You may want to skip other chapters in the first part of the book, which discuss network

programming basics, and dive right into the C#-specific network programming classes.

How This Book Is Organized

This book is organized into four separate sections that cover a particular aspect of network programming.

Part I: Network Programming Basics

The first four chapters are intended for programmers just starting out in network programming and looking for

some background information about how network programming works and the pieces that are required for

network programming.

Chapter 1, “The C# Language,” provides some basic information for the reader new to C#, such as which C#

package to use for development work and how to compile C# programs.

Chapter 2, “IP Programming Basics,” demonstrates how network programming has evolved from the Unix

world to the world of Windows, via the WinSock interface, and how .NET uses the WinSock interface to

access network resources.

Chapter 3, “C# Network Programming Classes,” offers a quick introduction to the entire C# network libraries

and shows the basic formats of the classes.

Chapter 4, “DNS and C#,” rounds out the introductory section by showing network novices how DNS can

resolve host addresses and how to use the C# DNS classes.

Part II: Network Layer Programming

The next group of chapters presents the core of network programming topics in the book. Each of these

chapters discusses a major topic using in creating C# network programs.

Chapter 5, “Connection-Oriented Sockets,” starts the discussion of network programming by introducing

stream programming using TCP. In addition to the standard C# Socket class used for stream programming,

common pitfalls are discussed to help you create stream programs that will work on real networks.

Chapter 6, “Connectionless Sockets,” discusses how to use the Socket class to create UDP applications. In

addition to showing you how to create UDP applications, this chapter also discusses pitfalls related to UDP

programming and shows examples of creating applications that will withstand the problems inherent in real

networks.

Chapter 7, “Using the C# Socket Helper Classes,” discusses the C# TcpClient, TcpListener, and

UdpClient classes. These are special classes in .NET to help programmers create network programs with

minimal effort. This chapter also discusses the basics of sending different data types across the network.

Chapter 8, “Asynchronous Socket Programming,” discusses the technique of using asynchronous

programming (prevalent in Windows programs) within the network programming world.

Chapter 9, “Using Threads,” presents information for using multi-threaded application techniques in network

programs. This technology is often used in server applications that must service multiple clients at the same

time.

Chapter 10, “IP Multicasting,” describes how to use broadcasting and multicasting to send packets to multiple

clients, cutting down on network bandwidth.

Part III: Application Layer Programming Examples

The last part of the book describes specific network applications and how to implement them using the C#

network classes.

Chapter 11, “ICMP,” shows how to use C# raw sockets to implement a protocol-specific application. The

common ping and traceroute programs are shown within the C# network programming context.

Chapter 12, “SNMP,” describes how to write network management applications using C#. SNMP allows you

to communicate with many devices on the network to retrieve network statistics. This chapter shows specific

examples of reading a vendor MIB sheet and creating a C# application to extract the MIB data from the

network device.

Chapter 13, “SMTP,” describes the C# e-mail classes and shows examples of using them to send mail using

SMTP to remote mail servers. Also, an example of using other mail protocols (such as POP3) is shown.

Chapter 14, “HTTP,” presents the C# web classes and how you can use them to create web-enabled C#

applications. Also, .NET web services , and how you can use them to host your application methods on an IIS

server, are discussed.

Chapter 15, “Active Directory,” shows the C# classes for contacting Microsoft Active Directory servers.

Examples are presented that show how to query, change, add, and delete entries in the Active Directory.

Chapter 16, “Remoting,” discusses the .NET concept of remoting, allowing an application to share methods

with clients across the network. Examples are shown that demonstrate how to create both a remoting server

and client.

Chapter 17, “Security,” closes out the book by describing how the .NET Framework handles program

security, and how you can implement security in your network applications using encryption techniques.

Part II: Network Layer Programming

The next group of chapters presents the core of network programming topics in the book. Each of these

chapters discusses a major topic using in creating C# network programs.

Chapter 5, “Connection-Oriented Sockets,” starts the discussion of network programming by introducing

stream programming using TCP. In addition to the standard C# Socket class used for stream programming,

common pitfalls are discussed to help you create stream programs that will work on real networks.

Chapter 6, “Connectionless Sockets,” discusses how to use the Socket class to create UDP applications. In

addition to showing you how to create UDP applications, this chapter also discusses pitfalls related to UDP

programming and shows examples of creating applications that will withstand the problems inherent in real

networks.

Chapter 7, “Using the C# Socket Helper Classes,” discusses the C# TcpClient, TcpListener, and UdpClient

classes. These are special classes in .NET to help programmers create network programs with minimal

effort. This chapter also discusses the basics of sending different data types across the network.

Chapter 8, “Asynchronous Socket Programming,” discusses the technique of using asynchronous

programming (prevalent in Windows programs) within the network programming world.

Chapter 9, “Using Threads,” presents information for using multi-threaded application techniques in network

programs. This technology is often used in server applications that must service multiple clients at the same

time.

Chapter 10, “IP Multicasting,” describes how to use broadcasting and multicasting to send packets to multiple

clients, cutting down on network bandwidth.

Keeping Up to Date

All of the examples in this book have been created and compiled using the .NET Framework 1.0 package.

Each of the examples willeasily compile using any of the Microsoft Visual Studio packages (including Visual

C#).

At the time of this writing (2002) the current version of the .NET Framework was version 1.0, with Service

Pack 1. Microsoft maintains the .NET Framework website at

http://www.microsoft.com/netframework, where all .NET announcements are posted.

Part I: Network Programming Basics

Chapter List

Chapter 1: The C# Language

Chapter 2: IP Programming Basics

Chapter 3: C# Network Programming Classes

Chapter 4: DNS and C#

Chapter 1: The C# Language

Overview

In its short history, the Microsoft .NET technology has quickly become a popular programming platform for

developing applications for Microsoft Windows workstations and servers. Although most of the media

attention has focused around the web application capabilities of .NET, there are many other features that are

useful to Windows programmers.

One of those features is the new C# programming language, developed specifically for .NET. C# is becoming

a widely used programming platform for programmers wanting to create both network-aware and stand￾alone applications for Windows systems. The language provides many resources to help create robust

Windows-based applications. Many programmers are migrating to the C# language to take advantage of

these resources.

Before learning the basics of network programming in C#, it is important that you understand the C#

programming environment, the fundamentals of .NET, and how to create and distribute C# applications. This

chapter shows how to create a C# development environment on your system and how to ensure that C#

applications you create will run on other Windows workstations and servers. Finally, I’ll present a brief

introduction to the C# language, along with some C# programming topics relevant to network programming.

All together, the concepts presented in this chapter will help you get ready for C# network programming.

Basics of .NET

The .NET group of programming languages differs from previous versions of Windows programming languages in the way programs are created and run on the Windows

systems. If you are not familiar with how C# programs operate, this section briefly describes the basics you should know to be able to deploy applications based on the .NET

technologies.

Common Language Runtime (CLR)

The core of the Microsoft .NET technology is the Common Language Runtime (CLR) environment . This environment enables programmers to create programs using a

multitude of programming languages and run them on any platform that supports the CLR. The idea of the CLR is to provide a middle layer of Application Program Interfaces

(APIs) that operate between the low-level Windows Win32 API functions and the application program code. By providing a common middle layer, Microsoft has given a larger

number of application languages access to core Windows technologies (such as network support).

The layout of how application programs run in the CLR environment is shown in Figure 1.1 . High-level applications written in various .NET languages, such as Visual Basic

.NET, Visual C++ .NET, Visual J# .NET, and of course Visual C# .NET, are compiled into a special intermediate language called Microsoft Intermediate Language (MSIL) .

The MSIL code is interpreted by the CLR as the program runs; MSIL runs on the host operating system as a normal executable program. Of course, legacy programs that do

not use the CLR can still directly access the low-level Windows Win32 APIs as before.

Figure 1.1: The Common Language Runtime (CLR) environment

This CLR model also pertains to other operating systems. Because the CLR is ported to other operating systems, .NET programs will be able to run without recompiling them

on the new host systems. Currently, Microsoft supports the Shared Source Common Language Interface (CLI) project (nicknamed Rotor), which ports the CLR environment

to the FreeBSD operating system. It is expected that the Rotor project will branch out to other operating systems as well. At the time of this writing you can get more

information about Rotor at the following website:

http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/901/msdncompositedoc.xml

For programs to run in the CLR, they must be compiled into the special MSIL format. The .NET C# compiler is used to convert C# language programs to MSIL code that runs

in the CLR environment. The next section describes the MSIL code.

MSIL Code

When you compile a C# program, it produces an executable file. However, this executable file is different from the ones you may be used to seeing produced from other

Windows compilers. Instead of a low-level assembly program that can run directly in Windows, this executable file contains two parts:

A stub assembly language program to start the CLR compiler

The MSIL code of the compiled application

The stub program starts the CLR just-in-time (JIT) compiler, which compiles the MSIL program code to native Win32 code that can be run on the system. Unlike native

Windows applications, which interact directly with the low-level Win32 API system, .NET applications rely on the .NET Framework CLR to run. Running a .NET application on

a system that does not have the .NET Framework installed will produce an error message like the one in Figure 1.2 . The .NET Framework is crucial to any .NET application,

whether it is running on a Windows workstation or server. Without it the MSIL code cannot run. Any Windows workstation or server expected to run .NET programs must have

the .NET Framework installed.

Figure 1.2: Trying to run a .NET application without the .NET Framework

Microsoft is committed to ensuring the .NET Framework will be installed on all future versions of the Windows OS. However, older versions of Windows must have the .NET

Framework manually installed. The following section includes instructions for installing the .NET Framework for a developer environment to allow you to create, compile, and

run .NET applications.

Installing a C# Development Environment

Before you can begin programming in C#, you must have a C# development environment—a system for

creating, compiling, and debugging C# programs. Unfortunately, one of the most stringent requirements for

.NET application development is the designation of OS platform to use for development. Currently, .NET

requires one of the following systems for full C# program development:

Windows NT 4 Workstation or Server (with Service Pack 6a)

Windows 2000 Professional or Server (with Service Pack 2)

Windows XP Home Edition or Professional

Programmers without access to any of these systems will not be able to develop C# programs—but there is a

solution to this, as will be explained later in the C# Runtime Environment section.

C# Development Options

Microsoft offers three development environments for C# developers. Each environment has its own set of

pros and cons. This section describes these C# development environments and how they differ.

Visual Studio .NET

Visual C# .NET

.NET Framework software development kit (SDK)

Note All of the example programs in this book can be compiled in any of the .NET development

environments. To simplify things, this book’s examples are shown using the .NET Framework

command-line compiler. This ensures that anyone can use the examples, no matter which

development environment you are using.

Visual Studio .NET

The Visual Studio .NET package is the flagship development product for Microsoft .NET. This Integrated

Development Environment (IDE) offers many features to assist your Windows application programming tasks.

Microsoft describes the Visual Studio package as “a rapid application development (RAD) tool, enabling

programmers to quickly code and debug .NET applications.” It includes a complete graphical environment for

creating Windows forms, typing code, and debugging programs. In addition to containing a fancy

development environment, Visual Studio also supports all the .NET programming languages—Visual Basic

.NET, Visual C++ .NET, Visual J# .NET, and Visual C# .NET. If you are looking at developing with all of the

.NET languages, the Visual Studio package is well worth the extra expense.

In Visual Studio .NET, applications can be created in a graphical environment using any of the four

programming languages. The IDE provides separate windows for developing code and for visually laying out

Window controls for the application, including text boxes, list boxes, buttons, and scrollbars. Visual Studio

.NET offers an easy way to create, test, and debug .NET applications, whether they are stand-alone Windows

applications or ASP.NET web pages.

There are several package levels for Visual Studio .NET, depending on your development requirements (and

budget). Each package level includes progressively more development functionality, and also comes with a

progressively higher price tag.

Tải ngay đi em, còn do dự, trời tối mất!