Frequently Asked Questions

General questions

Q: What is the target audience for BeepBeep?
Any web service provider who expects custom-built AJAX applications to access its resources. By providing a copy of BeepBeep, along with a contract file describing its interface specification, client applications can use BeepBeep to monitor in real time whether their application follows the prescribed contract.
Q: Isn't it just enforcing a WSDL specification?
No. WSDL specifications describe the structure of request-response messages, but do not provide the room for constraints on the sequence of messages, or specify contracts where data values and message ordering are intertwined. These constraints have to be included as plain-text comments attached to the specification. BeepBeep allows these constraints to be expressed formally, and automatically enforced in the same way as XML Schemas can be validated. See the constraints described in the quick demo tour and try to figure out how to enforce them through WSDL. ;-)
Q: Does BeepBeep keep in memory the whole history of input/output messages?
No. BeepBeep reads the messages and discards them once they have been analysed and returned to the normal control flow of your application. For example, if a contract property states that "every user that logs in must eventually log out", there would be no point in keeping in memory a message that is neither a login, nor a logout message. Hence, for contract properties that require comparing values in a message to values in a future message, BeepBeep keeps only these values, not the whole message, and only for as long as necessary.
Q: How big is BeepBeep?
BeepBeep is composed of two files, a Javascript include (7 kb) and a .jar applet (43 kb). The Javascript can be minified, which means that the total added volume is less than 50 kb.

To execute the applet, the client requires a plain JRE; no other classes or dependencies are required by BeepBeep.

Our experiments show that for typical properties, BeepBeep adds an overhead in the range of 10 milliseconds to process and monitor each message on the client. This, in turn, might save valuable CPU time on the servers accessed by the client by preventing invalid messages from reaching them.

Main menu Logo