InsideRIA recently covered URLKit in detail:
Flex 2 provided the history management functionality. There are several reasons why this isn't a complete solution for an application that needs to preserve as much of the traditional browser experience as possible. The developer has little control over the specific URL and how it maps to the specific state of the application (the URL's are automatically created by the Flex application). This also makes it nearly impossible to preserve a URL structure for a future version of the application.URLKit provides four main rules for controlling the URL and corresponding application state:
URLKit seeks to extend this type of technology by giving the developer fine-grained bi-directional control over the relationship between the URL and the application's state. It allows you to declare URL mappings for a state of your application within MXML.
Learn more about URLKit: http://code.google.com/p/urlkit/.
- UrlValueRule - As show previously, this rule enables the developer to map a portion of the URL to a property of the application. When using the UrlValueRule in this manner, the two values (the URL and the application property) are both bound to each other, which means that a change in one will mean a change in the other. If you do not wish to use the binding, UrlValueRule also dispatches a change event which can also be used to trigger a change in state.
- UrlNavigatorRule - It was mentioned previously that our application could have benefitted from a different rule other than UrlValueRule. UrlNavigatorRule is designed specifically to work with Accordian's, NavBar's, TabNavigator's, and ViewStack's. So, instead of having to map the URL value to the selectedIndex property, you simply need to tell the rule what navigator it needs to point to. It handles the rest. Sample UrlNavigatorRule Example (View Source Enabled)
- UrlDelegateRule - This rule allows the developer to pass off a portion of the URL mapping to another rule (or rule set). This is commonly used so that the main application can pass off a portion of the mapping to a child component. In that way the URL can reflect the state of nested components. For this to work properly, you will need to use the next rule, UrlRuleSet.
- UrlRuleSet - This rule allows you to group multiple rules together so that a single URL can be parsed for multiple values. It also allows you to state in which way you want to the child rules to match the URL.