The goals of this project are the development of a flexible and extensible service-based middleware architecture supporting the development of context-aware distributed applications for infra-structured mobile networks (current focus on Wireless LANs), and the development and deployment of collaboration tools and services that explore new forms of interaction and data sharing facilities for mobile users. The resulting middleware architecture was named MoCA (Mobile Collaboration Architecture).

A general overview and a short user's guide for the MoCA services may be found at the MoCA Overview page.

Currently MoCA comprises the following components:

Components Description
Client and server APIs The server and the client of a collaborative application should be implemented using the MoCA APIs, since they hide from the application developer most of the details concerning the use of the services provided by the architecture.
Monitor It is a daemon executing on each mobile device and is in charge of collecting data concerning the device's execution state/environment, and sending this data to the CIS (Context Information Service) executing on one (or more) node(s) of the wired network. The collected data includes the quality of the wireless connection, remaining energy, CPU usage, free memory, current Access Point (AP), list of all APs and their signal strengths that are within the range of the mobile device.
Configuration Service (CS) This service is in charge of storing and managing configuration information for all mobile devices, so that these can use MoCA's core services, such as CIS and Discovery Service (DS). The configuration information is stored in a persistent hash table, where each entry (indexed by the device's MAC address) holds the following data: the (IP:port) addresses of a CIS server and a Discovery Server, and the periodicity by which the Monitor must send the device's information to the CIS.
Discovery Service (DS) Is in charge of storing information, such as name, properties, addresses, etc., of any application (i.e. its servers and proxies) or any service registered with the MoCA middleware.
Context Information Service (CIS) This is a distributed service where each CIS server receives and processes devices' state information sent by the corresponding Monitors. It also receives requests for notifications (aka subscriptions) from application Proxies, and generates and delivers events to a proxy whenever a change in a device's state is of interest to this proxy.
Location Inference Service (LIS) Infers the approximate logical location of a device by comparing the device's current pattern of RF signals received (from all ``audible'' 802.11 Access Points) with the signal patterns previously measured at pre-defined Reference Points in a Building or Campus.
Symbolic Region Manager (SRM) This service expose an interface to define (create, modify, and delete) and request information's about hierarchies of symbolic regions. New Regions should be based in the set of atomic regions defined by LIS Administrator.
Context Privacy Service (CoPS) It controls when, how and to whom context data collected and processed by CIS and LIS will be disclosed.
A proxy Framework for Customized Adaptation The proxy framework is in charge of collecting client's current context (device and network), and trigger the appropriate adaptation. It offers mechanisms for cache management, as well as adaptation management.

MoCA still contains a set of core and general purpose API that are included in the distribution of all services.

MoCA Util Implements some shared functionalities (such as, Listener Handler, Threads Pool) among the majority of the moca projects. Its main goal is to facilitate the use and the implementation of some common tasks needs in almost all projects. By centralizing the changes and the maintenance of this API, we can optimize and improve the code reutilization.
Event-Based Communication Interface Implements the functionality of an event service, allowing clients, called subscribers, to register interest for specific events and to be notified when such events happen. This is a general purpose API and it is used for some MoCA services, like LIS.
Communication Protocol Implements protocols for synchronous and asynchronous communications between objects over a network. A client can send messages using either TCP or UDP messages. This API is used for most MoCA services.
MD-ECI - Mobility and Disconnection Support for the ECI Is an extension of the ECI publish/subscribe system. It handles the mobility of devices, implementing a solution for Mobility Management at the application layer using the SIP protocol. In addition, the system also implements mechanisms for handling disconnection of event producers and consumers, and also firewall and NAT traversal techniques, allowing the publish/subscribe system to be used on the Internet, and not only on local networks.
MSIPUA - Mobility SIP User Agent Is an implementation of a Mobility Management solution on the application layer with the SIP protocol.

Questions or Comments

For questions about MoCA please send an email to the MoCA Users discussion list.

           MoCA Users Discussion List e-mail addresses
           Send message: