Technically speaking nRoute is a composite application framework that targets Silverlight, Windows Presentation Foundation (WP7), and Windows Phone 7 (WP7). However, from a more practical/developmental point of view, the idea here is to break your application
into various independent constructs and bring them together at runtime as one seamless whole.
The idea to decompose and recompose your application into various parts is rooted in the concept of separation of concerns – which
Wikipedia describes as “the process of separating a computer program into distinct features that overlap in functionality as little as possible”. Obviously this is nothing new, and we’ve been
doing separation of concerns in various forms and at various levels of abstractions for a long time. With nRoute, we bring alive the separation of concerns concept in client-side applications by means of various constructs, such as:
- Navigable Views and Resources
- Packaged/Externalized Resources
- Messaging Channels
- Custom IoC’ed Resources
And the selling premise being it helps you create a highly decoupled system that reduces the overall complexity, increases technical and domain-level flexibility, increases maintain’abity, and reduces the lifetime cost of the application. All of which sounds
much like most boilerplate marketing material, but the benefits are real and proven – at least in the context of developing client-side applications.
Besides the aforementioned higher-level constructs, nRoute also features a host of “consumable” functionality, things like dependency injection, behaviors, actions, triggers, relays, ICommand implementations, weak eventing etc. that essentially help round
up the practical loose-ends needed to bring an application together.