Due to the proliferation of wireless networks, there are a continually increasing number of wireless devices in use today. These devices include mobile telephones, personal digital assistants (PDAs) with wireless communication capabilities, two-way pagers and the like. Concurrently with the increase of available wireless devices, software applications running on such devices have increased their utility. For example, the wireless device may include an application that retrieves a weather report for a list of desired cities or an application that allows a user to shop for groceries. These software applications take advantage of the ability to transmit data of the wireless network in order to provide timely and useful services to users, often in addition to voice communication. However, due to a plethora of different types of devices, restricted resources of some devices, and complexity of delivering large amounts of data to the devices, developing software applications remains a difficult and time-consuming task.
Currently, devices are configured to communicate with Web services through Internet-based browsers and/or native applications. Browsers have the advantage of being adaptable to operate on a cross-platform basis for a variety of different devices, but have a disadvantage of requesting pages (screen definitions in HTML) from the Web service, which hinders the persistence of data contained in the screens. A further disadvantage of browsers is that the screens are rendered at runtime, which can be resource-intensive. Applications for browsers are efficient tools for designing platform independent applications. Accordingly, different runtime environments, regardless of the platform, execute the same application. However, since different wireless devices have different capabilities and form factors, the application may not be executed or displayed as desired. Further, browser-based application often require significant transfer bandwidth to operate efficiently, which may be costly or even unavailable for some wireless devices.
Current push applications available for mobile devices are proprietary implementations that have not been constructed using a standard specification for the subscription/notification model. Currently there is no known framework to build a mobile application generically, describe it as a ‘notification enabled’ application by pinpointing the notification components and put it in a context from which it can be available to the device for download and point and click execution.
An embodiment of the patent disclosure will now be described by way of example only with reference to the following drawings in which:
Systems and methods disclosed herein provide a communication system for enabling group subscription for asynchronous push-based applications on wireless devices and notification broadcast to obviate or mitigate at least some of the aforementioned disadvantages.
In accordance with an aspect of the present patent disclosure there is provided a system for enabling group subscription for asynchronous push-based applications on wireless devices. The system comprises an application registry, an application repository and an application gateway server including an event sink for communicating between the system and a device. The application gateway server is configured for communication with a back-end service via an event source and including a subscription collection and a subscriber collection.
In accordance with another aspect of the present patent disclosure there is provided a method of enabling group subscription for asynchronous push-based applications on wireless devices. The method comprises the steps of reading a Web service interface, generating a Web service interface therefrom conforming to a notification protocol, creating a notification-based application bundle for the Web service, publishing the notification-based application bundle and creating an event source.
In accordance with another aspect of the present patent disclosure there is provided a computer-readable medium storing instructions or statements for use in the execution in a computer of a method of enabling group subscription for asynchronous push-based applications on wireless devices. The method comprises the steps of reading a Web service interface, generating a Web service interface therefrom conforming to a notification protocol, creating a notification-based application bundle for the Web service, publishing the notification-based application bundle and creating an event source.
In accordance with another aspect of the present patent disclosure there is provided a propagated signal carrier carrying signals containing computer-executable instructions that can be read and executed by a computer. The computer-executable instructions are used to execute a method of enabling group subscription for asynchronous push-based applications on wireless devices. The method comprises the steps of reading a Web service interface, generating a Web service interface therefrom conforming to a notification protocol, creating a notification-based application bundle for the Web service, publishing the notification-based application bundle and creating an event source.
In the wireless device world, where resources are scarce and connectivity is intermittent, the user experience is best when information is ‘pushed’ to the user's device. The user does not experience network latency since the user is not actively requesting the information, but rather the information is pushed to him as soon as it is available. Applications that are suitable for push deliver dynamic data, information that is valuable in real-time (examples include email, messaging, weather, news, stock quotes, sports events, and schedules).
This patent disclosure describes a way to optimize traffic between device and event source for push-enabled applications. A proxy (in wireless component application terms this is the Application Gateway) sends a subscription to the event source on behalf of multiple devices (on some external event like administrator action). This subscription contains criteria that apply for multiple devices, thus reducing wireless traffic (saving each device from the need to subscribe individually with the same criteria). The proxy maintains the list of devices and applications that the subscription applies to. Traffic between event source and proxy is reduced as well, since the event source will only notify the proxy once and then the proxy will notify all subscribers for that subscription.
The method and system enables broadcast of notifications to multiple devices, while the devices are running same or different notification-based applications. This solution greatly optimizes the traffic between server proxy and event source by reducing the number of subscriptions and notifications initiated between the two parties.
Advantageously, the concept of a publish-subscribe mechanism is applied to reduce network traffic and associate through subscriptions disparate mobile applications without any apparent connections between them.
For convenience, like numerals in the description refer to like structures in the drawings. Referring to
The wireless devices 102 are typically personal digital assistants (PDAs), such as a BlackBerry™ by Research in Motion for example, but may include other devices. Each of the wireless devices 102 includes a runtime environment capable of hosting a plurality of component applications.
Component applications comprise one or more data components, presentation components, and/or message components, which are written in a structured definition language such as Extensible Markup Language (XML). The component applications can further comprise workflow components which contain a series of instructions such as written in a subset of ECMAScript, and can be embedded in the XML in some implementations. Therefore, since the applications are compartmentalized, a common application can be written for multiple devices by providing corresponding presentation components without having to rewrite the other components. Further, large portions of the responsibility of typical applications are transferred to the runtime environment for component application. The details of the component applications are described at the end of this description.
The wireless devices 102 are in communication with the application gateway 106 via the communication network 104. Accordingly, the communication network 104 may include several components such as a wireless network 110, a relay 112, a corporate server 114 and/or a mobile data server (MDS) 116 for relaying data between the wireless devices 102 and the application gateway 106.
The application gateway 106 comprises a gateway server 118 a provisioning server 120 and a discovery server 122. The gateway server 118 acts as a message broker between the runtime environment on the wireless devices 102 and the back-end servers 108. The gateway server 118 is in communication with both the provisioning server 120 and the discovery server 122. The gateway server 110 is further in communication with a plurality of the back-end servers 108, such as Web services 108a, database services 108b, as well as other enterprise services 108c, via a suitable link. For example, the gateway server 110 is connected with the Web services 108a and database services 108b via Simple Object Access Protocol (SOAP) and Java Database Connectivity (JDBC) respectively. Other types of back-end servers 108 and their corresponding links will be apparent to a person of ordinary skill in the art.
Each wireless device 102 is initially provisioned with a service book establishing various protocols and settings, including connectivity information for the corporate server 114 and/or the mobile data server 116. These parameters may include a Uniform Resource Locator (URL) for the application gateway server 118 as well as its encryption key. Alternatively, if the wireless device 102 is not initially provisioned with the URL and encryption key, they may be pushed to the wireless device 102 via the mobile data server 116. The mobile device 102 can then connect with the application gateway 106 via the URL of the application gateway server 118.
Referring to
The provisioning server 120 and discovery server 122 provide a provisioning service 210 and a discovery service 212, respectively.
At the lowest level, the base services layer 202 offers basic, domain-independent system services to other components in higher levels. Thus, for example, all subsystems in the application gateway services layer 204 and the application services layer 206 can utilize and collaborate with the subsystems in the base services layer 202. In the present embodiment, the base services layer 202 includes a utilities subsystem 210, a security subsystem 212, a configuration subsystem 214, and a logging subsystem 216.
The application gateway services layer 204 provides wireless component application domain-specific services. These services provide efficient message transformation and delivery to back-end services 108 and provide wireless device 102 and component application lifecycle management. In the present embodiment, the application gateway services layer 204 includes a lifecycle subsystem 220, a connector subsystem 222, a messaging subsystem 224, and a transformation subsystem 226.
The application services layer 206 sits at the top of the architecture and provides external program interfaces and user interfaces using subsystems provided by the lower layers. For example, various applications such as a lifecycle application, a packaging application and a message listening application provide external program interfaces since they communicate primarily with applications on external systems. Similarly, an administration application provides a user interface by providing a user with the ability to access and potentially modify application gateway data and/or parameters.
The administration service 208 is responsible for administrative system messages, administration of the wireless devices 102, runtime administration of the application gateway subsystems, support and display system diagnostics, and administration of default implementations of the provisioning and discovery services.
The messaging listening application provides an interface for receiving messages from the wireless devices 102 as well as external sources and forwarding them to the messaging subsystem. Further, the message listening application typically authenticates that the source of the message is valid.
The security subsystem 212 providing services used by other subsystems for securing communications with the wireless device 102. In order to facilitate secure communications, the security subsystem 212 encrypts and decrypts messages, validates signatures and signs messages.
Referring to
The AG 106 serves as a mediator between a wireless component application (sometimes referred to as application in this disclosure) executed by the RE and one or more back-end services 108 with which the application communicates. Often the back-end service is expected to be a Web service 108a using SOAP over HTTP or HTTPS as the transport protocol. As Web services are the most commonly expected back-end service 108, the term Web service is used interchangeable with back-end service 108 throughout this disclosure. However, it is appreciated that other types of back-end services can also be adapted to the disclosure.
The wireless component application communication model 300 is based upon an asynchronous messaging paradigm. In this model the application gateway (AG) 106 establishes and mediates the connection between the device 102 and the back-end service(s) 108 to:
Referring to
Referring to
The following definitions are used with the detailed description:
Referring to
The server proxy 524 determines whether a subscription message with the same filter content and destination (event source endpoint) has been previously received and stored in the subscription collection. If a subscription matching this criteria is not found as shown at Step 2, a new filter is added 604 to a subscription collection 606 and at Step 3 a subscriber is added 608 to a subscriber collection 610. At Step 4, a subscribe message is sent 612 to the event source 520. If the subscription matching the criteria is found (yes) as shown at Steps 5 and 6 only information for a new subscriber 102b is preserved at 614 and 616 in the subscriber collection.
Subscribe Use Case: Devicel (102a) sends 602 the subscription SA with Filter 1. At the server proxy 524, Filter1 is assembled in accordance with the filter expression used by the event source 520 (or protocol) to form for example, “P1”+“P2”+“P3”. This subscription is sent to event source 1 (520). At some other time, Device2 (102b) sends 614 another subscription for another application B that has the same Filter1 and is intended for the same event source 520. Since these two subscriptions have identical parameters, bandwidth savings can be realized by only sending the subscription once 612 to the event source 520. In other words, if any identical subscriptions occur, the proxy only preserves 616 the identity of the subscriber (in this case device and application).
The following are examples of two devices subscribing to two different applications that have common filter parameter values:
The following other scenarios can occur where the same subscription is applied:
(Filter1, E1), D1, App A—Subscription sent from Device D1 (102a), application A, with Filter1 for event source E1 (520)
(Filter1, E1), D2, App A
(Filter1, E1), D1, App B
(Filter1, E1), D3, App B
The server proxy 524 maintains a subscription collection 606 including the following:
The server proxy 524 maintains a subscriber collection 610 with a reference to the subscription ID including the following:
Referring to
When notification 702 for the subscription arrives at Step 1, the server proxy 524 looks up 704 the subscription at Step 2 and finds 706 all the subscribers for the ‘service’ at Step 3 and broadcasts 708 the message to all of them 102 at Step 4. The subscriber is represented by a (device, application) pair. The server proxy 524 builds and sends this message to different mobile applications hosted by the runtime environment on the mobile device.
Referring to
Referring to
The system and methods according to the present patent disclosure may be implemented by any hardware, software or a combination of hardware and software having the above described functions. The software code, either in its entirety or a part thereof, may be stored in a computer-readable memory. Further, a computer data signal representing the software code which may be embedded in a carrier wave may be transmitted via a communication network. Such a computer-readable memory and a computer data signal are also within the scope of the present patent disclosure, as well as the hardware, software and the combination thereof.
While particular embodiments of the present patent disclosure have been shown and described, changes and modifications may be made to such embodiments without departing from the true scope of the patent disclosure.
This non-provisional application claims benefit to U.S. Provisional Application No. 60/672,035 filed Apr. 18, 2005, which is hereby incorporated by reference. The present patent disclosure relates generally to a communication system for providing communication with a plurality of wireless devices and specifically to a system and method for enabling group subscription for asynchronous push-based applications on such devices.
Number | Date | Country | |
---|---|---|---|
60672035 | Apr 2005 | US |