The CloudBrowser Web Application Framework
Files
TR Number
Date
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
While more and more applications are moving from the desktop to the web, users still expect their applications to behave like they did on the desktop. Specifically, users expect that user interface state is preserved across visits, and that the state of the interface truly reflects the state of the underlying data. Unfortunately, achieving this ideal is difficult for web application developers due to the distributed nature of the web. Modern AJAX applications rely on asynchronous network programming to synchronize the client-side user interface with server-side data. Furthermore, since the HTTP protocol is stateless, preserving interface state across visits requires a significant amount of manual work on behalf of the developer. CloudBrowser is a web application framework that supports the development of rich Internet applications whose entire user interface and application logic resides on the server, while all client/server communication is provided by the framework. CloudBrowser is ideal for single- page web applications, which is the current trend in web development. CloudBrowser thus hides the distributed nature of these applications from the developer, creating an environment similar to that provided by a desktop user interface library. CloudBrowser preserves the user interface state in a server-side virtual browser that is maintained across visits. Further- more, multiple clients can connect to a single server-side interface instance, providing built-in co-browsing support. Unlike other server-centric frameworks, CloudBrowser's exclusive use of the HTML document model and associated JavaScript execution environment allows it to exploit existing client-side user interface libraries and toolkits while transparently providing access to other application tiers. We have implemented a prototype of CloudBrowser as well as several example applications to demonstrate the benefits of its server-centric design.