MIT Media Lab, E14-525
Designing systems in a service-oriented manner, in which application features are decoupled and run as independently executing services over a network, is becoming more commonplace and popular. Service-oriented programming provides a natural way to model and manage many types of systems and allows software development teams to achieve operational flexibility, scalability and reliability in a cost-effective manner. In particular, it has been used quite successfully for Web and mobile applications. However, building, deploying, and maintaining service-oriented systems is challenging and requires extensive planning, more effort during development, a detailed understanding of advanced networking techniques, and the use of complicated concurrent programming.
This thesis presents a new programming language called Silo. Silo comprises features that address key conceptual and pragmatic needs of service-oriented systems that, holistically, are not easily satisfied by existing languages. Broadly, these needs include: a unified distributed programming model, a simple yet efficient construct for concurrency, a familiar yet extensible syntax, and the ability to interoperate with a rich ecosystem of libraries and tools.
In this dissertation Salman Ahmad describe how Silo's features, constructs, and conventions satisfy these needs. Then, he presents various compiler and runtime techniques used in Silo's implementation. Lastly, he provides a demonstration, through a variety of programming patterns and applications, of how Silo facilitates the design, implementation, and management of service-oriented systems.