There are two main types of distributed systems: request/response and message passing. Request/response systems focus on invoking operations and return values, while message passing focuses on constructing and dispatching messages without expecting a response. There are also two main architecture styles: object-oriented and service-oriented. Object-oriented styles involve communicating with object instances and have stateful communications, while service-oriented styles involve communicating with services through a standardized interface in a stateless manner. A shift is occurring from object-oriented to service-oriented architectures, as the latter allows for looser coupling and better scalability through messages. Web services can support both request/response and message passing systems.