Rishi Oberoi
unread,Jan 11, 2011, 5:24:36 AM1/11/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to nRoute
I wanted to put out a basic guide to what my plans are for the next
release for nRoute. The general idea as of now is to have two back-to-
back releases, one that would bring in a number of non-breaking
features and would allow full-on use of nRoute navigation framework in
wp7. The second release would focus on improving some of the more
fundamental pieces, mostly related to the IoC/DI and the routing-
engine. The impetus for the two releases being that I want to have a
solid offering for wp7 asap - and once we have that we can have more
deeper/fundamental changes.
First Release (v0.5)
- One of the issues with wp7 as of now is that it requires the use of
it's own built-in navigation framework and related primitives else you
loose a ton of phone-specific features. Moreover this is wholly
incompatible with the navigation framework/features in nRoute, though
one could use both side-by-side but having to use two navigation-
frameworks in one apps is nuts. So my immediate aim is to bridge the
two, so you get the known benefits of nRoute along with non-diminished
use of the phone-specific features
- The other big thing I want to bring is the use of SiteMaps at the
page/control-level, I think this has lots of potential uses. For
example, in WP7 you could declare a SiteMap and we could turn that
into an ApplicaitonBar, or you could use a SiteMap we could turn that
into a context menu. SiteMaps gives you a standardized way to declare
menu-like features, and I think we could use it at the application
level, page level, or even at the control level. And the SiteMaps
would also support use of ICommands (i.e. CommandNodes), so using them
with your ViewModel becomes that much easier
- Add some standardized controls, I've normally being shy of
introducing UI controls in nRoute - but I think there is case to be
made of certain UI-controls and having them available in a MVVM friend
way. One such case is a WorkIndicator control - this is one control
that I find myself endlessly re-creating so I thinking having it
available in the framework would be boon. Another such case would be a
MessageIndicator. More technically, you could think these of being
more so ViewServices that can be consumed by ViewModels and like
everything in nRoute they would be extensible
- Another thing I'm considering is exposing a small number of view
specific linkages so that VMs can more smarter without having to
directly reference the Views. One example is a simple thing like
notifications for when the View is activated or deactivated - so like
when it is deactivated you could stop the UI updates or vice-versa.
Things like these are particularly important for wp7 - where you need
to hold onto lots of small optimizations for perf and other reasons
- One other new thing that I think would be really helpful is to
provide a way to save View-specific state in addition to the logical
state that we can save in the VM currently. A common use case would to
save the scroll-position or some other visual state, and this would be
totally separate from the logical state of the VM
- Also, speaking of states, I'm looking to hook up Navigation
Container state to the tombstoning state - the idea being you'll have
to do nothing new to get tombstoning features other than to use
nRoute's Navigation Container and existing state management features
- Add support for Windowed and Modal Views, this can be done but it is
somewhat challenging especially in SL, so I'm thinking of providing
some infrastructure to better allow use of such extended UI cases
- Abstract nRoute to enable use of any IoC/DI components, this
basically involves the use of a IServiceLocator factory
- Open up RLF, to allow runtime adding/removing of resources - and
this enable features like config driven resourcing or convention based
resourcing
In addition to the above, I've got lots of small tweaks to do, and add
lots of nick-nacks to enhance existing features
Second Release (v0.6)
- Overhaul the IoC/DI features in nRoute i.e. the Resource Locator
Framework (RLF). I want to do a proper re-evaluation of RLF, including
looking into the possibility to replace it with MEF
- Update the routing engine's pipeline to add MVC equivalents of
IActionFilter, IResultFilter, IFilterProvider etc for both navigation
and controllers. This would allow things like authentication/
authorization checks, or re-routing based on some external criteria
- Add design-time support/scaffolds to ensure a more streamlined
design-time experience. This is especially pertinent for using nRoute
with Blend
- Add more/better debugging and tracing points in nRoute
- Provide tests for nRoute, this is something I've been slacking but I
want to get it out there
Note again the above is not a comprehensive list by any means.
As customary, any suggestions, ideas or feedback on these or new
feature would be most welcome. Also, one of the other thing I'm gonna
do is that any new feature that I add to nRoute, I'll provide its
implementation info about it on this forum - so anyone can evaluate it
and/or provide feedback early in the development lifecycle. Also, feel
free to add requests for new features as we go along.
Cheers,
Rishi