Currently web services constitute one of the most important topics in the realm of the World Wide Web. Composition of web services lets developers create applications on top of service-oriented computing platforms. Current web services choreography and orchestration proposals, such as BPEL4WS, WSCDL, and WSCI, provide notations for describing the message flows in web service interactions. However, such proposals remain at the description level, without providing any kind of formal reasoning mechanisms or tool support for checking the compatibility of web services based on the proposed notations. In this talk, I will present our work on compositional construction of web services using the Reo coordination language and constraint automata. Reo is an exogenous coordinational language based on channels. We investigate the possibility of representing the behaviour of web services using constraint automata as black-box components within Reo circuits. We describe the orchestration of web services by the product of corresponding constraint automata, and use Reo circuits for choreography of web services. We investigate the issues of description, orchestration, and choreography of web services at a unifying abstract level, based on constraint automata, which have been used as the semantics of the coordination language Reo, allowing us to derive a natural correspondence relationship between orchestration and choreography.