Pro Business Applications with Silverlight 5 Now Available

I’m happy to announce that my book Pro Business Applications with Silverlight 5 has now been released.  Preparation of this edition has been an enormous task, and I’m so glad to see it finally make it out into the wild.  What I had planned to be a short task of simply updating the Silverlight 4 edition of the book with the new features available in Silverlight 5 blew out to become a huge endeavour. Not only did I update the book for Silverlight 5, but I also rewrote much of the existing content to make it easier to read, and expanded upon the concepts I had covered in the previous edition (the chapter on MVVM got a huge update, as did discussion of collection views, along with many other topics). In addition, I also covered many new concepts too (such as MEF, and modularising your application).  All this new content has added another 200 pages or so to the book from the previous edition.

Most importantly, I have peppered the book with workshops, that walk you through the steps involved in implementing the topics covered in the book.  All the steps you need to follow are listed right there in the book, saving you the need to read a mass of text and interpret it in order to apply it to your project.  This makes it easy for you to apply the principles being covered without fumbling about and having to rely on any prerequisite knowledge.

If you’re not familiar with the Silverlight 4 edition, I took what I believe to be a rather unique approach, in that I attacked the subject of how you build business applications in Silverlight in a somewhat linear fashion.  Many (most?) technology books tend to be focused on the technology itself, with the topics not organised in order of how you would use them.  As a reader of these sorts of books, you’re required to apply the technology to your problem.  With my book, I took a problem-centric approach.  The problem being that you’re building a business application, and the book showing you how the technology can help you reach a solution, from beginning to end.  Ideally you’ll read  and follow this book from start to finish.  That said, it is still usable as a reference book if you so wish.

To demonstrate the process that the book follows, here’s the table of contents:

  1. Getting Started with Silverlight
  2. An Introduction to XAML
  3. The Navigation Framework
  4. Exposing Data from the Server
  5. Consuming Data from the Server
  6. Implementing Summary Lists
  7. Building Data Entry Forms
  8. Securing Your Application
  9. Styling Your Application
  10. Advanced XAML
  11. Advanced Data Binding
  12. Creating Custom Controls
  13. The Model-View-View Model (MVVM) Design Pattern
  14. The Managed Extensibility Framework
  15. Printing and Reporting
  16. Out of Browser Mode and Interacting with the Operating System
  17. Application Deployment

The benefit of this linear approach is that the workshops actually guide through the process of building a business application in Silverlight step-by-step.  You can follow through the workshops in order, and have a fully functional application at the end.

All in all, I’m actually really proud of this edition of the book.  I put a lot of work into it, and it’s become the book that if I were building business applications in Silverlight, I would want to have it by my side.

It saddens me greatly that Microsoft have let the “Silverlight is dead” rumour get out of hand, and depresses me that many people have been turned away from using Silverlight, and will not buy my book because of it.  I strongly believe that Silverlight is one of the best technologies available for building line of business applications, and I see it being so for quite some time yet.  It’s a mature platform, with a strong community around it.  Sure, Silverlight can’t beat HTML5’s reach, but you’ll no doubt find it quicker and easier to develop applications in Silverlight when there’s no need for your application to run on an tablet or phone.

If you are planning to buy the book from Amazon, please consider clicking on the cover of the book above, which will use my affiliate link to take you there.  And once you do have it and have been reading it, it’d be great if you could leave a review!

Now that the book is done, I’ll be doing some more blogging now.  Not everything I wanted to write about made it to the book, so I’ll be covering some of those topics.  Feel free, however, to suggest a topic in the comments below, and I’ll see what I can do!

40 thoughts on “Pro Business Applications with Silverlight 5 Now Available

  1. I’ve been waiting for this version and just got the book on Amazon.

    I’m looking for info on connecting my SL app to a third-party RESTful service. Do you cover this scenario? if not, can you point me to some up to date resources? some info on OAuth consumer would also be great.

    Thank you

  2. Hi Chris,

    I have read your book Pro Business Applications with Silverlight 4 and I have a question about the presentation model contains a collection of another presentation model.
    I have no idea on CRUD in this case, since you do not have mentioned details in your book. Pro Business Applications with Silverlight 5 – Pg 134

    Appreciated if you could provide more details / example.

    Thank You!

    • Hi Chris,

      Just wondering why sometimes we have to write Context.SaveChanges() after we have added a new object into the context? But it is still working without the SaveChanges().


      • Hi Calven

        It really depends on the scenario. If things work without calling SaveChanges() then don’t. As you’ll note in my final solution on the StackOverflow thread, I don’t call that method because it’s not needed. Previously I did because I wanted the database generated primary key back immediately, but with my later solution it was no longer required.


    • Hi Chris,

      Thanks for your input.
      Your book got a topic is “Securing your application”,
      it is like about securing WCF RIA service only.
      How about WCF Service? Lets say I have two services,
      1 is WCF RIA service for exposing data from server to client,
      another is WCF Service for send email operation or something else. So my WCF Service could be secured similiar like the WCF RIA service? Just simply decorate the operations with “RequiresAuthentication”?


    • Hi Chris,

      I’m trying to exposing PM from server, but this time in code approach instead of using DomainDataSource. But I’m facing an issue with the code approach. I have updated my post at StackOverFlow same link, if you are free, please have a look.


    • Hi Chris,

      Sorry, this time I’m having trouble when performing delete ProductInventoryPM. I have updated my question on StackOverFlow.

      Appreciated if you could provide details or example on this part.


  3. Hi Chris,

    Is this book available in VB.NET language?
    Actually I wish to have this book in VB.NET language,
    it is very hard to find this kind of book in VB.NET at the market.

    Thank you

  4. Hi Chris

    Great book, I am really enjoying it! Trying to get through it so I can implement.

    I have been following your workshops throughout successfully. Today I thought I would use one of my databases to replicate the Adventure Works sample. However on the retrieving of the list I am unable to get this query and am getting a “The remote server returned an error. NotFound”. I have tried to use this from within the Adventure Works sample app I have build that is working and I get the same error.

    All databased on in the same instance of SQL Server.

    Can you think of anything off the top of your head that i might be missing?


    • Hi David

      Glad you’re enjoying the book, and nice to hear you’re running through the workshops :). The first thing that comes to mind is whether your Web project set as the startup project, or the Silverlight project. The Web project should be set as the startup project. If when you run your application you get a file path an the address bar of the browser, then your Silverlight application is being loaded from a file rather than a URL, meaning that it wouldn’t be able to find the services it needs, leading to this error. Check that out, and let me know how you go.

      Hope this helps…


      • Hi Chris

        Thanks for your prompt response. It turns out that i should have waited for the workshop on paging as the error was actually too much data being passed :(.

        I was trying to load 12000 records into the datagrid!

        I will carrying on now enjoying your book.


  5. Hi Chris

    Thanks for an exellent book. I have just finished my first reading. It clarifies many details I have thought I knew


  6. Hi Chris,

    I’m using DomainCollectionView Approach to fetch list of records to ListView, and allows to perform search on client side. One problem is, if I have updated my records from my database, but on my client side is still having the old version of records when searching. How can I get the latest version of data from database every time when performing search?


    • Hi Chris,

      BTW, I have another question about the DomainCollectionView.
      How can the DomainCollectionView deal with multiple LoadOperation? Meaning from one LoadOperation to another. Example, by default load all products, if I want to search product, the search results will display.


        • Hi Chris,

          Sorry, I try to explain it more details here.
          If I would like to have two commands, one command is LoadAllProduct, while another is SearchProduct? My ListBox is binding to the DomainCollectionView. Meaning my DomainCollectionViewLoader can switch from one LoadOperation to another LoadOperation?


          • Hi Calven

            I don’t think switching between load operations is the right solution. There’s several alternate ways you could implement this behaviour.

            1. Firstly, I don’t think you really need two separate methods for LoadAll and Search. One method should suffice, as demonstrated in the book and the demo code. If you pass an empty string as the filter criteria, then a StartsWith/Contains filter will match all records, returning them all. When a value is provided to search by, the filter will be applied, and the matching subset returned from the server.

            2. You can pass the DomainCollectionView a method that then determines which actual method should be called: LoadAll or Search.

            3. You could write your own DomainCollectionViewLoader that contains more logic, as described by Kyle McClellan here:

            That’s a few possible solutions. Hope this helps…


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s