I remember when I first started using MVVM I found myself putting not only view logic, but small pieces of business logic in my viewmodels. It was testable and reduced the number of classes related to the front end. These viewmodels were not blobs, but they did take on more responsibilities than a single-responsibility class would have.
Then in 2013 I changed my application design so that any business logic was relegated to a business logic class that was injected into the viewmodel. My viewmodels were now leaner and followed the single-responsibility principal much closer.
Motivation for Thin View Models
Motivation for thin viewmodels is strong and simple: cross-platform.
Given the advent of Xamarin.Forms and its capability to author applications for UWP, IOS, Android, and OS X (Xamarin only), as an application architect I would strongly recommend that applications put their business logic in Portable Class Libraries (PCL) and keep their viewmodels thin. If you do this, you can also share that same business logic with desktop platforms like WPF or Windows Forms.
If you have platform specific logic you can abstract it behind one or more interfaces and then inject it into the proper layer.
I’m excited about Xamarin.Forms and the potential it has for cross-platform development using .NET programming languages.
While Xamarin.Forms does not currently work with OS X, the PCL libraries you author will. You’ll need to Xamarin Studio to author the OS X UI.
Using this architecture also gives you the advantage of unit and integration testing on a single UI agnostic shared code base.
In the end its about giving yourself, your team, your company the option and capability to meet market driven cross-platform requirements without a rewrite.
Exciting times to be an architect and developer.
Hope this helps someone and have a great day
Just a grain of sand on the worlds beaches.