Duplicate
I’ve developed some ASP.NET MVC apps, and loving the framework. However, one thing I don’t quite understand is why it’s limited to web UIs. It seems like one of the reasons for a separation of the view and controller is to allow for multiple views to reuse the same controller logic. For example, I should be able to hang a WPF UI on the same controllers as the Web UI. I suspect, though, that I’m misunderstanding something fundamental about separation of concerns. Is there a reason ASP.NET MVC controllers are limited to use in web applications?
Update: I’m less interested in "is it possible to do MVC on the Desktop" – I know Prism, etc. allow this. However from a design standpoint, one of the "reasons" we want separation of concerns is for reusability. If we can’t reuse the controllers, it feels like we’re repeating ourselves when rewriting identical logic in a WPF app. The answers below do clarify this some for me though.
I have to say the the MVC model is specially practical in web apps, and that’s because the view (the html page) is really disconnected and far away from the controler and the model.
In desktop apps, that is not the case, and you will be soon missing some opportunities the break the pattern to make the app more useful.
For example, you can’t do the powerful and time-saver databinding in WPF, because it breaks the MVC pattern.
A good pattern used in WPF is M-V-VM