Modeling data-intensive Rich Internet Applications with server push support ⋆ Giovanni Toffetti Carughi Politecnico di Milano, Dipartimento di Elettronica e Informazione, Via Giuseppe Ponzio, 34/5 - 20133 Milano - Italy giovanni.toffetti@polimi.it Abstract. Rich Internet applications (RIAs) enable novel usage scenar- ios by overcoming the traditional paradigms of Web interaction. Conven- tional Web applications can be seen as reactive systems in which events are 1) produced by the user acting upon the browser HTML interface, and 2) processed by the server. In RIAs, distribution of data and compu- tation across the client and the server broadens the classes and features of the produced events as they can originate, be detected, notified, and processed in a variety of ways. Server push technologies allow to get over the Web “pull” paradigm, providing the base for a wide spectrum of new browser-accessible collaborative on-line applications. In this work, we investigate how events can be explicitly described and coupled to the other concepts of a Web modeling notation in order to specify server push-enabled Web applications. 1 Introduction Rich Internet Applications (RIAs) are fostering the growth of a new generation of usable, performant, reactive Web applications. Whilst RIAs add complexity to the already challenging task of Web development, among the most relevant reasons for their increasing adoption we can consider: 1) their powerful, desktop- like interfaces; 2) their accessibility from everywhere (along with the fact that final users tend to avoid installing software if a Web-accessible version exists); 3) the novel support they offer for on-line collaborative work. This last aspect is based on getting over the limits of Internet standards to provide server push techniques, enabling applications such as instant messaging, monitoring, collab- orative editing, and dashboards to be run in a Web browser. In this paper we focus on push-enabled Rich Internet Applications and the lack of existing modeling methodologies catering for their specific features. The most significant contributions of this work are: 1. the extension of a Web engineering language to consider collaborative Web applications using push technologies (Section 3) through the individuation ⋆ We wish to thank Alessandro Bozzon, Sara Comai, and Piero Fraternali for the precious help and insightful discussions on this work. 2 Giovanni Toffetti Carughi of a set of primitives and patterns (Section 4) catering for the different aspects of distributed communication such as (a)synchronicity, persistence, and message filtering. We stress that the extensions we propose are general and can be applied to the most relevant Web engineering approaches; 2. a validation by implementation of the proposed concepts and notations (Sec- tion 5). 1.1 Running example To ease the exposition we will use an example: as a case study, we consider a collaborative on-line application for project management. The aim of the appli- cation is to serve as an internal platform to let users communicate and organize projects and tasks. The purpose is to have a simple but consistent example we can use throughout the different sections: we will keep it as naive as possible so as to avoid cluttering diagrams with unnecessary detail, but the concepts we will introduce are general and can be applied to complex industrial scenarios. Application users impersonate different roles: project managers and project participants. A project manager is responsible of creating projects and connect- ing them to their participants. For each project, tasks are created, precedence relationships among them are defined, and they are assigned to project par- ticipants for execution. Project participants can exchange messages with their contacts, while performing assigned tasks and signaling their completion. Contact 0:N 0:N Participant User Project 0:N OID Sender Message 0:N Username 0:N 1:1 OID OID 1:1 0:N Password Name Date Email 0:N Manager 0:N 1:N Subject 0:N Recipient Body Assigned to Belongs to 1:N Task 1:1 OID State Description 0:N Due Date Next Alarm Time 0:N 0:1 Fig. 1. Data Model of the project management application Figure 1 shows the data model for the collaborative on-line application: the user entity represents all application users, a self-relationship connects each user with his contact list. A single user can participate in one or more projects, while each project can be directed by a unique manager. Users are assigned tasks: each task belongs to a project and can have precedence constraints w.r.t. other tasks. Messages can be exchanged between users, they have a sender and a set of recipients. Modeling data-intensive Rich Internet Applications with server push support 3 2 Background RIAs extend the traditional Web architecture by moving part of the application data and computation logic from the server to the client. The aim is to provide more reactive user interfaces by bringing the application controller closer to the final user, minimizing server round-trips and full page refreshes. The general architecture of a RIA is shown in Figure 2: the system is com- posed of a (possibly replicated) Web server1 and a set of user applications (im- plemented as JavaScript, Flash animations, or applets) running in browsers. The latter are downloaded from the server upon the first request and executed following the code on demand paradigm of code mobility [7]. User1 UserN User Interface User Interface UI Events UI updates UI Events UI updates Web Browser Client Logic Client Logic Client Data Client Data XML messages Web Server Fig. 2. A Rich Internet Application architecture Each user interacts with his own application instance: as part of the compu- tation is performed on the client, communication with the server is kept down to the minimum, either to send or receive some data, generally in XML. Server-push and communication The communication between client and server is bidirectional in the sense that, after the first client request, messages can also be pushed from the server to the client. This is technically achievable because of the novel system architecture including client-side executed logic. In a ”traditional” Web application the HTML interface is computed by the server at each user’s request. When the user interacts with a link or a button on the page the server is invoked and a new page is computed and sent back to the client. The role of the browser is simply to intercept the user’s actions, deliver the request to the server, and display a whole new interface even if the change is minimal. 1 We abstract from the server-side internal components as they are not relevant for the discussion 4 Giovanni Toffetti Carughi In a RIA instead, the client-side logic handles each user interaction updat- ing interface sub-elements only. Furthermore, when client-server communica- tion is needed to transfer some data, it can be performed in the background, asynchronously, allowing continuous user interaction with the interface. This, together with HTTP/1.1 persistent connections, are the key ingredients of a technique called HTTP trickling, one of the solutions enabling servers to initiate server-to-client communication (server-push) once a first HTTP request is per- formed. The programming technique for server-push is also known as “Comet”, relevant implementations are Cometd2 , Glassfish3 , and Pushlets4 , but most Rich Internet Application development frameworks provide their own. A user can therefore be notified of events occurring outside of his application instance, either other users actions or in general occurring on the server. Direct communication between client applications is in general not possible5 , but the server can be used as an intermediary (i.e., a broker ). Most on-line applications (especially collaborative) can benefit from this ap- proach: think for example of work-flow-driven applications, shared calendars or whiteboards, stock trading platforms, plant monitoring applications, and so on. Interaction of other users, server internal or temporal events, Web service in- vocations can all be occurrences that can trigger a reaction on a user client application. Considering the project management case study, server push can be used for instant messaging, or to signal task assignments and task completions in order to immediately start the execution of new tasks. 2.1 Problem statement As Rich Internet Application adoption is experiencing constant growth, a mul- titude of programming frameworks have been proposed to ease their develop- ment. While frameworks increase developer productivity, they fail in providing instruments to abstract from implementation details and provide an high level representation of the final software; this becomes necessary when tackling the complexity of large, data-intensive applications. While Web engineering methodologies offer sound solutions to model and generate code for traditional Web applications, they generally lack the concepts to address Rich Internet Application development. In a previous work [4] we suggested an approach to tackle these shortcomings concerning data and com- putation distribution among components; here, we focus on another essential 2 http://cometd.com/ 3 http://glassfish.dev.java.net/ 4 http://www.pushlets.com/ 5 Web clients are in general not addressable from outside their local area network; in addition most browser plug-ins run in sandboxes preventing them to open connec- tions to other machines than the code originating server. For this reason RIAs only allow direct communication between clients and the server; no direct communication can take place between client instances. Modeling data-intensive Rich Internet Applications with server push support 5 aspect of RIAs: server push and the new interaction paradigms and application functionalities it enables. 3 Approach overview In a traditional Web application, data and computation reside solely on the server. Thus, the whole application state, and all actions upon it, are concen- trated in a single component. In a RIA, distribution of data and computation across the server and different clients causes: – user actions to be performed asynchronously w.r.t. the server and other user applications; – client-side data for each user and server-side data to evolve independently from each other. In order to achieve better reactivity client-server communication in RIAs is re- duced to the minimum: therefore a mechanism is needed to signal relevant events, either to reduce the misalignment between replicated and distributed data, or simply to signal that, at a specific instant, an action is being performed in the distributed system. The classes of actions that are relevant for a system are application-specific. Example For instance, considering our running example, each action upon a task instance can be considered a specific event type, we have event types: Task assigned: when a project manager performs the action of assigning a task to a specific project participant; Task completed: when a project participant marks one of her assigned tasks “completed”. Both actions can be signaled to application users to begin working on the associated or next tasks. 3.1 Notification communication Considering that in a RIA all communication must go through the server (as described in Section 2), only two scenarios apply: 1. An event occurring on a client application has to be notified. In this case the notification starts from a client application, goes to the server, and is eventually delivered to other users; 2. An event occurring on the server has to be notified. In this case only server to client communication takes place. Different aspects can influence the process of communicating event notifi- cations across the system components: for instance how to identify notification recipients, or whether the communication happens synchronously or not. We 6 Giovanni Toffetti Carughi Dimension Name Values Filter location Sender, Broker, Recipient Filter logic Static, Rule-based, Query-based Communication Persistence Persistent (asynchronous), Transient (synchronous) Table 1. Semantic dimensions in RIA event notification call these aspects semantic dimensions, they are listed in Table 1. Semantic di- mension identification is necessary in order to correctly draw the primitives and devise the appropriate patterns covering all their possible combinations. In the following paragraphs we give a brief definition of each aspect. Event filtering: location and logic. Not all users need to be notified of all event occurrences; in distributed event systems the process of defining the set of recipients is generally indicated as event filtering [16] and two dimensions can influence it: where it takes place and how. The former dimension considers the most general architecture for publish / subscribe systems [12] that involves three kinds of actors: a set of publishers, a broker, and a set of subscribers. Events occur at publishers that alert the broker who, in its turn, notifies the subscribers. Thus, the decision of which subscribers to notify can be taken at the publisher, at the broker, or all subscribers can be notified leaving to them the decision of whether to discard or not an already transmitted notification. The latter dimension considers the logic that is used to determine notification recipients: the spectrum of possibilities ranges from statically defined recipients, to conditions on event attributes, to interpreted run-time defined rules (e.g., using a rule engine to detect composite event patterns). Communication persistence. In distributed systems message communication can be [20]: – Persistent : a message that has been submitted for transmission is stored by the communication system as long as it takes to deliver it to the recipient. It is therefore not necessary for the sending application to continue execution after submitting the message. Likewise, the receiving application need not be executing while the message is submitted; – Transient : a message is stored by the communication system only as long as the sending and receiving applications are executing. Therefore the recipient application receives a message only if it is executing, otherwise the message is lost. Depending on the application, some events may need to be communicated in a persistent way to prevent their loss, others only need transient communication. For example, email transmission uses persistent communication: the message is accepted by the delivery system and stored until it is deleted by the recipient; Modeling data-intensive Rich Internet Applications with server push support 7 the sender completes the communication as soon as the message is accepted by the delivery system. Transient communication, instead, does not store the message and requires both sender and recipient to be running and on-line: it is often used when the loss of some event notification is not critical. For instance, in a content man- agement system the event that two users are trying to edit the same resource is important for the colliding users, but if one of them disconnects before receiving the notification it’s no use storing it persistently. 4 Proposed Extensions In this section we present the extensions we propose to cover all the combinations of the previously introduced communication aspects. We will illustrate them in WebML [9], although we stress that they apply in general to most Web engi- neering languages. First we will consider the data model, then the navigation model. 4.1 Extension to the data model Application-specific event types are represented by adding new entities to the data model organised in a specialisation hierarchy. All event types extend a predefined Event entity and can have relationships with application domain entities. We chose to extend the existing data model instead of adding a new event model so that we could leverage existing CRUD6 WebML operations leaving full control to the application designer to: – enable persistent communication by directly storing event occurrences in the database (or client-side storage); – represent and instantiate relations between event occurrences and domain model entities; – instantiate an event base and explicitly draw ECA rules with provision for specific dimensions such as granularity, composite event detection, and event consumption [13]. Example Considering the project management example: the event types ”Task assigned”, and ”Task completed” apply. They are represented in the event hierarchy in Figure 3. The WebML data model of Figure 1 is extended with enti- ties representing the needed event types that are connected by means of relations to the application domain entities. Thus, the events ”Task assigned” and ”Task completed” have a relation with the task to which they refer. In addition to being related to a task, the event ”Task assigned” also has a relationship to the users to which the assignment was made. 6 Create, Read, Update, Delete 8 Giovanni Toffetti Carughi Contact 0:N 0:N Participant User Project 0:N OID Sender Message 0:N Username 0:N 1:1 OID OID 1:1 0:N Password Name Date Email 0:N Manager 0:N 1:N Subject 0:N Recipient Body 0:N Assigned to Belongs to 1:N 1:N 0:N 1:1 Task Task Assigned 1:1 OID Event State Task Completed Description 1:1 Timestamp 0:N Due Date 0:N Next Alarm Time 0:N 0:1 Fig. 3. The data model of Figure 1 extended with event types 4.2 Extension to the hypertext model In order to support event notifications, we added to the WebML hypertext model two operations: send event and receive event. The former allows one to send an event notification to a (set of) recipient(s); the latter is used to receive the notifi- cation and trigger a reaction. Send and receive event operations allow (indirect) communication among users without the need to use data on the server. Each operation is associated with an event type as defined in the extended data model. The event type provides both mapping between send and receive event opera- tions (i.e., operations on the same event type trigger each other) as well as their specific parameter set. Operations for conditional logic (e.g., switch-operation, test-operation, as introduced in [5]) or queries can be used in conjunction with event-related operations in order to specify event filtering: retrieving notification recipients from a database, or discarding notifications upon application-specific conditions. Different patterns apply, catering for the possible combinations of filtering and communication needs (see Section 3.1). {followed if event was Predefined output parameters: Predefined input parameters: succesfully signaled} - sender ID - sender ID - recipients ID set - recipients ID set + - timestamp OK EventType-specific parameters + SendEvent ReceiveEvent EventType-specific parameters No incoming links OK No input parameters Exiting links: KO - 1 OK-link - 0..N transport links EventType EventType Fig. 4. On the left, Send Event operation usage. On the right a Receive Event operation Send event operation A send event operation (Figure 4) triggers the noti- fication of an event. It needs to be explicitly activated by a navigation link or Modeling data-intensive Rich Internet Applications with server push support 9 by an OK or KO-link. It is associated with an event type (see Section 4.1), and consumes the following predefined input parameters: 1. sender [optional]: the unique identifier of the sender of the event (e.g., a user ID, or the server) 2. recipient: the (set of) identifier(s) of the recipient(s) (e.g., user IDs, the server) . The ’*’ wild-card is used to indicate that the event is to be notified to all possible recipients. Additional input parameters stem from the associated event type. Send event operations have no output parameters. C Assign Task TaskID Current Task Current Project Project Members Assign Task UserID NotifyAssignment TaskID TaskID PrjID UserID OK OK Task Project User Task2User Task Assigned [Task2Project] [Project2User] TaskID Fig. 5. The hypertext to assign a task and send a notification Example Considering the project management case-study, the send event operation can be used to signal the assignment of a task to a project participant as in Figure 5. The data-unit Current Task is used to show the selected task to be assigned, Current Project provides the current project identifier to show project participants in the Project Members index-unit. Selecting one, the Assign Task connect-operation is invoked to instantiate a relationship between the current task (with ID TaskID) and the selected user (with ID UserID): the same IDs are provided to the NotifyAssignment send event operation to define the notification recipient and to set the notification parameter identifying the assigned task. Receive event operation A receive event operation (Figure 4) is an event notification listener : it is triggered when a notification concerning the associated event type is received. It is therefore associated with an event type, it has no input parameters, and the following predefined output parameters: 1. sender: the unique identifier of the sender of the event 2. recipient: the id set of recipients of the notification 3. timestamp: the timestamp at server when the event was signaled In addition to the predefined output parameters, a receive event operation also exposes the parameters of the associated event type to be used by other units (e.g., for condition evaluation). Receive event operations only have exiting transport links or OK-links and cannot have incoming links. 10 Giovanni Toffetti Carughi C My Tasks Pop-up RecAssignment New Task Current Tasks TaskID Get User OK UserID CurrentUser Task Assigned Task Task [ID = TaskID] [User2Task] Refresh() Fig. 6. A notification is received and the user interface is updated Example Figure 6 shows the hypertext model of a page receiving a task assignment notification. Page My Tasks shows a list of task assigned to the current user with index-unit Current Tasks. It is a RIA page, marked with ’C’ in the upper left corner, to specify that the page contains client-side executed logic. Thus, the page can establish a persistent connection with the server and receive notifications: when a Task Assigned notification is received, the RecAssignment receive event operation is triggered. Upon activation, the unit passes the TaskID parameter to the New Task data-unit that will retrieve the task details from the server to be shown in a pop-up window; the refresh() signal on the transport link connecting RecAssignment with Current Tasks causes the latter to refresh its content to show the updated task assignments list. A receive event operation can be placed both in a siteview7 (starting an operation chain ending in a RIA page), or in a new diagram: the event view. Respectively the former solution specifies the reaction that will be performed by the client application if the notification recipient is on-line and viewing a determined page, the latter specifies what condition evaluation and actions will be performed when the server (which is supposed to be always on-line) receives the notification. Event view The event view models the server reaction upon receipt of event notifications. Reactions to events are modeled by means of operation chains8 starting with a receive-event-operation. They can trigger any server-side opera- tion such as invoking Web services, sending emails, performing CRUD operations on the database, or signaling new event occurrences. The event view: – provides a mechanism for asynchronous or persistent communication, by letting a designer specify the server reaction to an event notification. This can include making the notification persistent using the database, to asyn- chronously signal the event when the intended recipient is back on-line; 7 The WebML diagram representing the hypertext structure for an application user 8 i.e. Sequences of WebML operations Modeling data-intensive Rich Internet Applications with server push support 11 – can be used together with conditional and query operations to specify bro- ker filtering (Section 3.1) using server-side resources (e.g., databases, rule- engines, subscription conditions); – allows reuse by factoring out operation chains triggered from different sources (e.g., different site views, areas, pages). Task Details User Email Address RecAssignment User Online? Send Email UserID OK KO Task Assigned User.status == Online Fig. 7. If the assignment user is offline, send her an email Example Figure 7 depicts an event-view operation chain for the running example. The application requires that a notification be sent to a user when a task is assigned to her. When the user is off-line, she cannot receive notifications with server push: on the server, the User Online? switch-operation triggers a send-email-operation if the recipient is not immediately reachable. 5 Considerations and experience The primitives and models we propose provide a simple notation for the specifica- tion of server push-enabled Rich Internet Applications. They have been designed so that the combination with WebML primitives enables the complete coverage of the semantic dimensions space individuated in Section 3. – Receive-event-operations used in conjunction with switch-operations provide a mechanism to draw Event-Condition-Action rules distributed both on the server (event view) and client (siteview) applications. This caters for con- cerns such as filtering at recipient and broker, as well as detecting composite events9 . – Send-event operations in concert with query-based units allow the design of different communication paradigms including publish-subscribe, uni-, multi-, and broadcast. WebML units such as the selector unit can be used to cater for both static and query-based filtering to select event notification recipients. – The event view lets a designer specify the behaviour on the server upon event notifications in order to provide support for asynchronous communication and event persistence. 9 e.g. by storing event occurrences in an event base and considering conditions querying it upon event occurrences 12 Giovanni Toffetti Carughi The same primitives can be used to represent other classes of system events such as, for instance, temporal events, external database updates, or Web ser- vice invocations. We have implemented the integration of such events in our prototype, but, due to space reasons, we do not discuss them here10 . Concerning database updates, our solution was inspired by the work in [22]. 5.1 Implementation The implementation of the presented concepts builds on the runtime architecture for WebRatio we developed for our previous work presented in [4]. We developed a working prototype of a code generator from the extended WebML notation to Rich Internet applications implemented using the OpenLaszlo [1] technology. To validate our proposal, we extended it with the needed components for server- push: the resulting architecture is shown in Figure 8. Configuration File: Descriptors - Action Mapping Client Servlet Container Browser HTML Page Model Business Logic H Controller (RTX) Flash Plug-In Descriptors (servlet) Model T Actions Page Services Controller Business Logic http T Unit Services (Script) State Page Services View P Operation Services Objects Operation Services (JspTemplates) Link Services Unit Services S HTML + State View Objects Event Manager (Lzx Components) Auxiliary Services e Custom Tags XmlHttp Event Manager r v Laszlo Presentation Server e (LPS) r Data Tier Data Tier Fig. 8. The runtime architecture of our prototype implementation OpenLaszlo provides natively the concept of a persistent connection 11 to enable server to client communication. Thus, the implementation of the receive event and send event operations on the client-side are quite straightforward. An event handler (Event Manager ) is triggered whenever the Dataset 12 associated with the persistent connection receives a message (an event notification) from the server. The message is an XML snippet, its structure reflects that of the associated event type, each message carries its type information. The Event Manager checks the type information and triggers the appropriate receive event operation instance passing the pointer to the received message. The receive event operation extracts relevant parameters from the message, sets the values for its outgoing parameters and calls the next operation in chain. A send event operation on the client builds, when triggered, an XML snippet reflecting the associated event type structure and whose attribute and text values 10 A complete exposition can be found in [21] 11 http://www.openlaszlo.org/lps/docs/guide/persistent connection.html 12 a data store of XML in OpenLaszlo Modeling data-intensive Rich Internet Applications with server push support 13 stem from the operation input parameters values upon invocation; then it invokes the sendXML() method of the persistent connection. The server-side stub of the persistent connection is a servlet and thus ac- cessible through a regular HTTP request. We extended it so as to be able to intercept event reception on the server and trigger the appropriate server-side operations in the event view (using the server-side Event Manager). The code-generator was used to produce the running code of a personal information management application with features such as a shared calendar, and instant messaging. 6 Related work Although RIA interfaces aim at resembling traditional desktop applications, RIAs are generally composed of task-specific client-run pages deeply integrated with the architecture of a traditional Web application. Web Engineering ap- proaches build on Web architectural assumptions to provide simple but ex- pressive notations enabling complete specifications for code generation. Several methodologies have been proposed in literature like, for example, Hera [23], OOHDM [19], WAE [10], UWE [14], and W2000 [3], but, to our knowledge, none of them addresses the design and development of RIAs with server push support. This work, instead, considers system reaction to a collection of different events depending on any user interaction, Web service calls, temporal events, and data updates. Apart from defining the generic concept of event in a Rich Internet Application, our approach also individuates the primitives and patterns that can be used to notify and trigger reactions upon external events. This is something that, to our knowledge, all Web engineering approaches lack as reac- tions are only considered in the context of the typical HTTP request-response paradigm. Also, the approach we suggest provides the interfaces and notations necessary to integrate external rule engines (e.g., to detect composite events) with the Web application enabling the specification of reactions to events in terms of hypertext primitives (pages, content units, and operations). Both a survey and a taxonomy of distributed events systems are given in [16]: most of the approaches bear the concepts individuated in [18] concerning event detection and notification, or in [12] w.r.t. the publish-subscribe paradigm. To cite but a few relevant works we can consider [2], [8], and [11]. Reactivity on the Web is considered for example in [6] where a set of desirable features for a language on reactive rules are indicated (the actual language is proposed in [17]). With respect to these works, ours addresses events and notifications in a single Web application where on-line application users are the actors to be no- tified. In contrast, the above proposals aim at representing Internet-scale event phenomena with the traditional problems of wide distributed systems such as, for instance, clock synchronization and event ordering [15]. The system we are considering, instead, is both smaller in terms of nodes, and simpler in terms 14 Giovanni Toffetti Carughi of topology: the server acts as a centralized broker where all events are or- dered according to occurrence or notification time. Nevertheless, it enables the implementation of complex collaborative on-line applications accessible with a browser. 7 Conclusions Server push in RIAs provides the means to implement a new generation of on-line collaborative applications accessible from a Web browser. Although notification- based communication of events (e.g., publish / subscribe ) and server-push tech- nologies (e.g., based on AJAX) are well-known and established technologies, the explicit definition of the primitives supporting the modeling of Web applica- tions employing said style of communication, and their introduction to modeling languages are new contributions. In this work we have presented the extension we propose to a Web Engineering language to represent the novel interaction paradigms enabled by Rich Internet application technologies. We considered the possible ways in which events occurring across different system components can be detected, notified, and processed in order to identify a set of simple, yet expressive, primitives and patterns. References 1. OpenLaszlo. http://www.openlaszlo.org. 2. J. Bacon, J. Bates, R. Hayton, and K. Moody. Using events to build distributed applications, 1996. 3. L. Baresi, F. Garzotto, and P. Paolini. Extending UML for modeling Web appli- cations, 2001. 4. A. Bozzon, S. Comai, P. Fraternali, and G. Toffetti Carughi. Conceptual modeling and code generation for Rich Internet Applications. In D. Wolber, N. Calder, C. Brooks, and A. Ginige, editors, ICWE, pages 353–360. ACM, 2006. 5. M. Brambilla, S. Ceri, P. Fraternali, and I. Manolescu. Process modeling in Web applications. ACM Transactions on Software Engineering and Methodology, 2006. 6. F. Bry and M. Eckert. Twelve theses on reactive rules for the Web. In Proceedings of Workshop ”Reactivity on the Web” at the International Conference on Extending Database Technology , Munich, Germany (31st March 2006), LNCS, 2006. 7. A. Carzaniga, G. P. Picco, and G. Vigna. Designing distributed applications with a mobile code paradigm. In Proceedings of the 19th International Conference on Software Engineering, Boston, MA, USA, 1997. 8. A. Carzaniga, D. S. Rosenblum, and A. L. Wolf. Design and evaluation of a wide-area event notification service. ACM Transactions on Computer Systems, 19(3):332–383, 2001. 9. S. Ceri, P. Fraternali, and A. Bongio. Web Modeling Language (WebML): a mod- eling language for designing Web sites. In Proceedings of the 9th international World Wide Web conference on Computer networks : the international journal of computer and telecommunications netowrking, pages 137–157, Amsterdam, The Netherlands, 2000. North-Holland Publishing Co. Modeling data-intensive Rich Internet Applications with server push support 15 10. J. Conallen. Building Web applications with UML, 2nd edition. Addison Wesley, 2002. 11. G. Cugola, E. Di Nitto, and A. Fuggetta. The JEDI event-based infrastructure and its application to the development of the OPSS WFMS, 2001. 12. P. T. Eugster, P. A. Felber, R. Guerraoui, and A.-M. Kermarrec. The many faces of publish/subscribe. ACM Comput. Surv., 35(2):114–131, 2003. 13. P. Fraternali and L. Tanca. A structured approach for the definition of the seman- tics of active databases. ACM Trans. Database Syst., 20(4):414–471, 1995. 14. N. Koch and A. Kraus. The expressive power of UML-based Web engineering. In Second Int. Workshop on Web-oriented Software Technology. Springer Verlag, May 2002. 15. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558–565, 1978. 16. R. Meier and V. Cahill. Taxonomy of Distributed Event-Based Programming Systems. The Computer Journal, 48(5):602–626, 2005. 17. P.-L. Patranjan. The Language XChange: A Declarative Approach to Reactivity on the Web. PhD thesis, University of Munich, Germany, July 2005. 18. D. S. Rosenblum and A. L. Wolf. A design framework for Internet-scale event observation and notification. In M. Jazayeri and H. Schauer, editors, Proceedings of the Sixth European Software Engineering Conference (ESEC/FSE 97), pages 344–360. Springer–Verlag, 1997. 19. D. Schwabe, G. Rossi, and S. D. J. Barbosa. Systematic hypermedia application design with OOHDM. In Hypertext, pages 116–128. ACM, 1996. 20. A. S. Tanenbaum and M. V. Steen. Distributed Systems: Principles and Paradigms. Prentice Hall PTR, Upper Saddle River, NJ, USA, 2001. 21. G. Toffetti Carughi. Conceptual Modeling and Code Generation of Data-Intensive Rich Internet Applications. PhD thesis, Politecnico di Milano, 2007. 22. L. Vargas, J. Bacon, and K. Moody. Integrating databases with publish/subscribe. In ICDCS Workshops, pages 392–397. IEEE Computer Society, 2005. 23. R. Vdovjak, F. Frasincar, G. Houben, and P. Barna. Engineering semantic Web information systems in Hera. Journal of Web Engineering, 2(1–2):3–26, 2003.