Indigo is suited for building Service Oriented (SO) systems. Service Orientation helps architects and developers design and build connected systems. Service Orientation complements Object Orientation and helps express services in a platform and implementation independent manner.
Services are programs that are communicated with via message exchange. Services are autonomous, which means they exist and run on their own. Functionality exposed by these services are described using standards-based schema and contracts. Many applications can call a service, and the service won’t crash if one of the consuming applications breaks. A system is a collection of deployed services cooperating in a given task. Systems are built to adapt to change.
Indigo is implemented in .NET; therefore, services are created with any CLR-compliant language. Indigo services are exposed on the wire via standards based technologies (such as XML, XSD, SOAP, WSDL, and other Web services specifications).
Indigo services are bound to the network through one or more channels attached to a port. Each channel is built dynamically at connection time to support the communications requirements negotiated between caller and service. This way, an Indigo service can talk to both a local Indigo service via IPC and a remote client app via HTTP at the same time.
Earlier .NET Framework distributed technologies such as ASP.NET Web services, Enterprise Services, .NET Remoting, COM+/MSMQ can be used from within Indigo applications. Indigo can also interoperate on the wire with ASP.NET Web services, Enterprise Services, COM+/MSMQ, and any applications built on infrastructure that conforms to Web services standards.
Microsoft will provide mechanisms for migrating applications that use most existing frameworks to services.
Microsoft asserts that Indigo will also be instrumental in facilitating true peer-to-peer communication, where PC users can “exchange data, share resources, locate other users, communicate, and collaborate directly in real time” without the need for Internet servers.