Patent ID: 7676791

Claim:
A system for implementing a service concurrency model for services constructed using an object-oriented language through use of language extensions in a message-oriented language, the language extensions extending a functionality of the services that execute in an object oriented environment so as to unify the object-oriented and message-oriented languages through message passing between a plurality of services, the system comprising: a memory; and a processor, operatively coupled to the memory, the processor executing computer executable components comprising: a plurality of services constructed using the object oriented language; a contract component that facilitates communication among the plurality of services, the contract component defined as interface declarations for asynchronous message passing between the plurality of services, the contract component being represented in source code in each of the plurality of services as express send and receive operations, the contract component including: a message component, the message component declaring a set of messages that can be used as an alphabet for patterns used to establish formal protocol definitions for a communication protocol; and a protocol component, the protocol component describing allowable sequences of message exchange in accordance with formal protocol definitions for a communication protocol; an orchestration component, the orchestration component configured to interpret the contract component and to facilitate the handling of a plurality of messages and a plurality of message targets in the plurality of services, the orchestration component including: a compiler component, the compiler component configured to implement a compilation algorithm to break the source code of the services down into pieces to allow parallel waits to occur without blocking thread context of the plurality of services, the compilation algorithm breaking apart the source code that could block a thread to allow one of: multiple points in the source code waiting in parallel or a thread context continuing with a different computation; and wherein the orchestration component directs the compiler component to generate a schedule for at least a subset of the plurality of services in accordance with the contract component, the schedule facilitating parallelism of the subset of services by allowing services in the subset to wait in parallel with other services in the subset.