Introduction
So far, we have been making our way through most of the available features that can be leveraged to exchange real-time client/server messages, and at the same time we've been analyzing what SignalR delivers in order to monitor our connections and keep them under control. In this chapter, we'll be putting messaging features aside and concentrating on what we can do to solve common but orthogonal problems, which are key when moving from playground projects to real-world applications that have to deliver value in an efficient manner. Among other things, we'll see more about error management, talk about authentication and authorization, go through the different mechanisms available to scale and optimize our applications, and finally hook into SignalR's available extensibility points to show how to solve interesting and relevant infrastructural issues.