A Service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network.
The basic principles of service oriented architecture are independent of vendors, products and technologies. A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online.
A service has four properties according to one of many definitions of SOA:
It logically represents a business activity with a specified outcome
It is self-contained
It is a black box for its consumers
It may consist of other underlying services
A service presents a simple interface to the requester that abstracts away the underlying complexity acting as a black box. Further users can also access these independent services without any knowledge of their internal implementation.
ProtoFramework
The protoframework.jar jar file is a SOA framework implemented in Java which is able manage a list of services and their black-box implementations.
The implementations (called modules) do not depend on other modules. They typically declare which services they provide or they subscribe to. The framework takes care of the invocation of these services: