SOA - Service Oriented Architecture has evolved from the Distributed Programming weakness and to overcome the limitations of the Distributed programming.
SOA is a software design and software architecture design pattern for distributed programming providing application functionality as services to other applications. It is independent of any vendor, product or technology. It is a standard as how services has to be written and consumed.
SOA or Service oriented architecture is an architecture style for building business applications by means of services. Application comprises collection of services which communicate through messages.
SOA is based on the concept of a service. 
An endpoint is the entry point for such a SOA implementation.
SOA specifies that the services requires loose coupling. Loose Coupling means they are mostly independent. Generally, loose coupling is recommended because it's easier to test and maintain.
Tenets of SOA
There are 4 tenets of SOA
  1. Boundaries are explicit: Services communicate by sending messages across boundaries. These boundaries are formal and explicit. The methods that a client may use shall be easy to use and well defined, so that the Services should be easy to consume.
  2. Services are Autonomous: Services shall not be dependent on others. Change of one service shall not affect another in any way.
  3. Services share schema and contract but not class: A scheme represent the data that will be sent, contract contains the defined methods for a service. To make a system loose coupled you share scheme and contract instead of classes and objects.
  4. Services compatibility is based on policy: A policy to use a service may be that a particular type of binding is required so it may be used. Anyone that want to use this service, must connect to it with this type of binding 
WCF is a Microsoft framework for building Service-Oriented applications.