80 likes | 215 Views
CMT607 Distributed Computing Systems Objects, Services, Resources or know your cat before you skin it. Andrew Harrison a.b.harrison@cs.cf.ac.uk. Remote Objects. Remote Objects are the transferral of a local/single address space paradigm to a distributed environment.
E N D
CMT607Distributed Computing SystemsObjects, Services, Resourcesorknow your cat before you skin it Andrew Harrison a.b.harrison@cs.cf.ac.uk
Remote Objects • Remote Objects are the transferralof a local/single address space paradigm to a distributed environment. • The fact that the object you are invoking resides on a different machine is often transparent • Simple to use - no new concepts to digest • Example remote object technologies: • CORBA, DCOM, Java RMI • But distributed environments are different from local ones.
Problems with RPC • Stem from the fact that distributed environments are different from local ones: • What if the remote node goes down? • What if the network goes down? • How long should I wait before deciding something has gone wrong if I hear nothing? • How do I find a remote object? • How do I make sure my concept of its lifetime/state are synchronized with the remote host’s concept of its lifetime/state? • How do I ensure that the messages I send arrive in the same sequence at the other end? • A single address space is tightly coupled through the operating system
Service Orientation • Service Orientation is an attempt to make distributed systems more loosely coupled. • SOA is an example of a composite computing model: • “an architecture that uses distributed, discovery-based execution to expose and manage a collection of service-oriented software assets” • In Object Orientation an object maintains data, and operations for accessing/mutating that data. • State and operations are combined into single entity - think BankAccount.java • In Service Orientation state and the operations on it are separated • A service is an interface to something with state, but we don’t know and don’t care what that thing is. • All we see is the service interface which definescapabilities. • The Service interface provides operations on the state but doesnot have state in itself. Example: Web Services
Benefits of Service Orientation • A service does not have state, so I don’t have to worry about lifetime issues • The service interface is defined in a contract • The contract describes the messages received and sent by the service. (The service is the contract) • Each message contains everything the service needs to know to perform its task - nothing is implied through ‘shared knowledge’. • So I don’t have to ‘know’ what sort of thing it is, or what classes it inherits from like I do with objects. Instead, I can interpret the contract at runtime and communicate with the service immediately. • Service interfaces are usually coarse-grained • because of the composite model • The lack of state in services and the fact that messages contain all necessary information means many interactions can be idempotent • They have no further side-effects if they are repeated. - I send a message, wait… get no response, so send it again without worrying that I have induced an inconsistent state at the server side. • Easy to swap out/replicate backend
Resource Orientation • How is Resource Orientation different from Service Orientation? • Everything that can be named is a resource. • More commonly, resources are anything that can be located on the network. • A resourcehas state, but no operations over that state. • Operations on resource state are defined by the address scheme at which resources are located. • If a resource is located at: http://example.com/abc, then the operations potentially allowed on that resource are defined by the HTTP protocol, i.e. GET, PUT, POST, DELETE etc. - use OPTIONS to find out • Example: The Web
Benefits of Resource Orientation • No proliferation of service interfaces • The Web is based on a handful of operations defined by HTTP. • Imagine if every website had its own programmatic interface • In contrast every Web Service has its own proprietary interface. • State is explicit • Because a resource is a representation of state, firewalling and caching are much simpler because servers are not receiving unknown application-specific payloads. • Provenly scalable…
Objects, Services, Resources data resource object service data data representation operations operations operations Access protocol