Rx for Windows Phone 7

Today we released a downloadable version of Rx for Windows Phone 7. This might sound confusing as Rx already ships in the ROM of Windows Phone 7

Why have two separate releases? Let’s look at the pros and cons for both:

Embedded release
Pros:
    -bits are already there, no need to add additional assemblies to the distribution cost of the application.
    -The code is stable, supported and documented
Cons:
    -New Rx functionality will not be added until the next major release
    -This version only works on the phone

DevLabs release(s)
Pros:
    -frequent updates with new functionality, API & perf improvements
    -same release targets multiple platforms
Cons:
-
distribution cost of shipping additional assemblies with the application (grows the XAP)
    -supported only through the forums

So which version is best for you? Depends on your situation. Weigh the pros and cons of each option and make a decision.

Luckily making a decision to use one doesn’t preclude you from using components that have chosen the other. This works because both versions use the same IObservable and IObserver interfaces. These interfaces are defined in a separate dll: System.Observable.dll which lives on the ROM of the phone.

To make this work for your component, follow the following guideline: When your component exposes an observable stream in its public API, make sure you type it as IObservable and not as a concrete type (e.g. AsyncSubject). By doing this, either version of Rx can consume it.

Hope this gives a bit of a background on why there are two versions as well as help you decide which version to choose.