Services are designed for the communications among many different systems. To communicate with different types of systems (such as Windows and Linux), there require standardized protocols and message formats.
1. Connected Systems
The “connected system” is an application that is distributed across multiple computer nodes such as computers in a domain. MS provides many communication frameworks for connected systems.
- COM+/DCOM : component-oriented
- .NET Remoting : component-oriented
- MSMQ : message-oriented
Each technology requires the same key infrastructure (such as Windows or .NET) for all participating nodes. Even more each comes with a unique programming model.
Recently, the industry demands more interoperable architecture. Services expose units of functionality via messages. They are much more flexible (not necessarily powerful though).
The two most popular types of services are SOAP and REST.
- SOAP : XML-based; works with any transport protocol; can be enhanced with WS-* protocols
- REST : based on identity and operate resources; works with HTTP
The RESTful services tend to use public web scenarios that requires high scalability.
SOAP uses XML as a main message format and make use of more advanced WS-* features.
- Each service is modeled as a “resource“
- A resource is identified with unique ids such as URIs
- HTTP verbs (GET, POST, PUT, DELETE) are used as a service contract for the specified resource
5. SOA (Service Oriented Architecture)
Service Oriented is very abstract term. It does not represents specific technologies. Rather, it is a design paradigm of how information can be communicated within distributed networks.
- Separation of concerns
In the Microsoft world, there have been a couple of technologies:
- ASMX (ASP.NET Web Services) : SOAP over HTTP
- WSE (Web Services Enhancements): ASMX + WS-Security + Simple TCP Services
- WCF : Unified Model of various service types (SOAP ..), transport protocols (HTTP, TCP …), and message formats (XML, MTOM …)
- ASP.NET Web API : Restful-based