Affichage des articles dont le libellé est SOA. Afficher tous les articles
Affichage des articles dont le libellé est SOA. Afficher tous les articles

vendredi 27 août 2010

Styles d'Architecture

... de ne recevoir jamais aucune chose pour vraie, que je ne la connusse évidemment être telle: c'est-à-dire, d'éviter soigneusement la précipitation et la prévention; et de ne comprendre rien de plus en mes jugements, que ce qui se présenterait si clairement et si distinctement à mon esprit, que je n'eusse aucune occasion de le mettre en doute ... (la méthode de la vérité - René Descartes)

Introduction

Il existe trois principaux types d’architecture logicielle pour réaliser des systèmes distribués.
  1. Object-Oriented
  2. Resource-Oriented
  3. Service-Oriented
La plupart des nouveaux systèmes sont désormais réalisés selon une architecture orientée service (SOA ou Service Oriented Architecture), qui se caractérise par une communication Point à Point - sans état.

Les 3 styles d’architecture

ObjetRessourceService
GranularitéInstance de classeInstance de ressourceInstance de service
CaractéristiqueMéthode/ParamètreRequête/URLRequête/Message
AdressageUn seul objetUne URL par ressourceUn point par service
Interface applicativeSpécifique à l’objetGénérique (http)Spécifique au service (WSDL)
Format de donnéesSpécifiqueAucunSchéma XML

Façade

Avec l'avènement des architectures orientées services, il est apparu un ensemble de bonnes pratiques destinées à cloisonner les applications par le biais de façades. Une façade est une représentation technique d'une interface fonctionnelle. En pratique, on dit qu'une façade constitue le contrôleur des cas d'utilisation d'UML. Elle assure les échanges entre la couche cliente et les services applicatifs.

Conception Objet ou Service ?

L'immense majorité des architectures orientées services s'appuieront sur des frameworks orientés objets. Bien que ces deux paradigmes ne soient pas antinomiques, un certain nombre de questions se posent quant à leur cohabitation.

Manières d'exposer un traitement

Prenons un cas concret, une application de gestion bancaire dont les spécifications fonctionnelles sont les suivantes: un client possède un compte dont le type peut être un CODEVI, ou un compte courant. Chaque compte comporte un ensemble de propriétés (libellé, plafond, ...) et expose des services (Debiter(), Crediter(), CalculImposition(), ...).

Dans un modèle d'architecture n-tiers classique, voici les deux conceptions possibles.

1) Architecture Orientée Objet: placer les traitements dans les objets métiers
Après analyse des cas d'utilisation, la classe GestionCompte est créée et contient deux méthodes:
  • Crediter()
  • Debiter()



L'appel aux services Crediter() et Debiter() est délégué dans l'objet métier Compte. En pratique s'il n'est pas rare de trouver ce type de conception, l'approche qui prévaut généralement consiste à implémenter les services proprement dits dans le contrôleur de cas d'utilisation (GestionCompteFacade). Dans ce cas, le contrôleur délègue les services aux méthodes polymorphiques Crediter() et Debiter() présentes dans les classes du modèle de domaine.


2) Architecture Orientée Services: placer les traitements dans la couche de service
Dans cette approche, les méthodes Crediter() et Debiter() se chargent d'accéder aux propriétés des comptes afin de vérifier la solvabilité du client. Si la démarche est similaire à la précédente, la philosophie est quelque peu différente. On enlève les méthodes Crediter() et Debiter() de la classe Compte pour les déplacer vers la couche de service.


L'architecture Orientée Services (SOA)

L'exemple précédent montre qu'il est très difficile d'exposer un service polymorphique par le biais d'une seule méthode dans la façade fonctionnelle. Cette approche va à l'encontre de la philosophie de l'héritage et nuit clairement à l'évolutivité du code.

Dans l'exemple 1) d'architecture orientée objet nous avions une seule méthode pour représenter l'ensemble de nos trois entités métier. Avec l'exemple 2) d'architecture orientée services, nous obtenons une liste de méthodes spécifiques pour un type donné. De plus et contrairement à l'exemple 1) de l'orientation objet, l'ajout d'un nouveau compte nécessitera plus tard la modification de la couche de service. Il faudra perpétuellement synchroniser la façade avec l'ajout de nouvelles entités métiers. En résumé, lorsqu'on s'interdit d'insérer du code dans les objets métier, il est difficile de concilier vertus de l'héritage et exposition de services.


Alors, pourquoi tant de SOA ?

L'orientation services est un complément important de la programmation objet et qui applique les leçons apprises de la démarche composants, de l'approche orientée messages et du traitement d'objets distribués. L'orientation Services diffère de l'orientation Objet principalement dans la façon dont elle définit le terme application. Le développement orienté objets se focalise sur les applications conçues à partir de différentes bibliothèques interdépendantes de classes. Le développement orienté services se concentre lui sur un système conçu comme un ensemble de services autonomes. Cette différence a un impact profond sur l'approche à adopter dans ce type de développement ... (Don Box, équipe Microsoft)

En résumé, cette nouvelle vision de l’intégration des applications est l'argument majeur pour les entreprises afin de maintenir leur compétitivité et leur croissance.

Les pièges du SOA

Un projet SOA peut échouer parce que les développeurs adoptent une approche ascendante c'est à dire une orientation objet. La création d’une architecture axée sur les services aux seules fins de créer ce genre d’architecture, sans lien avec le cadre de fonctionnement de l’entreprise, s’avère un projet sans fondement sur des principes organisationnels ou des lignes directrices, ce qui donne une mise en œuvre chaotique, sans pertinence pour l'entreprise. Par ailleurs, un mégaprojet d’architecture axée sur les services qui est fondé sur une approche descendante requiert tellement de temps que, lorsqu’il est terminé, il ne répond plus aux besoins de l'entreprise... (Microsoft, l'équipe SOA)

Il reste encore des zones d'ombre, non seulement lors de la défintion du rôle d'un service, mais aussi comme dans l'exemple précédent à travers l'exposition de méthodes polymorphes. Pas de solution miracle, il incombera de créer l'architecture la plus souple et la moins contraignante pour chaque nouveau projet.

Liens intéressants

jeudi 26 août 2010

Solutions Microsoft

Face à un nouveau projet deux choix d'architecture sont possibles: soit nous avons carte blanche, soit la technologie est imposée par le client et son environnement. Le second choix est plus complexe puisqu'il faudra composer avec cet impératif ...

Introduction


Les technologies portées par les solutions Microsoft sont en constante mutation. Cet article analyse l'évolution des produits Microsoft afin de construire une architecture logicielle cohérente dans le contexte actuel.

Le Framework .NET

... Seulement, notre environnement change et force est de constater qu’Internet ou les techniques associées conditionnent désormais l’évolution de l’Informatique. Les besoins ont évolué vers l’intégration des technologies Web (Webisation) dans les systèmes d’information et l’intégration de systèmes hétérogènes. La plate-forme .NET est la réponse de Microsoft aux nouveaux besoins et contraintes de l’Informatique industrielle ou personnelle. Son principal rôle est d’être le socle des futures applications centrées ou non sur les technologies Internet. Sa conception est très proche de celle de la plate-forme Java dont elle améliore les concepts. Si la plupart des technologies qu’elle renferme ne sont pas nouvelles, elles révolutionnent complètement la philosophie Windows, la perception des systèmes d’information et les architectures qui en découlent. Le modèle .NET porte le concept de l’unification, aussi bien dans les développements, les outils que dans les langages de programmation. Dans ce contexte, les technologies liées à un code binaire spécifique montrent leurs limites. Parallèlement, Java a conquis de plus en plus de développeurs par sa richesse, son ouverture et ses standardisations... (.NET, Dick Lantim)

Depuis son apparition en 2002, la plate forme .NET se décline en plusieurs versions majeures.

Interfaces Utilisateurs - Client Légers et Serveur Web

[1996] Active Server Pages:
Le server Web utilise COM (ActiveX) pour communiquer avec des ressources du poste serveur. Il renvoie ensuite de l'HTML au client via le protocole HTTP. Un serveur ASP est capable de se connecter à des bases de données, de lire des fichiers XML et possède des composants pour la gestion de l'upload, du FTP... Il peut lire et écrire des documents issus d'Office (Excel, Word...) en passant par le système COM.

[2002] ASP.NET:
La technologie ASP.NET repose sur le Common Language Runtime (CLR) partagé par tous les logiciels du Framework.Net.
Très différente de l'ancien ASP, l'architecture d'ASP.NET permet de passer plus facilement du développement classique d'applications Windows au développement Web. ASP.NET fournit un gestionnaire d'événements ainsi que la possibilité de créer des pages web composées de Widget (ou zone de contrôle), similaires à celles des interfaces d'applications Windows habituelles.

[2006] ASP.NET AJAX, MVC:
Incluant à la fois des composants côté client et côté serveur, AJAX permet de créer des applications Web en ASP.NET qui peuvent mettre à jour des données sans un rechargement complet de la page du navigateur (aller-retour avec le serveur). Cette technologie repose sur l'objet XMLHttpRequest, ainsi que sur le langage JavaScript et le DHTML.

Interfaces Utilisateurs - Client Riches

[1990] Les wrappers Win32, la préhistoire
Les systèmes d’exploitation Windows contiennent nativement toutes les bibliothèques nécessaires à la gestion des fenêtres. Dans un premier temps l’accès à ces fonctions API écrites en langage C se faisait directement dans le même langage. Jugé beaucoup trop coûteux en temps de développement, Microsoft a fourni par la suite plusieurs bibliothèques objet afin de cacher la complexité de cette API/C Win32.
  • Microsoft Foundation Classes (MFC) est la bibliothèque Win32 dédiée aux développeurs C++.
  • Les VB Forms sont un autre ensemble d’objets pour les développeurs Visual Basic. Reposant sur une construction visuelle des fenêtres par simple glisser déplacer, la rapidité de mise en oeuvre de cette technologie associée à la simplicité de Visual Basic (VB) lui-même a fait de cet environnement de développement l’un des plus utilisé au monde ...
[2000] Les Windows Forms, la renaissance
Windows Forms est le nom de la première interface graphique incluse dans .NET Framework, fournissant l'accès via du Managed code à l'API/C des fenêtres Windows. Un des points clés de la productivité est le degré de facilité avec laquelle le développeur lie les contrôles graphiques; tableaux de valeurs, listes déroulantes ... avec les données: c’est le Data Binding. Que ce soit en mode WinForms ou Web Forms, ce binding est bidirectionnel depuis .NET 2.0. Il reste d'ailleurs exploitable depuis les extensions serveur AJAX.

[2006] WPF/XAML, on recommence tout ...
Avec la publication de .NET 3.0, Microsoft délaisse les Windows Forms pour introduire des spécifications graphiques entièrement nouvelles. Il s'agit d'abandonner les anciennes API/C telles que User32.dll et GDI32.dll, pour s'appuyer uniquement sur DirectX. Conçue par Microsoft comme une alternative à l'API OpenGL pour les jeux ou les applications multimédia, DirectX apporte une richesse inégalée en matière d'interfaces graphiques.

Tout comme le Framework .NET, WPF est à la fois une spécification graphique et une implémentation par Microsoft de cette spécification sur la forme de libraries. XAML est quant à lui un langage descriptif pour manipuler WPF d'une manière proche du langage HTML, on parle du couple WPF/XAML.
Les nouveautés de WPF débordent largement du cadre de l'IHM pour atteindre le back-end. En ce qui concerne les documents: WPF introduit un format de description de package (System.IO.Packaging) qui favorise la manipulation des relations entre le document et les éléments qui le composent(images, styles, chapitres, annotations, etc.). Le format de packaging System.IO.Packaging est déjà exploité par Office 2007 avec Open XML et par Vista avec Xml Paper Specification (XPS). XPS est un format de description de documents mis en page.

Silverlight - Riche ou Léger ?

Silverlight a comme concurrents principaux Adobe Flash et Flex. Il s'agit d'un plugin pour navigateur Web multiplate-forme (Windows, Apple, Linux), qui permet de développer des applications Web riches dans un moteur de rendu vectoriel. Les applications utiliseront XAML pour décrire l'interface graphique, et un langage .NET comme C# pour le comportement (code).

Interfaces avec MSOffice

L’intégration des applications avec les outils bureautiques MSOffice est un facteur essentiel de la productivité du poste client. Microsoft a toujours fournit les moyens de communiquer avec ses applications Office, notamment avec le protocole OLE Automation. La dernière version publiée en Janvier 2007 facilite nettement les possibilités d'interactions grâce a l'introduction d'un nouveau format d'échange: OpenXML.

Interfaces de communication

Jusqu'à la publication du Framework .Net 3.0, l'offre reposait sur des sous-systèmes de communication bien distincts:
  • .Net Remoting: première tentative dans l'environnement .Net pour fournir une approche abstraite des communications entre objets distants.
  • System.EnterpriseServices: représente la classe de base du Framework .NET pour toutes les application souhaitant utiliser des services COM+ tels que Microsoft Transaction Server (MTS), Microsoft Message Queue Server (MSMQ), ...
  • Web Services: dés l'apparition de son premier Framework .NET, Microsoft cache la complexité des standards Services Web derrière des bibliothèques de composants comme ASMX puis Web Services Enhancements (WSE).
Avec l'apparition du Framework .Net 3.0, le modèle de programmation Windows Communication Fondation (WCF) fournit une véritable couche d'abstraction qui unifie et simplifie la mécanique d'intégration pour: services Web, .NET Remoting, Microsoft Transaction Server, Microsoft Message Queuing, ...

Cette couche permet en outre une redistribution des rôles:
  • Le développeur conçoit et développe son service sans se soucier de son implémentation à cible. C'est-à-dire qu'il ne s'intéresse qu'aux caractéristiques structurantes du service pour son intégration au sein d'une Architecture orientée services : le service fonctionne-t-il en mode Singleton, en mode Asynchrone, avec une Callback ...
  • L' intégrateur (ou l' administrateur), lui, détermine le protocole mais aussi le niveau et le mode de sécurisation du service ainsi développé.

Le portail collaboratif SharePoint

SharePoint est la solution de Microsoft pour les réseaux sociaux. Les fonctionnalités des produits SharePoint sont la gestion de contenu, les moteurs de recherche, la gestion électronique de documents, les forums, ... Depuis l'arrivée de la version 2010, le portail SharePoint repose sur le couple ASP.NET 3.5/Silverlight et offre de multiples possibilités d'accès:
  • Navigateur Internet
  • Client Silverlight
  • API .NET
  • API REST basée sur WCF pour l'accès aux donnée de format JSON, ATOM, ..

SOA et solutions d'Orchestration

Les Architectures Orientées Services (SOA) reposent principalement sur:
  • L’utilisation d’interface d’invocation Simple Object Access Protocol (SOAP)
  • Un vocabulaire de description des données qui dans la cas d'un service Web comprend: Web Services Description Language (WSDL) et eXtensible Markup Language (XML).
Ce dispositif permet de réutiliser les applicatifs métiers, le but étant de permettre à l’entreprise de s’adapter rapidement à un nouveau contexte de marché. Une architecture SOA pourra être également complétée par:
  • Une gestion de la sécurité comme Secure Sockets Layer (SSL)
  • Un orchestrateur de services pour constituer des processus. Microsoft fournit deux solutions (WF/Biztalk) dont la plus simple repose sur le composant Windows Workflow Fondation (WF) du Framework .NET 3.0. Pour des cas plus complexe tels que l'orchestration de processus distribués Microsoft oriente vers son produit Biztalk server.
  • Une gestion transactionnelle avec two-phase commit où le moniteur attend de recevoir l'acquittement (le commit) des différents serveurs sollicités. Si un problème survient, le gestionnaire de la transaction sera en mesure de demander aux autres serveurs de défaire les mises à jour partielles effectuées afin de maintenir l'intégrité des données.
Avec le lancement de la fondation CodePlex en septembre 2009, Microsoft souhaite une nouvelle politique d'ouverture dans le monde Open Source.
En 2009, CodePlex a reçu ses premiers fonds de la part de Microsoft, soit un montant d'un million de dollars. La mission affichée est de permettre l'échange de code ainsi qu'une entente entre éditeurs de logiciels et les communautés Open Source.

Windows Azure, toujours plus loin ...

Windows Azure est la dernière plate forme publiée par Microsoft: orientée Cloud Computing, entièrement virtualisé et disponible depuis l'Internet. Azure est un système massivement distribués dans les datacenters de Microsoft, c'est à dire qu'il fonctionne sur des milliers de serveurs à travers le monde. Azure couvre la partie infrastructure qui demeure ainsi invisible en s'appuyant sur Windows server 2008, Hyper-V, IIS7, les langages .NET, ...
Azure comme d'autres solutions cloud computing permet d'avoir une Informatique à la demande totalement interopérable et capable de montée en charge très fortes.

Liens intéressants