Thursday, March 22, 2012

Jounce MVVM WCF RIA Printing and More Example

I finally managed to update and upload my To-Do List Reference Application. This is a Silverlight 5 application based on my Jounce framework that demonstrates a number of different features. I built it as part of my book, Designing Silverlight Business Applications. There are several chapters devoted specifically to the construction of this example application. It is a demonstration application, so while it contains a lot of different components designed to illustrate various points, it's not intended to be a "production application." I won't even call it an "enterprise application" because it falls far short of what you might typically build for the enterprise, but this one has a lot more code than your typical two-page blog post program.

Specifically, it demonstrates the following concepts:

  • The Jounce framework (of course)
  • The MVVM pattern
  • Using a shared view model to display non-shared data (this is a common misconception, that if you edit five records you need five instances of the same view model)
  • Jounce-specific navigation and parameter-passing
  • Use of the Visual State Manager (VSM)
  • Design-time support
  • The Managed Extensibility Framework
  • Theme management (i.e. storing a theme in a separate project and referencing it)
  • WCF RIA Services
  • Mapping (auto-mapping properties from one entity to another)
  • Event aggregator messaging
  • Repository pattern
  • The Sterling NoSQL database (the example uses both a server-side and client-side instance)
  • Synchronization between the client and server when the client is offline
  • p/Invoke
  • Concurrency management
  • Offline Out-of-Browser (OOB) including UI for installation and removal
  • Use of behaviors
  • Extensions for fluent interfaces
  • Region management
  • Validation
  • Printing
  • Localization (version "as is" has Spanish text substituted in the edit dialog)
  • COM Interop (exports items to Excel)
  • HTML DOM interaction (application works with JavaScript to warn the user if they edit a record and try to navigate in the browser) and updates the title whether in browser or OOB mode)
  • Tracking dirty records using the entity view model
  • Filtering and sorting
  • Touch interaction using the LightTouch library
  • Out-of-Browser child windows
  • Toast notifications
  • Testing

I'm sure there are some items I left out. I hope this helps answer a lot of questions I receive and I also hope it is taken as guidance and an example, not a "final architecture" or production-ready module as again, the key intent is to provide examples of a lot of different features. There is only one thing I ask: that if you have questions about the application, you first invest in the book and ask me only if you don't find your answers there. Jounce is an open source community project and I'm sharing this example application as well, but the book is how I spent the better part of a year compiling all of the information I know about enterprise Silverlight development into one comprehensive resource. It's not a rehash of blog posts and contains a lot of content. However, if you've got the book, have worked through the examples and still have some questions or issues, please don't hesitate to contact me through the Jounce discussion forums or by replying in the comments section below.

Simply head over to the Jounce website and click the download icon when browsing the latest source to grab the application. Thanks, and enjoy!

Jeremy Likness


  1. I have downloaded the project but can't compile it (using Visual studio 2010 SP1).

    The ToDoList.SterlingDatabase (a .NET project) reference the TodoList.Contracts and .Models projects which are Silverlight projects.

    I guess you need to have separate Silverlight and .NET framework versions of those projects. If you just target VS 11 you can make those projects into portable libraries, but it will not work using VS 2010 as that version of portable libraries don't support ICommand.

    1. It shouldn't be an issue - unless I have some extension I wasn't aware of. I build Silverlight assemblies and reference them from .NET projects all of the time.

    2. Your book is available now. I have an eBook, but the samples referred to are still not available on the Informit web site. I have registered my purchase, but when I am logged in, there is still nothing to be found.


    3. Talking to my publisher now about this.

  2. Jeremy,

    When will the book be available on Amazon? It appears to be a pre-order right now.

  3. The book has gone to print. Amazon pushes the date out a bit, I'm assuming so they can assess demand and stock up, not sure why. It's officially out, so my guess is that Amazon will start shipping on April 8th as the book page suggests. Kindle is available right now.

  4. I have had the full book for several days now through safari books online rough cuts program. I am hoping your next book will be available throught the rough cuts program. Will it be? I like getting the info early. I could care less about some editing mistakes here and there along the way. I can fill in the blanks.



    1. Thanks, Steve! I appreciate you. I am confirming with my publisher but I do believe it will be available through that program ... we know Windows 8 is a hot topic and want to get content out there as soon as possible. I'll blog once I have more specific details as we are still in earlier stages. I look forward to your honest review once you have had enough time to read the current book, and appreciate you investing in my work!