Today's project is one where I've mentioned a piece of in a past post, but left a post on the entire thing for another time. Well, that time is now.
Building a WP7.x app takes more than just building your business/app/game logic. There's all sort of infrastructure gunk that you have to build too. While some love building everything, owning every zero and one in the app, most just want to focus on the specific problem they are trying to solve. [Insert "reinvent wheel" quip here]
Yet being the dev's we are, we also don't like black boxes. We want the option to see all the code used in our infrastructure pieces of our apps, want the piece of mind that if we really need to we can tweak the code, that we have a fallback if the authors go away, finally that we can spelunk it and check out how it does the cool stuff it does. We want the best of both worlds, awesome infrastructure libraries and source too.
We want something like...
The WP7 Contrib (WP7C) is just like many other contribution community led efforts where there is a movement to bring resources together, solve common problems and help shape new ways of looking at common platform problems.
The WP7C contains not only work we have put together based on our development experiences for WP7 but also from the wider community. What we wanted to do was package all this up into a single place to make it easy for those people developing on WP7 to find and examples of how to use the pieces. The other reason is to inspire the community, encourage feedback for new feature requests and also have people join us on our quest, maybe even contribute some of their great work as well.
You will see an underlying theme to all of the components that we are revving currently these approaches include; Use Rx where possible to help with performance when requesting data from endpoints; single responsibility; and ask don't tell patterns. Ollie will be going deeper on these topics with some up and coming blogs posts as to why we believe these approaches help with development practices in general.
So what's in this project, what services does it provide? This post's title about says it all... Caching, Messaging, Collections, Services, Communications, Diagnostics/Debug and UI Controls.
Here's a snap from the WP7Contrib main page for just the UI Controls;
The binaries are distributed in two forms, normal and ILMerged, both with 7.0 and 7.1 versions.
ILMerged? That's where, using the ILMerge utility from Microsoft, all the different WP7Contrib DLL's are merged into a single DLL, simplifying deployment a good bit.
Here's a snap of the normal 18.104.22.168, 7.1 release;
And where's the ILMerged version;
From 11 DLL's to 1.
Now if all you need is in 1 of the 11, you should use that 1, but if you're using features from many/most, then using the 11 in 1 ILMerged version might make more sense.
Finally lets take a look at what's in the source distrib. Here's primary v7.1 Solution;
Are there demo's or samples? Oh yeah... In the Spikes folder there's a bunch;
In short, if your building a WP7.x app and looking to build on a solid foundation of services and/or love to get down and deep into code, the WP7Contrib project might be a cool thing to check out.
Here’s a few more links you might find interesting:
- Windows Phone SDK 7.1 Release Candidate
- TWC9: August 26th 2011
- Location, Location, Location... A Bing Maps Rest Wrapper for WP7
- Rx:SSSsssss... (That's the sound of Reactive Extensions, Windows Phone 7 and a Snake...)