A method for communicating between a first component-oriented Web gadget and a second component-oriented Web gadget to facilitate creation of a Web mashup that includes content from a plurality of Web services, comprising: defining a contract-based communication channel to facilitate controlled and verifiable communication between the first component-oriented Web gadget and the second component-oriented Web gadget, wherein the contract-based communication channel as an exposed method, property, or event is specified by a contract that is a communication protocol containing a pre-defined specification of a format of messages and valid message sequences along the channel such that the channel is verifiable and the protocol can be queried to determine which communication protocols have been implemented, wherein access to the communication channel is controlled to enable a decision if an access is granted or denied; creating the first component-oriented Web gadget that is encapsulated such that data and code within the first gadget are hidden from other gadgets and frames; creating the second component-oriented Web gadget that is encapsulated such that data and code within the second gadget are hidden from other gadgets and frames; providing the first component-oriented Web gadget and the second component-oriented Web gadget access to the verifiable and controlled communication channel such that the first and the second component-oriented Web gadget can communicate with each other only through the exposed contract-based communication channel; and using the contract-based communication channel by the first component-oriented Web gadget to call a function of the second component-oriented Web gadget through the exposed method, property, or event and running the called function in the isolated execution environment of the second component-oriented Web gadget that received the call for the function rather than the execution environment of the first component-oriented Web gadget and passing a result to the first component-oriented Web gadget via the contract-based communication channel. defining a contract-based communication channel to facilitate controlled and verifiable communication between the first component-oriented Web gadget and the second component-oriented Web gadget, wherein the contract-based communication channel as an exposed method, property, or event is specified by a contract that is a communication protocol containing a pre-defined specification of a format of messages and valid message sequences along the channel such that the channel is verifiable and the protocol can be queried to determine which communication protocols have been implemented, wherein access to the communication channel is controlled to enable a decision if an access is granted or denied; creating the first component-oriented Web gadget that is encapsulated such that data and code within the first gadget are hidden from other gadgets and frames; creating the second component-oriented Web gadget that is encapsulated such that data and code within the second gadget are hidden from other gadgets and frames; providing the first component-oriented Web gadget and the second component-oriented Web gadget access to the verifiable and controlled communication channel such that the first and the second component-oriented Web gadget can communicate with each other only through the exposed contract-based communication channel; and using the contract-based communication channel by the first component-oriented Web gadget to call a function of the second component-oriented Web gadget through the exposed method, property, or event and running the called function in the isolated execution environment of the second component-oriented Web gadget that received the call for the function rather than the execution environment of the first component-oriented Web gadget and passing a result to the first component-oriented Web gadget via the contract-based communication channel.