Annonce PDC 2008 : les technologies CCR et DSS seront disponibles de façon indépendante de Robotics Studio. Ce nouveau packaging est lié à la montée en puissance de l’utilisation de CCR et DSS pour des applications d’entreprise (orientées Services, Composition, et possibilité d’observer et rejouer des exécutions).

CCR – Concurrency & Coordination Runtime - et DSS – Decentralized Software Service – sont un ensemble de classes pour les frameworks .Net et .Net Compact pour faciliter la création d’applications distribuées avec un faible couplage et s’exécutant de façon concurrente. Les frameworks CCR et DSS sont légers, ils peuvent s’intégrer dans une implémentation SOA existante.

On retrouve des caractéristiques du couple WCF / WF telles que l’orientation services, le couplage faible et la composition  mais dans le cas de CCR et DSS, il s’agit de frameworks spécialisés pour une exécution ultra-rapide et dans un contexte fortement concurrentiel.

image

Les références citées lors de la PDC sont “Windows Live” pour la navigation et la coordination des IO, “Tyco” pour gérer les évènements dans le cadre d’une solution de contrôles d’accès (je me souviens d’une vidéo sur Channel9…), et "Siemens Infrastructure Logistics" pour un système de manipulaiton d��emails.

“We deal in milliseconds and microseconds, and there are not very many commercial products that we can take off the shelf and integrate into our product that can meet our demanding performance criteria…” Hamid Salemizadeh, Director of Engineering, Reading & Coding, Siemens Infrastructure Logistics Inc.

Dans une future version de .Net, le runtime de CCR reposera sur le runtime Concurrency des Parallel Extensions pour .Net, soutenu par Intel.

Comment savoir si vous devez utiliser ou non CCR et DSS

Le toolkit CCR et DSS propose un modèle de programmation très léger pour créer des applications distribuées, à faible couplage et dans un contexte fortement parallèle. Voici quelques contextes d’utilisation :

  • Des applications orientées Input / Output (et non orienté logique métier) dont la gestion est effectuée de façon asynchrone
  • L’architecture peut être vue comme une série de pipes et de filtres (orientation données) avec un couplage faible et distribuée
  • La nécessité de s’exécuter sur des matériels sur lesquels on souhaite minimiser l’utilisation des ressources (.Net Compact)

Voici par ailleurs des cas où le toolkit ne s’applique pas :

  • Mise en oeuvre de transactions locales ou distribuées
  • Correlation de messages dans une conversation de plus haut niveau, incluant une gestion d’états
  • Mise en oeuvre de processus longs
  • Scénarios orientés algorithmique plutôt que données / messages.