iFactr

One Framework. Infinite Flexibility.
Most cross-platform frameworks are made possible by enforcing a least common denominator approach. This makes it difficult, if not impossible, for many enterprise applications to be developed in that manner and still successfully meet the business requirements and provide a great user experience. That forces developers and organizations to make sacrifices and compromises. But not with iFactr.
With iFactr, developers can build 100% cross-platform applications, delivered as native, web, and/or hybrid apps, that also have the flexibility to add to the shared cross-platform code with platform-specific code that has total access to the entire set of native APIs available on that particular device or platform.

Deliver Web, Native, and Hybrid Apps from a Single .NET Code Base
With iFactr, you don’t have to choose between native, web, or hybrid architectures as you can have them all. Your apps can either be delivered as native apps that take advantage of platform-specific native controls and APIs, web apps using HTML5 accessible through the browser, or hybrid apps that provide a combination of native and web.

Execute Business Logic Natively on the Device or Remotely on the Server
This architecture also allows developers to choose whether business logic is compiled natively to each specific platform and executes natively on the local device, or if the logic is compiled on the server and executes remotely. In either case, the UI can also be delivered either through native UI controls or through HTML5/Hybrid design.

Develop Cross-Platform Apps with Platform-Specific Optimizations
With iFactr, cross-platform development is not an all-or-nothing proposition. You have the ability to develop an app for multiple platforms with a single code base, but if you need to use platform-specific APIs, reuse a third-party SDK, integrate with hardware, or optimize the user experience for a particular device or OS, you have the ability to also write platform-specific code.


With iFactr, you have the flexibility to create your user interface with the abstract iFactr UI that. Otherwise, you can create your UI, or parts of your UI, using platform-specific native user interface components like those provided by Apple’s CocoaTouch APIs for iOS via Xamarin’s MonoTouch, Google’s Android APIs via Xamarin’s Mono for Android, or Microsoft’s Windows Phone or Windows 8 APIs. You also have the flexibility to create parts of your app using cross-platform HTML5 frameworks like Sencha Touch or JQuery Mobile. This flexibility allows developers to create some screens using iFactr’s UI abstraction, but where there is a need for more control or platform-specific user experience optimizations, developers can create other screens using platform-specific native APIs or cross-platform HTML5 frameworks.
As for data integration and synchronization for offline function, there is also significant flexibility. With the iFactr Data stack, you get an easy-to-use strongly-typed LINQ-to-Objects data provider that provides cacheing and queuing for disconnected transactional integrity with any standards-based RESTful web service using XML or JSON. That allows organizations to get enterprise-grade data synchronization without having to install any proprietary middleware using just their existing web services infrastructure. But for those organizations that don’t have existing web services, iFactr Server provides an integration back-end in-the-cloud, on-premise, or with a physical appliance. Additionally, iFactr Data supports integration with Microsoft Windows Azure Mobile Services as well as SAP’s Sybase Unwired Platform.
Abstract Application Model
A powerful toolbox of controls to enable sharing of your business logic and data access code across platforms. You write once and deploy to whichever platforms you choose. URI-based routing and navigation brings the flexibility to support complex workflows and deployment to the native device, the web, or anywhere in between.
Shared Business Logic
Shared Data Access
URI Based Navigation and Workflow
Platform Specific Deployment
Custom URI Schemes/Deep Linking
Abstract Utility Interfaces
The iFactr Abstract Utility Interfaces give you access to all the functions you need to secure and deploy your applications, without the need to learn the details of every platform. Things like device storage, encryption, logging, network access, and analytics are all available from your shared application code. So as new devices enter the market — and your environment — your applications just work. We worry about the new platform details so you don’t have to.
Local Storage
Multi Threading
Application Configuration
User Settings
Application Logging
Session Settings
Data Serialization
Network Access
Application Analytics

iFactr Data Client
Data Synchronization
Data Caching
Transaction Queuing
Full Disconnected Support
iFactr Data Server
Reflection Based API
HTML 5 Cache Manifest
Hosting Options

Available Features by Platform
In order for iFactr to have all of the capabilities and flexibility that it does, there is a lot that goes on under the hood. This table outlines some of the high-level features and their corresponding availability by platform. The platform-specific APIs and integrations describe code that must target a single platform, while the abstract UI elements, form fields, and integrations describe code that can be shared across multiple platforms and delivery architectures.

![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|---|---|---|---|
| Platform-Specific UI APIs | ||||||||
| Native UI Support | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| HTML5 Support | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Apple CocoaTouch APIs | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Google Android APIs | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Microsoft Windows Phone SDK | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Microsoft WPF and Silverlight | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Microsoft Windows 8 SDK | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Abstract UI Element API | ||||||||
| Application Menus | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Searchable Lists | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Panels & Blocks | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Icons & Images | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Navigation Tabs | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Buttons | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Styling | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Advanced Theming | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Tablet Form Factor | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Form Fields | ||||||||
| Date Picker | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Text Fields | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Select Lists | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| On/Off Switch | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Composite Forms | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Data Validation | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Platform Specific Integration | ||||||||
| Accelerometer | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Audio/Video Record & Playback | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Barcode Scanning | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Camera | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Compass | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Contacts | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Geolocation | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Magnetic Strip | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Abstract Integration Interface | ||||||||
| Accelerometer | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Audio/Video Record & Playback | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Barcode Scanning | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Camera | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Compass | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Contacts | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Geolocation | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Magnetic Strip | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Data Synchronization | ||||||||
| Offline Data Access | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Disconnected Transactions | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| RESTful Web Services | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| iFactr Data Server | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Azure Mobile Services | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Sybase Unwired Platform | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
