Microsoft is bezig met de ontwikkeling van een nieuw besturingssysteem, Windows Longhorn genaamd. In deze Windows-versie zullen een drietal zaken grondig gaan veranderen: (1) het bestandssysteem wordt aangepakt en krijgt meer relationele mogelijkheden (WinFS), (2) de grafische engine gaat op de schop en deze krijgt de mogelijkheid om allerlei effecten uit te voeren (Avalon) en (3) het communicatiesysteem tussen applicaties zal grondig veranderd gaan worden (Indigo). Over dit laatste onderdeel heeft C|Net een artikel geschreven waarin uitgelegd wordt wat de voornaamste veranderingen zullen gaan zijn. Meer informatie over Indigo is terug te vinden op deze MSDN-pagina's. Bij MSDN is ook meer informatie te vinden over WinFS en Avalon.
Op dit moment maken veel programma's gebruik van het Component Object Model (COM) en het Distributed Component Object Model (DCOM) om gegevens en objecten tussen programma's te kunnen delen. Indigo gaat hier, als uitbreiding op .NET, echter verandering in brengen. Microsoft heeft besloten om deze programmeermodellen achter zich te laten en zich te gaan richten op een nieuw model. Dit nieuwe model zal veel gebruik maken van XML om gegevens uit te wisselen tussen programma's. Dit uitwisselen van data zal overigens niet meer via objecten verlopen, maar via services. Dit programmeermodel, waarbij de aandacht is gericht op services, staat tegenover de Java 2 Enterprise Edition-standaard, die vooral de nadruk legt op objecten.
Don Box, software architect bij Microsoft, heeft dit tijdens de Developing Software for the Future Microsoft Platform-conferentie afgelopen maandag toegelicht. Volgens hem heeft het object georiënteerde programmeren niet alle voordelen gebracht die beloofd werden. In de jaren negentig van de vorige eeuw werd gezegd dat bijna alles mogelijk was met de objecten, dit bleek echter niet zo te zijn. Objecten konden bijvoorbeeld maar met matig succes ingezet worden als distributiemedium. Om communicatie mogelijk te maken tussen programma's waren altijd class-, jar- of dll-bestanden nodig. Hierdoor leek het wel alsof programma's onderling goed communiceerden, maar uiteindelijk bleek toch dat de verschillende programma's te dicht bij elkaar moesten komen om communicatie mogelijk te maken.
Om dit probleem op te lossen heeft Microsoft het services-idee ontwikkeld. Programma's kunnen alleen met elkaar samenwerken door het versturen en ontvangen van berichten. Ieder programma dat gegevens aan een ander programma kan en wil leveren, wordt een service genoemd. Programma's of applicaties die deze gegevens bij het andere programma komen halen, worden clients genoemd. Een systeem van services en clients heeft de naam 'connected system' meegekregen. Programma's zullen samen kunnen werken, ook al is de onderliggende programmacode verschillend. Dit is mogelijk doordat er gebruik gemaakt wordt van XML als distributiemedium.