Deciding Which Technologies and Tools To Use
When designing your application, you may need help choosing between different technologies or approaches. This page summarizes the choices and provides links to more information about application development with Visual Studio and the .NET Framework.
What Do You Want to Do with Visual Studio and the .NET Framework?
Create an Application
With a User Interface
Applications - for help deciding between Windows Forms and Web Forms, see Choosing Between Windows Forms and Web Forms. Additional details can be found on the following pages:
Controls - for more information, see Developing Windows Forms Controls at Design Time
Windows Forms Controls - for details, see Windows Forms Controls by Function
HTML server controls - for details, see HTML Server Controls
Web user control - for details, see ASP.NET User Controls Overview
Web custom control - for details, see Developing Custom ASP.NET Server Controls
Windows Presentation Foundation controls - for details see Control Library
Server-Based Components
Windows services - for details, see Monitoring Windows Services
Processes - use the Monitoring component - for details, see Monitoring and Managing Windows Processes
PerformanceCounter - for details, see Monitoring Performance Thresholds
EventLog - for details, see Logging Application, Server, and Security Events
File system - for details, see Reacting to File System Events
Messaging component - for details, see Using Messaging Components
Timers on the server - for details, see Creating Timer-Based Server Tasks
Timers on the client - for details, see Timer Component (Windows Forms)
Without an Interface
Executable
Command-line application - for details, see Default Project Templates in Visual Studio
Windows service (formerly known as an "NT service") - a long-running Windows executable - for details, see Windows Service Applications
Library
XML Web service - XML Web services are applications that can exchange interoperable messages in a loosely coupled environment, using standard protocols such as HTTP, XML, XSD, SOAP and WSDL. XML Web services can be accessed from a Web application, a Windows desktop application, or another XML Web service - for details, see Programming the Web with Web Services. To learn more about development with Web services in the Distributed System Designers, which are part of Visual Studio Team Edition for Architects, see Overview of ASP.NET Applications on Application Diagrams.
.NET component - for details, see Component Authoring
Create a Distributed Application
For a step-by-step example, see Designing Web Services Walkthroughs.
Create a Smart Device Application
Develop Windows CE- and Windows Mobile-based rich-client applications that run on devices such as Smartphones and Pocket PCs. For more information, see Smart Device Development and Design Considerations for Smart Device Development.
If you are targeting the browser on a cell phone, PDA (personal digital assistant), or pager, then use Mobile Web Forms - for details, see Creating ASP.NET Mobile Web Pages.
Create a Data-centric Application
If you ...
Are navigating between multiple, discrete tables of results ...
Are manipulating data from multiple sources (for example, from different databases, from XML files, spreadsheets, and so on, all in the same dataset) ...
Are exchanging data with other applications ...
Are reusing the same set of rows and intend to cache them (for example, sorting, searching, and filtering cached results) ...
Are doing a lot of processing per row ...
Are manipulating the data using XML operations such as XML transforms or XPath ...
Want ease of programming ...
Then use a dataset - for details, see Datasets in Visual Studio Overview.
Otherwise, use direct access (data commands and data readers) - for details, see Recommendations for Data Access Strategies.
For example, you would use data commands and data readers for:
Performing DDL commands
Performing updates or deletes based on a selection criteria
Programmatically inserting records that are not based on user interaction
Calling stored procedures to execute logic inside the server
Retrieving scalar values from the database
Processing a set of results in a forward only manner without updating and without caching the results
Processing a set of results too large to fit in memory
Language Integrated Query (LINQ)
LINQ builds query constructs into the Visual Basic and C# languages. For details, see Introduction to LINQ.
There are several LINQ providers:
LINQ to Objects, for use with in-memory collections.
LINQ to SQL, for use with data in SQL databases.
LINQ to XML, for use with XML. In addition, Visual Basic has additional functionality. For details, see XML in Visual Basic.
LINQ to DataSet, for use with ADO.NET datasets.
Web-based Data Applications
For details, see Creating Visual Web Developer Data Applications.
XML Web services are applications that can exchange interoperable messages in a loosely coupled environment, using standard protocols such as HTTP, XML, XSD, SOAP and WSDL. An XML Web service can be accessed from desktop applications (Windows Forms), Web applications, or other XML Web services. For details, see Programming the Web with Web Services.
Windows Forms-based Data Applications
Use Windows Forms - for details, see Creating Client Data Applications.
If you ...
Are performing DDL commands ...
Are calling stored procedures to execute logic inside the server ...
Are retrieving scalar values from the database ...
Are processing a set of results in a forward-only manner without displaying, updating, or caching the results ...
Are processing a set of results too large to fit in memory ...
Then use direct access (data commands and data readers) - for details, see Recommendations for Data Access Strategies
Otherwise, use a dataset - for details, Datasets in Visual Studio Overview.
For example, you would use a dataset if you:
Are binding results to a form to let the user view, insert, update, or delete records
Are navigating between multiple tables of results
Are manipulating data from multiple sources (for example, from different databases, from XML files, spreadsheets, and so on, all in the same dataset)
Are exchanging data with other applications
Are reusing the same set of rows (for example, sorting, searching, and filtering retrieved results)
Are manipulating the data using XML operations such as XML transforms or XPath
Smart Device-based Data Applications
For details, see Working with Data in Managed Device Projects.
Office-based Data Applications
For details, see Data in Office Solutions.
Create a Web Services Application
Windows Communication Foundation Web Services
To get started with Windows Communication Foundation Web services in Visual Studio, see Walkthrough: Creating and Accessing WCF Services.
XML Web Services
There are several walkthroughs to help you create an XML Web service. For details see Creating and Accessing Web Services Walkthroughs. Also see Accessing Web Services in Managed Code.
For a step-by-step example of accessing an XML Web service from a Windows application, see Walkthrough: Calling XML Web Services from Windows Forms.
For a step-by-step example of accessing an XML Web service from a Windows application, see Walkthrough: Accessing a Web Service Using Visual Basic or Visual C#.
For a step-by-step example of designing and evaluating the deployment of XML Web services in the Distributed System Designers, see Introductory Distributed System Designer Walkthroughs.
Create a Workflow Application
Windows Workflow Foundation is the programming model, engine, and tools for quickly creating workflow-enabled applications on Windows.
For an overview of the different types of workflow, see Windows Workflow Foundation Overview.
Create an Office Development Solution
Microsoft Visual Studio Tools for the Microsoft Office system (version 3.0) enables you to customize Microsoft Office documents and Microsoft Office Outlook using managed code.
For details about creating solutions using Office applications, see Common Tasks in Office Programming.
Create Custom Controls or Components
For details about working with Windows Forms controls (including securing applications, setting properties, handling events, anchoring controls, and so forth), see Windows Forms Controls.
For help deciding which way to create a control, see Control Type Recommendations.
Windows Forms Controls
For details, see Developing Windows Forms Controls at Design Time.
If you want to add to the functionality of an existing Windows Forms control, inherit directly from the Windows Forms control - for a step-by-step example, see Walkthrough: Inheriting from a Windows Forms Control with Visual Basic or Walkthrough: Inheriting from a Windows Forms Control with Visual C#.
If you want to combine existing controls into a new control, inherit from the UserControl class - for details, see How to: Inherit from the UserControl Class.
If you want to create a control from scratch, inherit from the Control class - for details, see How to: Inherit from the Control Class.
COM
Expose your .NET component to COM - for details, see Exposing .NET Framework Components to COM
Expose your COM component to the .NET Framework - for details, see Exposing COM Components to the .NET Framework
Components
XML Web service, which is technically not a component, but can be called from Windows applications, Web applications, or other XML Web services - for details, see Programming the Web with Web Services
.NET component - for details, see Component Authoring
Automate Tasks or Extend the Environment
For help deciding whether you need a macro, add-in, or wizard, see The Spectrum of Visual Studio Automation. In addition, also see Choosing the Appropriate Automation Approach.
Macro (Visual Basic only) - for details, see Automating Repetitive Actions by Using Macros
Add-in - for details, see How to: Create an Add-In
Wizard - for details, see Walkthrough: Creating a Wizard
For details, see Introduction to Project Extensibility
For advanced customization of the development environment, such as creating a new project type or a customized editor - see the "Visual Studio Integrator Program (VSIP)" section of The Spectrum of Visual Studio Automation
Build, Debug, or Test
To learn more about the Visual Studio build options available to you, see Building in Visual Studio.
For general information about debugging in Visual Studio, see Debugger Roadmap.
For details, see:
Profile an Application
For details, see Tracing and Instrumenting Applications.
Deploy an Application
For help choosing which deployment project type to use, see Choosing a Deployment Strategy and Setup and Deployment Projects.
Visual Studio solution. For details, see Publishing ClickOnce Applications.
Web Application For details, see Deployment of a Web Setup Project.
Web Services For details, see How to: Deploy Web Services in Managed Code.
Windows Applications For an example, see Walkthrough: Deploying a Windows-based Application.
NET component. For details, see Merge Module Projects. For a step-by-step example, see Walkthrough: Installing Shared Components Using Merge Modules.
ActiveX control For details, see Cab File Projects. For a step-by-step example, see How to: Create or Add a Cab Project.
Evaluate the deployment of an application system into a target datacenter using Visual Studio Team Edition for Architects, see Walkthrough: Validating an Application System for Deployment and Evaluating System Deployment with Deployment Designer.
Upgrade from a Previous Version
Visual Basic. For details, see Upgrading Applications Created in Previous Versions of Visual Basic.
C++. For details, see Porting and Upgrading Programs
Learn about Features
What's New
What's New in Visual Studio 2008
What's New in Smart Device Projects
Changes in Visual C++ 2005 and Earlier Editions
What's New in Visual Studio Tools for Office
What's New in Visual Database Tools
What's New in ASP.NET and Web Development
What's New in the .NET Framework
Samples
Visual Basic Sample Applications