Efficient distributed implementation of semi-replicated synchronous groupware
Proceedings of the 9th annual ACM symposium on User interface software and technology - UIST '96
The Model View Controller (MVC) architecture has proven to be an effective way of organizing synchronous groupware applications. Distributed implementations of MVC, however, can suffer from poor performance. This paper demonstrates how optimized semi-replication of MVC architectures can lead to good performance over both local and wide area networks. We present a series of optimizations to network communication based on specific communication properties of groupware. These optimizations have
... n implemented in the Clock groupware development toolkit, allowing programmers to develop applications directly in the high-level MVC style, with Clock automatically providing optimized performance. Timings of an application developed in Clock show that usable speed was obtained in a highly interactive groupware application running between Toronto and Calgary, with a typical latency of 190 ms per round trip message. The paper discusses the tradeoffs involved in the algorithms, and presents timings to demonstrate the effectiveness of the different approaches. The timings show that when running over a wide area network, the best optimization can achieve a factor 60 speedup over the naive implementation of distributed MVC. INTRODUCTION The implementation of groupware is challenging, due to the need to support a high-level, iterative and incremental development method, while at the same time requiring excellent performance. Considerable research effort has been devoted to finding means of providing high level support for the development of groupware while also providing sufficient performance in the resulting applications. One promising approach has been to organize groupware applications around derivatives of the Model-View-Controller (MVC) architecture  . The key idea of MVC is that the data underlying the application (the model) is separated from input handling code (the controller) and display maintenance code (the view). In a groupware application, each user forms a separate view-controller pair, while the model represents the shared data and application functionality. The MVC architecture frees the programmer from issues of maintaining consistency between user's views, even in the presence of relaxed WYSIWIS (what you see is what I see) behaviour. Groupware toolkits based on MVClike architectures include RendezVous , Weasel  and GroupIE . Efficient distributed implementation of groupware based on MVC has proved difficult, due to the latency of network communication between the distributed components of the user interface. As will be seen in section 4, our experiments show that in a straightforward implementation of a distributed MVC architecture, as much as 95% of view update time can be spent waiting for the network. This paper presents techniques for optimizing the implemention of distributed groupware based on the MVC architecture, and demonstrates experimentally how effective each technique is. The three optimizations, caching, request prefetch and request presend identify communication patterns typical of groupware, and provide optimal behaviour for those patterns. Experiments show that request presend, the most effective of the optimizations, leads to usable performance in a highly interactive groupware application running on a standard Internet connection between Toronto and Calgary, a distance of 3,000 km.