RTM’d today: Programming Microsoft ASP.NET MVC, Second Edition

662841cvr.inddGreetings. We’re happy to share that we’ve completed our work on Dino Esposito’s second edition of Programming Microsoft ASP.MVC (ISBN: 9780735662841; 464 pages), which fully updates Dino’s first edition for ASP.NET MVC 3. The book is currently available for pre-order, and it will be fully available later this month. When the book is available, we’ll post a chapter excerpt on this blog.

In this post we share the book’s chapter-level outline and an excerpt from the book’s Introduction so that you can get a sense of the book’s coverage. (You can get the book’s complete outline here.)

Contents at a Glance

Introduction xiii

PART I ASP.NET MVC FUNDAMENTALS
CHAPTER 1 ASP.NET MVC Controllers 3
CHAPTER 2 ASP.NET MVC Views 41
CHAPTER 3 The Model-Binding Architecture 103
CHAPTER 4 Input Forms 131

PART II ASP.NET MVC SOFTWARE DESIGN
CHAPTER 5 Aspects of ASP.NET MVC Applications 189
CHAPTER 6 Securing Your Application 227
CHAPTER 7 Design Considerations for ASP.NET MVC Controllers 253
CHAPTER 8 Customizing ASP.NET MVC Controllers 281
CHAPTER 9 Testing and Testability in ASP.NET MVC 327

PART III CLIENT-SIDE
CHAPTER 10 More Effective JavaScript 373

Index 415

Introduction

Get your facts first, and then you can distort them as much as you please.
—Mark Twain

Until late 2008, I was happy enough with Web Forms. I did recognize its weak points
and could nicely work around them with discipline and systematic application
of design principles. But a new thing called ASP.NET MVC was receiving enthusiastic
reviews by a growing subset of the ASP.NET community. So I started to consider ASP.
NET MVC and explore its architecture and potential while constantly trying to envision
concrete business scenarios in which to employ it. I did this for about a year. Then I
switched to ASP.NET MVC.

ASP.NET was devised in the late 1990s at a time when many companies in various
industry sectors were rapidly discovering the Internet. For businesses, the Internet was
a real breakthrough, making possible innovations in software infrastructure, marketing,
distribution, and communication that were impractical or impossible before. Built on
top of classic Active Server Pages (ASP), ASP.NET was the right technology at the right
time, and it marked a turning point for the Web industry as a whole. For years, being
a Web developer meant gaining a skill set centered on HTML and JavaScript and that
was, therefore, radically different from the skills required for mainstream programming,
which at the time was mostly based on C/C++, Java, and Delphi languages. ASP.NET
combined the productivity of a visual and RAD environment with a component-based
programming model. The primary goal of ASP.NET was to enable developers to build
applications quickly and effectively without having to deal with low-level details such
as HTTP, HTML, and JavaScript intricacies. That was exactly what the community loudly
demanded in the late 1990s. And ASP.NET is what Microsoft delivered to address this
request, exceeding expectations by a large extent.

Ten years later, today, ASP.NET is showing signs of age. The Web Forms paradigm
still allows you to write functional applications, but it makes it harder and harder to
stay in sync with new emerging standards, including both W3C recommendations and
de facto industry standards. Today’s sites raise the bar of features high and demand
things like full accessibility, themeability, Ajax, and browser independence, not to
mention support for new tags and features as those coming up with HTML 5 and the
fast-growing mobile space.

Today, you can still use Web Forms in one way or another to create accessible sites
that can be skinned with CSS, offer Ajax capabilities, and work nearly the same across
a variety of browsers. Each of these features, however, is not natively supported and
incorporated in ASP.NET Web Forms, and this contributes to making the resulting application
more fragile and brittle. For this reason, a new foundation for Web development
is needed. ASP.NET MVC is the natural follow-up for ASP.NET developers—even though
Web Forms will still be there and improved version after version to the extent that it is
possible.

This leads me to another thought. From what I can see, most people using Web
Forms are maintaining applications written for ASP.NET 2.0 and topped with some
Ajax extensions. Web Forms will continue to exist for legacy projects; I’m not really sure
that for new projects that the small changes we had in ASP.NET 4 and those slated for
ASP.NET 5.0 will really make a difference. The real big change is switching to ASP.NET
MVC. Again, that’s just the natural follow up for ASP.NET developers.

Who Should Read This Book

This book is not for absolute beginners, but I do feel it is a book for everyone else,
including current absolute beginners when they’re no longer beginners. The higher
your level of competency and expertise is, the less you can expect to find here that
adds value in your particular case. However, this book comes after a few years of real-world
practice, so I’m sure it has a lot of solutions that may appeal also the experts.
What I can say today is that there are aspects of the solutions presented in this book
that go beyond ASP.NET MVC 4, at least judging from the publicly available roadmap.

If you do ASP.NET MVC, I’m confident that you will find something in this book that
makes it worth the cost.

Assumptions

The ideal reader of this book fits the following profile to some degree. The reader has
played a bit with ASP.NET MVC (the version doesn’t really matter) and is familiar with
ASP.NET programming because of Web Forms development. The statement “Having
played a bit with ASP.NET MVC” raises the bar a bit higher than ground level and
specifically means the following:

  • The reader understands the overall structure of an ASP.NET MVC project (for
    example, what controllers and views are for).
  • The reader compiled a HelloWorld site and modified it a bit.
  • The reader can securely tweak a web.config or global.asax file.

Anything beyond this level of familiarity is not a contra-indication for using this
book. I built the book (and the courseware based on it) so that everyone beyond a
basic level of knowledge can find some value in it. Rest assured that the value a
seasoned architect can get out of it is different from the value the book has for an
experienced developer.

In addition, the book also works for everybody who is familiar with the MVC pattern
but not specifically with the ASP.NET platform. Clearly, readers with this background
won’t find in this book a step-by-step guide to the ASP.NET infrastructure, but once
they attain such knowledge from other resources (such as another recent book of mine
published by Microsoft Press, Programming Microsoft ASP.NET 4), they can get the
same value from reading this book as other readers.