Intersoft ClientUI 8 > ClientUI Fundamentals > ClientUI Architecture Overview |
Intersoft ClientUI is the industry’s first comprehensive toolkit that includes a full set of fundamental libraries, integrated architecture and a multitude of innovative user interface controls to support rich application development for the Silverlight and WPF platform. It provides a powerful journal-aware navigation framework, composite application framework, commanding and MVVM, fluid drag-drop behaviors and hundreds of rich presentation controls.
This topic provides an in-depth overview of the ClientUI architecture that covers most of the major frameworks of ClientUI, and describes how they interact and related.
Beyond just a suite of user interface controls, ClientUI delivers on a solid architecture and powerful frameworks that span from event routing, commanding, application framework to navigators and more.
The following chart illustrates the overview of ClientUI runtime architecture which is comprised of five major components and several subsets of frameworks.
To learn more about the types of application that you can build with ClientUI and its benefits, see Introduction to ClientUI.
The following sections discuss each layer of the ClientUI architecture in details.
ClientUI Framework is the underlying technology that powers the entire ClientUI components and its infrastructure. In addition to the base libraries, ClientUI Framework also includes several extra classes and API to provide code-level compatibility with WPF platform, such as the keyboard, mouse, focus manager, keyboard focus manager, input focus scope, and more. For more information about unified Silverlight and WPF application development with ClientUI, see Unified Development Model.
ClientUI Framework provides complete routed events support through a comprehensive implementation of routing strategy similar to those available in the WPF platform. The supported routing strategy include Bubbling, Tunneling and Direct. With routed events, you can handle an event more efficiently by handling the event in any visual tree element. To learn more about the routed events support in ClientUI, see Routed Events Overview.
Commanding is one of the missing key features in the Silverlight development, which is now made available in Silverlight through the commanding framework in ClientUI. Reinventing the client runtime development, the commanding framework unlocks the true potential of M-V-VM pattern which enables you to write your user interface logic in a separated layer called view model. The commanding framework facilitates the separation of user interface and command logic which allows a command to be easily reused in multiple user interface elements.
For more information about commanding support in ClientUI, see Commanding Overview. For more information about M-V-VM pattern development in ClientUI, see MVVM Pattern Overview.
ClientUI Application Framework is an application management framework that enables composite application development in the Silverlight and WPF platform. It provides rich capability to dynamically load an external application package (XAP) and inject the content without the need of additional proxies. Unlike the classic dependency injection, ClientUI's application framework can load any type of content – as long as the provided type is a valid framework element type – without requiring specific attributes or interfaces implementation.
The application framework manages the life-cycle of an application package, from the initial contact to server, downloading, installation, loading to updates checking and upgrade. There are several key benefits of a fully managed application, such as more efficient resources consumption and faster loading response time. This is made possible because the application framework features smart package sharing, a powerful feature that enables an application package or module to be shared throughout the life cycle of the composite host.
The application framework also integrates to the navigator controls available in ClientUI such as the navigation frame and navigation window as well as the docking task bar, which streamlines a composite application development with simple property-based semantics that locates an external content through unique resource identifier (URI). This also enables MVVM pattern to be effectively applied in the composite application development.
To learn more about the application framework in ClientUI, see Application Framework Overview.
ClientUI provides a powerful navigation framework that serves as the backbone of all navigators and top-level controls that supports navigation. The navigators in ClientUI include UXFrame, UXNavigationWindow and UXDesktop, while the navigation controls include UXNavigationBar, UXJournalButtons, UXNavigationButton, UXHyperlinkButton, UXMenuItem and more.
The ClientUI navigation framework includes many advanced features that enable you to rapidly create solid navigation experiences. These advanced features are such as multiple-level navigation with browser journal support, auto detect navigation direction with stunning visual transitions, authentication support, role-base security support, friendly error page, busy state management, and much more.
For more information about the navigation framework, navigators and the controls that support navigation, see Navigation Overview.
ClientUI provides a vast array of both fundamental and innovative user interface controls to enable rapid line-of-business applications development, enabling you to create differentiated and branded user experiences with hundreds of rich presentation controls, from essential input and form controls, buttons, toolbar and menus, grids, to stunning 3D cover flow and desktop-style multiple windowing interface and much more.
The ClientUI controls are built on the top of solid architecture and frameworks mentioned in the above sections. This allows the controls to provide advanced functionality such as events that use Bubbling and Tunneling routing strategy, fluid drag-drop mechanism and routed commands.
For more information about the user interface controls available in ClientUI, see ClientUI Controls.