I tend to think of a model presented at the client / presentation level as a ViewModel, it's just a representation of the layers of the model's presentation. Not the actual domain model. This is necessary in SOA, because the context of the consumer model often changes.
In SOA, we are trying to move to the canonical scheme for the contract, since it is likely that not all customers will need the exact view of the model now and in the future.
Thus, whether it is a web client, a service client, or a desktop client, if you think of a model in MVC as a ViewModel, this allows you to abstract view-level objects from service-level things, and you approach a canonical scheme.
So, an example View -> Controller -> ViewModel (Model) -> Data Contract -> Service
Examples of building such a service stack can be found here:
SOA Design Pattern
Deciding whether to go with a REST architecture or full WS- * SOAP is a separate issue and should not affect your choice of MVC as your presentation template.
Of course, there may be other restrictions that preclude the use of one or the other.
Choosing a presentation template for a new or corporate web development on the Microsoft platform is a difficult task, in my opinion, there are only three; View Model, Model-View-Presenter (MVP) or ASP.NET MVC (derived from Model2).
You can read the full article here. ASP.NET MVC Templates
source share