In computer science, separation of concerns (SoC) is the process of breaking a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors. Progress towards SoC is traditionally achieved through modularity and encapsulation, with the help of information hiding.
Dal libro Pro Asp.Net MVC 4 (pagina 375):
The problem with relying on route names to generate outgoing URLs ( @Html.RouteLink("Click me", "MyOtherRoute","Index", "Customer") is that doing so breaks through the separation of concerns that is so central to the MVC design pattern. When generating a link or a URL in a view or action method, we want to focus on the action and controller that the user will be directed to, not the format of the URL that will be used. By bringing knowledge of the different routes into the views or controllers, we are creating dependencies that we would prefer to avoid.
a) Capisco che creiamo una dipendenza (tra metodo di azione / visualizzazione e un modulo di configurazione di routing ) avendo Html.RouteLink
(chiamato all'interno di metodo di azione o vista ) che specifica il nome della rotta che vogliamo usare.
Ma l'introduzione di una simile dipendenza ha già considerato una violazione di SoC ? Vale a dire, anche se abbiamo creato una dipendenza tra i due moduli , in realtà non abbiamo introdotto alcuna funzionalità / preoccupazione aggiuntiva in nessuno dei moduli (la definizione di SoC implica che violazione di SoC si verifica quando nuova funzionalità / preoccupazione viene introdotta in un modulo )
b) Comunque, non capisco come semplicemente generando un URL (all'interno di metodo di azione / vista ) specificando una named route porti l'attenzione su formato dell'URL ?
Grazie