CHAPTER 1

image

Putting the ASP.NET Platform in Context

The ASP.NET platform was originally developed for use with Web Forms, and support for the MVC framework was added later. The ASP.NET platform is full of rich and useful features, but most guides to the MVC framework assumed that programmers have experience in Web Forms development and already know what the platform is capable of doing. That was a reasonable assumption when the MVC framework was new, but a new generation of ASP.NET developers has jumped right in with MVC without using Web Forms and—by implication—the features that the ASP.NET platform provides.

This book corrects the problem, detailing the features of the ASP.NET platform for the MVC framework developer who has no Web Forms experience (and no desire to acquire any). Throughout this book, I show you how the ASP.NET platform underpins the MVC framework and how you can take advantage of the platform to improve your MVC applications.

You don’t need to know how the ASP.NET platform works to build MVC framework applications, but you will want to know when you learn just how much functionality is available and how it can help simplify application development, customize the way that the MVC framework operates, and scale up applications to larger numbers of users, both for local and cloud-deployed applications.

image Note  This book is not an MVC framework tutorial, and I assume you have a basic understanding of MVC and web application development in general. If you are new to the MVC framework, then start by reading my Pro ASP.NET MVC 5 book, which is also published by Apress.

What Is the ASP.NET Platform?

ASP.NET was originally synonymous with Web Forms, which aims to make the web application development experience as similar as possible to developing a traditional desktop application and to abstract away the details of HTML and HTTP.

Web Forms has achieved remarkable market penetration despite having a reputation for producing hard-to-maintain applications and being bandwidth hungry. Microsoft continually improves and updates Web Forms—and it is still a widely used technology—but the broad development trend is away from abstraction and toward embracing the stateless nature of HTTP. To remain current in the web development world, Microsoft extended ASP.NET to include the MVC framework and, more recently, SignalR and Web API.

These technologies have disparate natures. The MVC framework is an alternative to Web Forms for building complete web applications (one I assume you are familiar with if you are reading this book). SignalR uses an HTML5 feature called web sockets to enable real-time communication between a browser and a server, and Web API is used to create web services and APIs that deliver JSON or XML content.

For all their differences, the ASP.NET technologies share some common characteristics, and this is where the ASP.NET platform starts to emerge. Features that are common across ASP.NET—such as the need to receive and process HTTP requests, for example—are implemented in a common foundation, which results in the technology stack shown in Figure 1-1.

9781430265412_Fig01-01.jpg

Figure 1-1. The ASP.NET foundation

The dotted line in the figure illustrates that some of the design decisions made when Web Forms was the only ASP.NET technology are still present in the ASP.NET foundation. For the most part, this just means that there are some odd method names in the foundation API, which I describe in Part 2 of this book.

The ASP.NET platform doesn’t just provide common features to the ASP.NET technology stack; it also provides a set of services that make it easier to write web applications, such as security, state data, and caching, as illustrated by Figure 1-2.

9781430265412_Fig01-02.jpg

Figure 1-2. The ASP.NET services

When using the MVC framework, you will usually consume these services from within controllers and models, but the services themselves are not part of the MVC framework and are available across the entire ASP.NET family of technologies.

I have drawn the ASP.NET services as being separate from the ASP.NET foundation, which makes them easier to describe but doesn’t accurately reflect the fact almost all of the services are integrated into the functionality provided by the foundation. This is important because the services rely on the way that the foundation handles HTTP requests in order to provide functionality to services, and it will start to make more sense once I get into the details of the ASP.NET request life cycle in Part 2 of this book.

The ASP.NET platform is the combination of the foundation and the services, and using the ASP.NET platform in MVC framework applications is the topic of this book, as illustrated by Figure 1-3.

9781430265412_Fig01-03.jpg

Figure 1-3. The relationship between the ASP.NET platform and the MVC framework

Don’t worry if the relationship between the MVC framework, the application components, and the ASP.NET platform don’t make immediate sense. Everything will start to fall into place as you learn about how the platform works and the features it provides.

What Do You Need to Know?

This book is for developers who have experience in web application development using C# and the MVC framework. You should understand the nature of HTTP, HTML, and CSS and be familiar with the basic features of Visual Studio 2013 (although I provide a quick primer for how I use Visual Studio in Chapter 2).

You will find this book hard to follow if you don’t have experience with the MVC framework, although there are plenty of examples that will help fill in the gaps. If you need to brush up on using the MVC framework, then I suggest my Pro ASP.NET MVC 5 for MVC development and The Definitive Guide to HTML5 for detailed coverage of HTML and CSS.

What’s the Structure of This Book?

This book is split into three parts, each of which covers a set of related topics.

Part 1: Getting Ready

Part 1 of this book provides the information you need to get ready for the rest of the book. It includes this chapter and a primer for the tools I use in this book and for the MVC pattern.

Part 2: The ASP.NET Platform Foundation

Part 2 of this book takes you through the foundation features of the ASP.NET platform, starting with the application and request life cycle and onto more advanced topics such as modules and handlers. This part of the book explains in detail how the ASP.NET platform handles requests and passes them to the MVC framework.

Part 3: The ASP.NET Services

Part 3 of this book describes the services that the ASP.NET platform provides to developers for use in MVC framework applications. These services range from hidden gems such as the configuration service to performance optimizations, such as data and content caching. I also describe the new ASP.NET Identity system, which is used to manage user authentication and authorization.

Are There Lots of Examples?

There are loads of examples. I demonstrate every important feature with code examples that you can add to your own projects, and I list the contents of every file in every example so that you get a complete picture of how each feature works. I use two code styles for examples. The first is when I list a complete file, as shown in Listing 1-1.

Listing 1-1.  A Complete Listing

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Users.Models;
 
namespace Users.Infrastructure {
    public class AppUserManager : UserManager<AppUser> {
 
        public AppUserManager(IUserStore<AppUser> store)
            : base(store) {
        }
 
        public static AppUserManager Create(
                IdentityFactoryOptions<AppUserManager> options,
                IOwinContext context) {
 
            AppIdentityDbContext db = context.Get<AppIdentityDbContext>();
            AppUserManager manager = new AppUserManager(new UserStore<AppUser>(db));
 
            return manager;
        }
    }
}

This listing is taken from Chapter 13—don’t worry about what it does at the moment. I usually start the chapter with complete listings; then, as I make changes to show you different features, I switch to partial listings, such as Listing 1-2.

Listing 1-2.  A Partial Listing

...
return HttpContext.GetOwinContext().GetUserManager<AppUserManager>();
...

This listing is also taken from Chapter 13 and shows a section of the file from Listing 1-1. I highlight the changes that I have made or the statements I want to draw your attention to. Using partial listings helps avoid endless repetitions of files that have small changes and lets me pack in more examples per page and per chapter.

Where Can You Get the Example Code?

All of the example code is contained in the text of this book, but you don’t have to type it in yourself. You can download a complete set of example projects, organized by chapter, without charge from Apress.com.

What Software Do You Need for This Book?

The most important software you need for this book is Visual Studio 2013, which contains everything you need to get started, including a built-in application server for running and debugging MVC applications, an administration-free edition of SQL Server for developing database-driven applications, tools for unit testing, and, of course, a code editor compiler and debugger.

There are several editions of Visual Studio, but I will be using the one that Microsoft makes available free of charge, called Visual Studio Express 2013 for Web. Microsoft adds some nice features to the paid-for editions of Visual Studio, but you will not need them for this book, and all of the figures that you see throughout this book have been taken using the Express edition, which you can download from www.microsoft.com/visualstudio/eng/products/visual-studio-express-products. There are several versions of Visual Studio 2013 Express, each of which is used for a different kind of development. Make sure that you get the Web version, which supports ASP.NET applications.

I follow a specific approach to creating ASP.NET projects: I don’t use the predefined templates that Microsoft provides, preferring to explicitly add all of the packages that I require. This means more work is required to get set up, but the benefit is that you end up with a much better understanding of how an application fits together. I provide a primer in Chapter 2 that gives an example of what you can expect.

image Tip  Visual Studio includes NuGet for downloading and installing software packages. I use NuGet throughout this book. So that you are sure to get the results that I demonstrate, I always specify the version of the NuGet package you require. If you are in doubt, download the source code for this book from www.apress.com, which contains complete projects for each chapter.

Preparing Visual Studio

Visual Studio Express contains all the features you need to create, test, and deploy an MVC framework application, but some of those features are hidden away until you ask for them. To enable all of the features, select Expert Settings from the Visual Studio Tools image Settings menu.

image Tip  Microsoft has decided that the top-level menus in Visual Studio should be all in uppercase, which means that the menu I just referred to is really TOOLS. I think this is rather like shouting, and I will capitalize menu names like Tools is here throughout this book.

The only other preparation is to disable the Browser Link feature when you create projects. Browser Link works by establishing a connection to the server that is used to receive notifications when the project contents change. In Part 2 of this book, I spend a lot of time talking about how requests are handled, and the extra requests sent by Browser Link skew the results. Disable Browser Link by clicking the button highlighted in Figure 1-4 and deselecting the Enable Browser Link menu item.

9781430265412_Fig01-04.jpg

Figure 1-4. Disabling Browser Link

Getting Google Chrome

For the majority of the examples in this book, I use Internet Explorer because I know that it is always available on Windows. There are occasions when I use Google Chrome, and you will need to download it from www.google.com/chrome if you want to re-create the examples.

I use Chrome for two main reasons. The first reason is because it supports simple emulation of mobile devices, which is useful in Chapter 7 when I show you how to detect device capabilities. The second reason is when I show you how to differentiate requests for services like caching in Chapter 12.

Summary

In this chapter, I outlined the content and structure of this book and set out the software that is required. The next chapter refreshes your basic skills with the MVC pattern and the MVC framework before I start digging into the details in Part 2.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.116.36.71