title: Is the M in MVC different than in MVVM?
body: <p>First, I'd like to apologize for adding to the myriad of questions on this topic. I understand the basic difference between MVVM and MVC. What I don't understand is the exact definition for the M.</p>
  
  <p>In my understanding of MVC (which is consistent with what's out on wikipedia), the Model encapsulates the state (and possibly business logic) of the application. It lets the View know when something's changed. It might be implemented as a class with methods that allow data to be stored or retrieved. It might have an interface that allows the View to listen to changes in data. </p>
  
  <p>I've read similar descriptions of the Model in MVVM. However, frequently, I find people referring to the Model as the classes that represent the things you're modeling in your business domain. In <a href="http://johnpapa.net/5-minute-overview-of-mvvm-in-silverlight" rel="noreferrer">his article</a>, John Papa refers to the Model as, “A class that represents data points describing a specific entity.  For example, a Customer class with properties such as CompanyName and CustomerId”. He goes on to explain that, “I have a class that is in charge of hitting a web service to go and get my data and fill my Model for my ViewModel”. </p>
  
  <p>Normally, I'd call the class that models some domain concept a domain class. I'd agree that the Model references those classes, but it doesn't own them. I'd agree with John that encapsulating the job of filling these classes with data obtained from a service is a good idea. He seems to imply that this is the job of the ViewModel, or some other piece. I thought that this was a key job of the Model. Sure, have a class (or whatever) to do it, but that class is part of the model itself.</p>
  
  <p>Is the M in MVC/MVVM the class that model's some domain concept? Or is it the thing that encapsulates the application's data?</p>
  
  <p>I'd love for someone to tell me I'm not crazy and that somewhere along the line, people in the MS camp have fundamentally changed the idea of what Model means in these patterns. Er, maybe I'm in the wrong place for that though:)</p>