Distributed Systems and Applications
Dr. E. Tuosto
Computer networks and distributed applications have a paramount role in all-day life. Nowadays, it is hard to imagine stand-alone systems or applications. Practically, any modern computing device offers the possibility of being connected with other devices. At higher level, applications aim at exploiting networking capabilities of systems and tend to be more and more interconnected and communicating themselves.
Programming this kind of distributed applications can result a hard task if not done at the appropriate level of abstraction. There are two main complex aspects to face with: (i) distributed systems are frequently made of heterogeneous devices and interact through many different communication infrastructure; (ii) modern distributed systems have different tiers (e.g., TCP/IP level, operating system, network system, etc.). Middlewares provide an abstraction of many low-level details of systems. They are meant to simplify software development and application integration by interfacing the application level with lower tier of distributed systems so that the programmer does not have to worry about implementation details. Also, middlewares allow the programmer to integrate applications developed for different execution context and in different times.
The course reviews some notions of concurrent and distributed programming (e.g., threads and RMI) and presents the main models and principles behind the middlewares that in the last years many vendors (Microsoft, IBM, Sun, Oracle) have proposed. In fact, these proposals differ each other not only with respect to the technologies or architectures adopted, but also with respect to the underlying coordination models. The course also presents the use of some of the most common middlewares in the development of web-based and distributed applications.