Push is one of topmost demands for mobile users. For a mobile user, push means that the server actively sends data to his mobile phone. Most of time when push is mentioned, people only focus on how a communication channel is used to provide the push capability. However, in fact, the full stack of push consists of four different problems: push channel, push target, push rule, and push consistency.
1. Push channel means that the communication channel has to be ready to support push, namely the server has a communication channel to reach a mobile client. The ideal push channel is that the server can initiatively create a connection to a client and then send data via the connection. However, this direct push model is usually limited by carriers (Mobile Service Providers) since the IP address of a mobile device is normally a virtual address generated on a carrier gateway and is not allowed to be connected from an external server without the permission of the carrier. Alternatively, there are two complementary solutions. One is the open connection model. In the model, a client initiates a persistent connection to the server, and then the server uses the opened connection to push data to the client. Another is the notification plus pull model. In the model, the server pushes a notification using SMS to the mobile device and then the device pulls the content required to be pushed from the server. The open connection push is used widely in most commercial products since it can work with most mobile phones without the intervention of carriers. For example, BlackBerry push service, Sybase push service, and Microsoft direct email push use the open connection model. The typical example of the notification plus pull model is the WAP push. Our current work is to add the open connection push and the notification plus pull model into the SACM.
2. Push target means how to figure out the target of a push. Although it sounds obvious, there normally exists an ambiguity when considering push target in an application. On the application level, a push target is normally a user, but on the communication level, a push target might be a device. Hence, the server has to have a management system to manage the relationship between devices and users. An advance system should consider that a user might have more than one device or might change devices from time to time. In this case, the management is non-trivial.
3. Push rule means the conditions to execute push. For example, a push might be executed based on a subscription of a target or based on a rule defined on the server side. Push rule also decides what content to be pushed, when a push is executed, and which push channel is used. This is not a simple problem for mobile devices either since the limited storage capability and the unstable network connection of mobile devices might not allow pushing any information at any time. Hence, when a push is demanded, how to decide the size of data to be pushed and how to guarantee the time to execute push is valid are two major challenges.
4. Push consistency means the integrity of the pushed data on the server side and the concurrency control of the pushed data on the client side. The data integrity means the relationship of business data has to be maintained when data is pushed. As mentioned before, since the storage size of mobile phones is limited, the backend database usually cannot be entirely pushed to a mobile phone. Hence, the mobile business data is just a partial copy of the server side business data. In this case, there is a risk that the push might break the integrity of business data. For example, an order record normally refers to a list of order details. However, when pushing the information of an order to a mobile client, we might only push the order record without pushing the details. Then, if the client deletes the order and commits the delete to the backend system, all details of the order lose the reference order and the data integrity is broken. The data integrity is highly related with the push rule and the data consistency model. It is a critical problem for push and has been rarely studied before. Hence, a potential research direction is to study the push rule and push consistency of business data on the server side. Moreover, on the client side, push is a write operation to the mobile data and might cause a conflict with the local read/write operations. Hence, a concurrency control is required on the client side although the client is thought of a single-user environment. Although SAP might not be involved in the client development, it is the server side responsibility to guide the client development to correctly handle local data.