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 I describe how Silo's features, constructs, and
conventions satisfy these needs. Then, I present various compiler and runtime
techniques used in Silo's implementation. Lastly, I provide a demonstration,
through a variety of programming patterns and applications, of how Silo
facilitates the design, implementation, and management of service-oriented
Thesis Supervisor: Sep Kamvar