Ubiq Mobile is a cross-platform development tool for creation of distributed mobile applications that can run on various types of mobile devices. The developed applications have client-server architecture with thin client. Server-side components of Ubiq Mobile applications run in .NET environment and can be deployed into Microsoft Azure cloud. On mobile devices, unified client programs are running that act as “containers” for execution of client components of Ubiq Mobile distributed applications. The universal client programs are specific for each target mobile platform – Android, WinPhone, Java ME etc.
Ubiq Mobile leverages set of sophisticated technologies that provide some advantages in comparison with traditional mobile development environments. Cross-platform compatibility, support of Java feature phones, robust work in slow and unstable connections and seamless scalability let programmers to develop complex distributed mobile applications with ease. Ubiq Mobile applications run on major popular mobile platforms.
Various development tools for creation of Ubiq Mobile applications are packed into Ubiq Mobile SDK that is actually a plug-in for Microsoft Visual Studio 2012 or 2013. In addition to development tools themselves, Ubiq Mobile SDK contains set of libraries that implement various APIs as well as set of templates of ready-to-run applications of different types. In addition, SDK includes set of integrated components that can be used in the developing applications. The example of such component is a module named Dispatcher that provides commutation and communication between mobile users in multi-user applications.
Ubiq Mobile SDK can be treated as a designer and constructor for distributed applications that allows programmers to create Ubiq Mobile applications through automated generation of standard interface classes and adding user-defined classes and methods that implement business logic specific for the application.
Ubiq Mobile SDK includes the following components:
- Plug-in kernel that provides creation and modification of Ubiq Mobile projects within Visual Studio solutions, generation of application components, deploy application onto server in the cloud, etc.
- Architecture designer – visual DSL-based designer of component architecture of distributed applications
- Code generator – plug-in component that provides automated generation of standard parts of developed applications
- Server emulator (running in background mode, logging and events trace is performed via Output window of Visual Studio) purposed for local debugging of the developed applications
- Universal client emulator for local debugging of the developed applications, that can simulate various types of mobile phones
- Component libraries – set of frequently used components that can me included into the architecture of the developed applications
- Typical applications templates – samples that can be used during development of the applications of various types
With Ubiq Mobile SDK, the developer can perform most of development and debugging work (up to 80%) on the local machine and then deploy/publish the developed application into the cloud. For local debugging server and client emulators that are parts of Ubiq Mobile SDK are purposed; for running of the application in the real environment a separate server instance in the cloud is used. Universal client components for various mobile platforms are available for downloading.
Project structure and available commands
The result of new Ubiq Mobile project creation is a ready-to-run project, created on the basis of one of predefined templates, for instance, Queue App Sample template (Fig.1):
Fig. 1. The new Ubiq Mobile project created on the basis of predefined template, with opened Architecture Designer window
Fig. 2. Toolbox for Architecture Designer
By adding components onto the working area and defining their interfaces and connections, one can create an architectural “skeleton” of the developed Ubiq Mobile application. It is possible to include predefined library components into the architecture – for this purpose it is necessary to choose UbiqLibrary generic component from the toolbox and specify the required component by choosing appropriate value of Name attribute through pop-up list. For example, one can choose predefined UbiqDispatcher library component this way (Fig.3).
Fig. 3. Adding predefined library component (UbiqDispatcher) to the component diagram
Each component using in architectural diagrams, has a set of properties that can be modified by the user. The component properties are displayed in standard Properties pane of MS Visual Studio. Most of them are filling with default values automatically, such as, for instance, output port ID (Fig.4).
Fig. 4. Output Port
After finishing application component structure (“Architectural skeleton”) creation, it is necessary to build the project. The building process can be launched either through mouse left-button pop-up menu when the mouse pointer is located on solution line in Solution Explorer window, or through Build -> Build Solution item of the main menu.
During the process of building solutions (Fig.5), Visual Studio plug-in automatically generates additional projects (if necessary) and adds them into the current solution.
Fig. 5. Building Ubiq Mobile solution
For each non-library component, an appropriate C# project is creating within the current solution. Inter-component interfaces are provided by automatically generated classes that are placed in GeneratedCode folder of the project tree (Fig.6).
Automatically generated C# sources for non-library components are placed in GeneratedCode folders of the appropriate projects.
For each non-library component two source C# files are automatically generated: <Component_Name>.cs file contains automatically generated code that implements interfaces of the component, and UserSection.cs file contains business logic of the component that is either empty just after generation or, if one of preinstalled templates was used for creation project, is filled with working template code). The user can modify UserSection.cs – all the changes made will be preserved during future automatic re-generations of the project. At the same time, automatically generated interface section will be re-created during each solution generation (in particular, as a result of any components’ configuration changes) and so the user shouldn’t modify any generated code of this section.
Fig. 6. Result of project generation
For start and debug of the developed application, standard MS Visual Studio command (Start/Stop Debugging) is used. One can also use “Start” button from the main VS toolbar (Fig.7).
Fig. 7. Main Visual Studio toolbar
In debug mode, Ubiq Mobile SDK launches an instance of Ubiq Mobile server (in background mode) and an instance of client emulator (Fig.8), automatically attaching Visual Studio debugger to Ubiq Mobile server instance that makes possible debugging of the developed applications in usual way. Server logging (that contains both information about server events and applications messages) is redirected to Output window of MS Visual Studio (Fig.9).
Fig. 8. Ubiq Mobile server and emulator launch in debug mode
Fig. 9. Debugging Ubiq Mobile application code