Introduction to ASP.NET Web Applications in Visual Studio
Visual Studio .NET allows you to create applications that leverage the power of the World Wide Web. This includes everything from a traditional Web site that serves HTML pages, to fully featured business applications that run on an intranet or the Internet, to sophisticated business-to-business applications providing Web-based components that can exchange data using XML.
This topic provides an overview of the types of Web applications you can create in Visual Studio, how they relate to one another and to other Visual Studio technologies, and suggestions about where to learn more about the types of Web applications you want to create.
Note For details about the relative advantages of Web applications and Windows applications, see Windows Forms and Web Forms Recommendations.
Visual Studio ASP.NET Web Applications
A Visual Studio Web application is built around ASP.NET. ASP.NET is a platform — including design-time objects and controls and a run-time execution context — for developing and running applications on a Web server.
ASP.NET in turn is part of the .NET Framework, so that it provides access to all of the features of that framework. For example, you can create ASP.NET Web applications using any .NET programming language (Visual Basic, C#, Managed Extensions for C++, and many others) and .NET debugging facilities. You access data using ADO.NET. Similarly, you can access operating system services using .NET Framework classes, and so on.
ASP.NET Web applications run on a Web server configured with Microsoft Internet Information Services (IIS). However, you do not need to work directly with IIS. You can program IIS facilities using ASP.NET classes, and Visual Studio handles file management tasks such as creating IIS applications when needed and providing ways for you to deploy your Web applications to IIS.
Where Does Visual Studio Fit In?
As with any .NET application, if you have the .NET Framework, you can create ASP.NET applications using text editors, a command-line compiler, and other simple tools. You can copy your files manually to IIS to deploy the application.
Alternatively, you can use Visual Studio. When you use Visual Studio to create Web applications, you are creating essentially the same application that you could create by hand. That is, Visual Studio does not create a different kind of Web application; the end result is still an ASP.NET Web application.
The advantage of using Visual Studio is that it provides tools that make application development much faster, easier, and more reliable. These tools include:
- Visual designers for Web pages with drag-and-drop controls and code (HTML) views with syntax checking.
- Code-aware editors that include statement completion, syntax checking, and other IntelliSense features.
- Integrated compilation and debugging.
- Project management facilities for creating and managing application files, including deployment to local or remote servers.
If you have used Visual Studio before, these kinds of features will seem familiar, because they are similar to features that you get for creating applications in previous versions of Visual Basic and Visual C++. With Visual Studio .NET you can use these kind of features to create ASP.NET Web applications.
Elements of ASP.NET Web Applications
Creating ASP.NET Web applications involves working with many of the same elements you use in any desktop or client-server application. These include:
- Project management features When creating an ASP.NET Web application, you need to keep track of the files you need, which ones need to be compiled, and which need to be deployed.
- User interface Your application typically presents information to users; in an ASP.NET Web application, the user interface is presented in Web Forms pages, which send output to a browser. Optionally, you can create output tailored for mobile devices or other Web appliances.
- Components Many applications include reusable elements containing code to perform specific tasks. In Web applications, you can create these components as XML Web services, which makes them callable across the Web from a Web application, another XML Web service, or a Windows Form, for example.
- Data Most applications require some form of data access. In ASP.NET Web applications, you can use ADO.NET, the data services that are part of the .NET Framework.
- Security, performance, and other infrastructure features As in any application, you must implement security to prevent unauthorized use, test and debug the application, tune its performance, and perform other tasks not directly related to the application's primary function.
The following diagram provides an overview of how the pieces of ASP.NET Web applications fit together and fit into the broader context of the .NET Framework.
The sections below outline the different elements of an ASP.NET Web application and provide links to more information about how to work with each element in Visual Studio.
The information in this topic provides only an introduction to ASP.NET. For details about what ASP.NET is and what components are involved in an ASP.NET application, see Introduction to ASP.NET.
Project Management: ASP.NET Web Application Projects and Deployment
To work with an ASP.NET Web application using Visual Basic or Visual C#, you use the ASP.NET Web Application project template. As with other Visual Studio projects, a Web application project is a central repository for all the information required to design, run, and manage the application.
When you create a Web application project, Visual Studio creates the necessary files and folders on the server, sets the appropriate security settings on them, and creates the IIS application. For details, see ASP.NET Web Application Template.
Each Web application can maintain a Web.config file that follows the format and conventions of .NET configuration files. In ASP.NET, the configuration file allows you to establish project-specific settings for security, compilation options, tracing, error handling, and more.
For details about how to create and manage ASP.NET Web application projects in Visual Studio, see the following topics.
- Working with Web Projects Provides links to topics that describe Web application projects in Visual Studio.
- Web Forms Pages and Projects in Visual Studio Provides details about the types of files created in a Web Application project.
- Deployment of a Web Setup Project Provides an introduction to deploying Web applications.
- ASP.NET Configuration Describes the configuration file system and provides links to topics about the contents of the Web.config file.
User Interface: Web Forms and the ASP.NET Page Framework
You can create HTML pages and Web Forms pages as the user interface for your application. HTML pages are generally used for static content. In contrast, Web Forms pages give you a programmable interface that works much like a Visual Basic form, except that the user interface is rendered in a Web browser or other Web device.
Note You can use a Windows Form as the user interface in an application that calls XML Web services. For an example, see Walkthrough: Creating a Distributed Application.
Web Forms pages are built on the ASP.NET Page framework. Each Web Forms page is an object that derives from the ASP.NET Page class, which acts as a container for controls. The page actually consists of two files: an .aspx file that contains the UI elements (static HTML text and control elements) and a class file that contains the code that runs the page. For details, see Introduction to Web Forms Pages.
When users request a Web Forms page, the Page framework runs the Web Forms page object and all the individual controls on it. The output of the Page class and of the controls is HTML. For details, see Web Forms Page Processing.
Because the Web is inherently stateless — by default, components in a Web application are alive only long enough to process a single request — Web applications face challenges in preserving values as the user works with the application. To help, the Page framework includes facilities for managing state. These include page-based "view state" (a method for preserving values in controls) and access to non-page-based state facilities such as Session state (user-specific) and Application state (global to the application). For details, see Web Forms State Management.
The Page framework supports a set of controls you can use to program user interaction with your Web Forms pages. User actions in the form are captured and processed by the Page framework in a way that lets you treat them as standard events. You can choose from a large selection of controls available in Visual Studio. In addition, you can create your own custom controls. For details, see Introduction to Web User Controls and Developing ASP.NET Server Controls.
Note You can also create output for mobile devices. To do so, you use the same ASP.NET page framework, but you create Mobile Web Forms instead of Web Forms pages and use controls specifically designed for mobile devices. For details, see Creating ASP.NET Mobile Wep Applications.
For details about Web Forms pages and how to work with them in Visual Studio, see the following topics:
- Web Forms Pages Lists topics that provide an overview of Web Forms, including background on ASP.NET and on the Web Forms code model.
- Creating and Managing Web Forms Pages Provides information on how to create, add, and manage Web Forms pages.
- Programming Web Forms Provides information on the specific aspects of programming in a Web Forms environment.
Web-based Components: XML Web Services
An XML Web service is a component that can be called over a TCP/IP network by other applications. It performs a specific function — anything from calculations and credit card validation to complex order processing— and returns values to the calling application.
What makes XML Web services unique is that they can be called across the Web. XML Web services are invoked using HTTP or SOAP requests and exchange data with other components using XML. As such, they can form an integral part of ASP.NET Web applications, providing services not only to your applications, but also to any application that has Web access, making them ideal for business-to-business transactions.
For information about XML Web Services, how they work with ASP.NET applications, and how you can create them in Visual Studio, see Programming the Web with XML Web Services.
Web Application Data Access
Most ASP.NET Web applications involve at least some level of access to data. ASP.NET does not directly include data access facilities. Instead, Web applications use ADO.NET data services.
ADO.NET provides a complete framework for accessing and managing data from a variety of sources, including databases and XML files or streams. ADO.NET includes providers — classes that allow you to connect to data sources, execute commands, and read results. You can optionally keep data in a dataset, which is a disconnected, in-memory cache.
Data access in Web applications, whether in a Web Forms page or an XML Web service, introduces special challenges:
- Statelessness The components of Web applications usually do not preserve state, which makes it impractical to maintain live connections to a data source (or other resources).
- Scalability Because Web applications can have user loads that vary substantially over short periods of time, data access has to be designed with scalability in mind.
Visual Studio provides a variety of tools for working with data, including Toolbox support for data elements, various configuration wizards, and so on. The following topics provide information on data in general — that is, ADO.NET — as well as about using data in Web applications.
- Introduction to Data Access with ADO.NET Provides general information on the design of ADO.NET and some implications of the ADO.NET model for application development.
- Introduction to Data Access in Web Forms Pages Provides an overview of data access in Web applications, including information about some of the common issues associated with Web application data access.
Web Application Infrastructure: Security, Performance, and More
In addition to giving you the means to create user interface elements and callable components, ASP.NET provides a context for those elements to run in. For example, ASP.NET communicates with IIS to handle requests for Web Forms pages and XML Web services, parse the files, call related components, and so on.
Much of this work occurs beneath the surface, at a level where you do not typically need to program when you are creating desktop applications.
Note Visual Studio provides limited support for working with ASP.NET infrastructure features. For example, you can edit the Web application configuration file (Web.config) using the Visual Studio Code Editor. But the .NET Framework is both pluggable and extensible, providing you with low-level access if necessary.
There are other aspects of Web applications that you must often contend with that are part of the application's infrastructure. These include:
- Security You frequently have to authenticate and authorize users of your Web application. There are special problems associated with security in a Web application, because users are getting access to server-based resources and because you have very little control over the client side of the application (the browser or mobile device). ASP.NET includes security features that you can configure and program against in your Web application.
- Performance and optimization You can tune your application's performance by caching pages and data. ASP.NET maintains an output cache that stores pages that have been requested before; by specifying caching settings, you can control how long pages are cached and under what circumstances they are refreshed.
- Tracing Because Web applications run on the server — often a remote server — they do not have output other than the application output (a Web Forms page, for example). ASP.NET therefore gives you the opportunity to include trace information directly in a Web Forms page. For details about adding tracing to ASP.NET Web applications, with links to topics that address specific trace procedures, see ASP.NET Trace.
For details about Web Forms security, see the following topics:
- Introduction to Web Application Security Describes the issues associated with security in Web Forms.
- Overview of Web Application Security Threats Provides a high-level discussion of the types of security vulnerability that Web applications are subject to.
- Basic Security Practices for Web Applications Provides a list of security recommendations that apply to even the simplest Web application.
- ASP.NET Web Application Security Provides an overview of security in ASP.NET, with links to a variety of topics about ASP.NET security architecture, security scenarios, and so on.
- Access Permissions for Web Applications Provides an introduction to the security context in which ASP.NET applications run.
- ASP.NET Configuration Explains a Web application configuration file system, which is where you make many security settings.
For details about Web Forms performance and optimization, see the following topics:
- ASP.NET Caching Features Provides an overview of the ASP.NET output cache facility for tuning performance, and links to caching procedures.
- ASP.NET Configuration Explains a Web application configuration file system, which is where you make many performance settings.
- Application Center Web site (http://www.microsoft.com/applicationcenter/) Provides information about testing Web application performance.