Mobile frameworks: Modularizing app development with reusable components
Mobile enterprise developers are increasingly tasked with creating apps that will work on multiple devices and operating systems, and they need to do so at a very fast pace to keep up with rapidly changing technologies and user demands. To handle this new phenomenon, many developers are turning to automated mobile frameworks to develop modular and extensible apps.
The problem with adding new features to source code
Complex enterprise apps are made up of many smaller components, and new or improved features to those components can be written directly into the source code. This often seems like the most intuitive approach, but when a developer needs to add a new feature or component, it would require modifying the source code. This could cause all sorts of compatibility problems with interdependent apps and systems. The process is also time-consuming, cost-intensive and prone to human error.
Further, if the app was built by a third party, the source code might not be available for the in-house development team to tweak. An alternative is to create an API that sits between the app and its components, but development would still be required to manually create configuration files to tell each app which components are available.
Key capabilities of mobile frameworks
To automate the development process in a modularized fashion, developers can use mobile frameworks or managed extensibility frameworks (MEFs) in the .NET world. MEF is a platform that lets developers use preconfigured components, which can be plugged into a running, lightweight core app.
With MEF and mobile frameworks, developers gain the following capabilities:
1. Automate the discovery of available app components
Instead of manually registering and configuring hard extensions for apps, developers can use MEFs to implicitly discover and register app components through dynamic composition based on a specific set of requirements, without making any changes to the source code of the core app.
2. Make extensions available to an app at runtime
MEF components contain specifications about app dependencies or demands, known as imports, and the capabilities the component makes available, known as exports. Because of this, components or extensions are discoverable at runtime.
3. Enable the interchangeable use of components across multiple apps
MEF and mobile frameworks provide developers with large catalogs of extensions that can be compiled into apps at runtime and across multiple apps. They also enable seamless communication between those components through automated dependency injection.
4. Allow apps to discover parts and extensions by metadata
With MEF, apps can use metadata to find parts and extensions without instantiating them or loading their assemblies. This eliminates the need to manually specify how and when extensions are loaded into the app. Metadata also provides better search and filtering so developers don’t have to do labor-intensive detective work. Further, developers can push critical updates and changes into production at a much faster pace. They can also test extensions in a sandbox environment without disrupting production.
5. Stick to one programming language
Using a comprehensive and reusable development framework eliminates the need for developers to learn multiple programming languages — they only need to learn how to use the framework itself. This way, developers can build upon a core app that can easily run on iOS, Android and all Windows operating systems, rather than manually developing extensions and apps in native languages.
App downtime is not an option today, and developers need tools that enable them to make changes and add features at a rapid pace. Additionally, users expect updates and changes on demand. With mobile frameworks or MEF, developers can build apps with modular, reusable components to ensure their employees and customers get the user experience they expect from any device and from wherever they are on the network — all at a fraction of the time and cost it would take to develop native, dedicated apps or make hard code changes manually.