@Article{ CarpinetiLanevePadovani09, author = {Samuele Carpineti and Cosimo Laneve and Luca Padovani}, title = {{P}i{D}uce -- {A} {P}roject for {E}xperimenting {W}eb {S}ervices {T}echnologies}, journal = {Science of Computer Programming}, volume = {74}, number = {10}, year = {2009}, pages = {777-811}, issn = {0167-6423}, url = {http://www.di.unito.it/~padovani/Papers/piduce.pdf}, publisher = {Elsevier}, doi = {10.1016/j.scico.2009.03.002}, abstract = {The PiDuce project comprises a programming language and a distributed runtime environment devised for experimenting Web services technologies by relying on solid theories about process calculi and formal languages for XML documents and schemas. The language features values and datatypes that extend XML documents and schemas with channels, an expressive type system with subtyping, a pattern matching mechanism for deconstructing XML values, and control constructs that are based on Milner's asynchronous pi calculus. PiDuce programs are compiled into typesafe object code. The runtime environment supports the execution of PiDuce object code over networks by relying on state-of-the-art technologies, such as XML schema and WSDL, thus enabling interoperability with existing Web services. We thoroughly describe the PiDuce project: the programming language and its semantics, the architecture of the distributed runtime and its implementation. A running prototype is available at \texttt{http://www.cs.unibo.it/PiDuce/}.} }