Chapter 12. Lightweight controllers

 

This chapter covers

  • Using lightweight controllers to simplify programming
  • Managing common view data without filter attributes
  • Deriving action results to apply common behavior
  • Using an application bus

In the previous chapter, we looked at using AutoMapper to carry some of the burden of the repetitive, manual labor associated with mapping view models. In this chapter, we’ll continue to investigate unburdening our controllers with simple refactoring and application architecture.

Do you remember those swollen and unwieldy Page_Load methods in Web Forms? Those methods can quickly grow out of control and stage a revolt against your codebase. Controller actions are dangerous too. Nestled snugly between the model and view, controllers are an easy place to put decision-making code, and they’re often mistaken for a good place to put that logic. And it’s quite convenient, at first. It just takes two lines of code to build a select list in an action method. And adding a filter attribute to the controller is a simple way to manage global data for a master page.

But these techniques don’t scale with greater complexity. Orchestrating a process to find a particular order, authorize it, transmit it to the shipping service, and email a receipt to the user, before redirecting the client to the confirmation page? That’s too much for a controller to handle.

12.1. Why lightweight controllers?

12.2. Techniques for simplifying controllers

12.3. Summary