Call-by-contract is a novel invocation mechanism for Web services, which allows services to call each other according to their behaviour. We have proposed both a design framework and a core programming language for call-by-contract service orchestration. We have devised several analysis techniques for constructing orchestration plans which are always guaranteed to respect the requested contracts.
Long running transactions are distributed transactions lasting for long periods of time, which thus can not enjoy the classic atomicity property. In case of failure of the transaction, a compensation is executed to take the application to a consistent state.
We have studied primitives and techniques for modelling long running transactions in the field of Service-Oriented Computing. We have both studied and compared classic approaches (try-catch, SAGAs,... ) and proposed new ones, such as dynamic compensation update. We have also tackled the peculiar aspects that emerge in the SOC environment, such as the problems of smooth session closure and of remote fault notification.