samedi 28 août 2010

Questions/Réponses

Introduction

L'architecture logicielle décrit d'une manière schématique les constituants de systèmes informatiques et leurs interactions. Contrairement aux spécifications produites par l'analyse fonctionnelle, le modèle d'architecture ne décrit pas ce que doit réaliser un système mais comment il doit être conçu pour répondre aux besoins fonctionnels. L’analyse décrit quoi faire alors que l’architecture décrit comment le faire.

Position du problème

Internet: le connectif remplace le collectif. Le plus ignorant d'entre nous jouit désormais d'un accès assez facile à plus de connaissances que le plus grand savant du monde entier. Cette aise rend désuètes les thèses universaitaires où l'érudit recopiait pesamment toute la documentation possible et l'exhibait pour montrer son expertise têtue ... (Michel SERRES, temps des crises)

Les systèmes informatiques sont soumis constamment à de petites révolutions technologique et marketing. Dans ce contexte, les solutions fournies par des éditeurs comme Microsoft connaissent elles aussi des évolutions rapides et importantes. Cet article a pour objectif de résumer les caractéristiques de solutions techniques mises en oeuvre par Microsoft. Les paragraphes suivants forment une liste de Questions/Réponses pour réaliser des architectures techniques cohérentes, en s'appuyant sur ces produits et solutions Microsoft.

Face à cette avalanche presque quotidienne de nouveaux moyens informatiques, il convient évidemment de rester informé, mais aussi critique dans nos choix.

Notre époque se caractérise par la profusion des moyens et la confusion des intentions ... (Albert Einstein)

Quel style d'architecture adopter ?

La plupart des systèmes informatiques sont désormais distribués. Dans ce domaine, on distingue 3 principaux styles d'architecture.

Pourquoi utiliser d'autres produits logiciels ?

S'appuyer sur des solutions et produits logiciels existants est devenu incontournable.

"... Dans les années 1990, si on voulait faire communiquer deux PC entre eux, il fallait (parfois) écrire à la main le code d'encapsulation du message, programmer l'algorithme d'envoi et de réception, gérer la synchronisation des sockets... Aujourd'hui un simple composant .NET fait tout le travail ! Ces frameworks techniques de composants ont allégé la charge et accélérés le développement logiciel. Dans le même temps, ils ont diminué la complexité, le codage se résumant par un assemblage de librairies. La programmation est devenue plus orientée métier (celui de l'utilisateur, de l'entreprise) grâce aux langages objets, aux frameworks techniques, et aux environnement prêts à compiler qui décharge des problématiques d'accès aux données, de communication ..."

(Rodolphe Bellenguez, co-fondateur Cap Fi Technology)

Quels produits Microsoft choisir ?

Le choix est pléthorique et les caractéristiques des produits devront être examinées avec le plus grand soin. En effet, la solution retenue doit apporter des réponses techniques adaptées, c'est à dire simples, fiables, rapides à mettre en oeuvre...
Rappelons que l'objectif d'une architecture logicielle est d'apporter des réponses techniques pour satisfaire les besoins fonctionnels. Le but n'est pas de générer de nouveaux problèmes techniques avec le développement d'extensions sur des produits Microsoft choisis à la hâte.

Quelles sont les autres plateformes Windows possibles ?

Microsoft propose aussi deux autres types de plate formes:
  1. Le .NET Micro Framework qui apporte un environnement riche, basé sur la technologie .Net, pour les systèmes embarqués.
  2. Windows Embedded Compact 7 qui supporte les Smartphones Windows 7.

Les systèmes Microsoft sont-ils compatibles ?

Tous les systèmes Windows actuels sont issus du noyau Windows NT. Cette origine commune à fortement réduit les problèmes de compatibilité. A l'exclusion des programmes s'exécutant en mode noyau (drivers), les sytèmes Windows fournissent un bon niveau de compatibilité aux applications. Des difficultés pourront survenir avec des machine 64 bits, lorsque des applications 32 et 64 bits seront amenées communiquer. Dans le but d'assurer une migration progressive vers les architectures 64 bits, Microsfot équipe les versions 64 bits du sous système Windwows 32 On Windows 64 (WOW64).
WoW64 fournit un environnement qui permet à des applications Windows 32 bits de s'exécuter sans recompilation sur les systèmes 64 bits.

Les composants Microsoft sont-ils interopérables ?

L'interopérabilité entre composants d'une machine Windows se résume actuellement par le Marshalling entre des données non managées (code natif) et la plate forme .NET. La documentation technique de Microsoft apporte une explication à ce concept: un Marshaller fournit une collection de méthodes pour l'allocation de mémoire non managée, la copie de blocs de mémoire non managée et la conversion de types managés en types non managés ...

Le fait que .NET ne soit pas encore directement intégré au système d’exploitation Windows entraîne une cohabitation forcée entre les anciens processus (non managés) et ceux qui désormais supportent l'exécution de la CLR (managés). Afin de masquer ces différences, le Marshaller doit résoudre deux types de problèmes:
  1. L'environnement d'exécution.NET (CLR) peut décider à tout moment de déplacer ses objets de la mémoire managée. Cette caractéristique interdit à du code natif de référencer directement des zones mémoire manipulées par la CLR, les pointeurs natifs deviendraient rapidement invalides...
  2. Le type d'argument d'une méthode native ainsi que son mode de transmission peuvent être très différents de celui d'une méthode du framework .NET
Un appel de fonction dans une dll non managée est généralement pris en charge par un ensemble de classes du Framework .Net et porte le nom de Platform Invocation (P/Invoque).

Les communications entre objets COM et .Net feront intervenir des mécanismes de marshalling supplémentaires avec le création de wrappers COM.

Liens intéressants

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

mercredi 25 août 2010

Interop COM / Net Fx

COM

L'histoire a commencé en 1993 avec Object Linking and Embedding (OLE 2.0). Le fondement de OLE était Component Object Model (COM), un standard de compatibilité binaire entre objets.

A l'époque, ce système procurait de nombreux avantages:
  • Un cadre standardisé pour faire interagir des composants logiciels (objets COM) pré-compilés.
  • Un cadre standardisé pour intégrer des composants logiciels (objets COM) développés indépendamment.
  • La possibilité de développer des composants logiciels (objets COM) dans n'importe quels langages, puis de les faire interagir.

Pratiquement, les OLE ou COM permettent de réaliser trois sortes de copiage plus ou moins sophistiqués:
  1. Copier un tableau EXCEL et le coller dans un document WORD.
  2. Copier un tableau EXCEL et le coller avec liaison dans un document WORD, de telle sorte que les valeurs des cellules du tableau EXCEL dans le document WORD soient actualisées en même temps que les valeurs des cellules du tableau dans le fichier EXCEL.
  3. Copier un tableau EXCEL avec un mini tableur EXCEL et le coller dans un document WORD. Le tableau EXCEL bénéficie ainsi des principales fonctionalités de l'application EXCEL standard, lesquelles permettrons de modifier le tableau dans le document WORD sans faire appèle à l'application EXCEL.

Puis en 1996, Microsoft généralise l'usage de COM avec les technologies DCOM et ActiveX:
  • Les Distributed COM (DCOM) sont une extension de la technologie COM qui permettent d'intégrer dans un document un objet stocké sur une autre machine du réseau.
  • Les ActiveX sont une extension de la norme COM qui autorise un hébergement dans les navigateurs Internet.

En 1997 apparaitra Microsoft Transaction server (MTS), un composant COM dédié aux transactions distribuées. L'évolution de cette technologie sera terminée en 1998 avec la publication COM+ et son lot de services standardisés tels que: Distributed Transaction Coordinator (DTC), In Memory dataBase (IMDB) et Object Pooling.

L'arrêt du développement de la technologie COM+ en 1999 annonce l'arrivée de son successeur, le Framework .NET (2002).

Interopérabilité entre objets COM et .Net

COM et .Net sont des architectures très différentes et dans la pratique on rencontre souvent des difficultés à faire communiquer ces deux mondes. Bien que le Framework .Net soit en mesure de créer tout le code d'accès à des objets COM ou à l'inverse de générer des appels aux interfaces COM, la complexité des mécanismes sous-jacents demeure bien réelle. L'extrait ci-dessous est issu de la documentation technique de Microsoft.

COM diffère du modèle objet .NET Framework sur plusieurs points importants:
  • Un client COM doit gérer explicitement la durée de vie de son objet COM. Le Common Language Runtime (CLR) gère automatiquement la durée de vie des objets dans son environnement.
  • Les clients des objets COM déterminent si un service est disponible en demandant explicitement une interface qui fournit ce service et en récupérant le cas échéant un pointeur d'interface en retour. Les clients des objets .NET peuvent obtenir automatiquement une description de la fonctionnalité d'un objet par le mécanisme de réflexion.
  • Les objets NET résident dans la mémoire managée par l'environnement d'exécution du Framework .NET. Celui-ci peut déplacer a tout moment des objets dans sa mémoire et mettre à jour toutes les références aux objets qu'il déplace. Les clients non managés tels que de objets COM ayant obtenu un pointeur désignant un objet, s'attendent à ce que cet objet reste au même emplacement. Ces clients ne disposent d'aucun mécanisme leur permettant d'utiliser un objet dont l'emplacement n'est pas fixe.
Le runtime .NET surmonte ces différences en fournissant des classes wrapper pour faire croire aux clients à la fois managés et non managés qu'ils appellent des objets dans leur environnement respectif. Chaque fois qu'un client .NET (managé) appelle une méthode sur un objet COM, le runtime crée un wrapper Runtime Callable Wrapper (RCW). Les wrappers RCW permettent, entre autres, de gommer les différences entre les mécanismes de référence managé et non managé. Le runtime crée également un wrapper COM Callable Wrapper (CCW) pour inverser le processus, permettant ainsi à un client COM d'appeler de façon transparente une méthode sur un objet .NET.


Liens intéressants

mardi 24 août 2010

WPF / Windows Forms

Des interactions entre les deux spécifications graphiques du Framework .NET que sont WPF et les Windows Forms seront parfois nécessaires:
  • Exploiter depuis une application graphique WPF, un ensemble conséquent de librairies réalisées auparavant avec la technologie des Windows Forms. Actuellement, il n'existe pas d'outil pour convertir une application Window Forms vers WPF.
  • Réutiliser depuis WPF des fonctionnalités disponibles ou accessibles uniquement depuis des Windows Forms.

L'appel d'une fenêtre Windows Forms depuis une fenêtre WPF ne pose Généralement pas de problème particulier. Des difficultés pourront survenir quand cette séparation est impossible, c'est à dire lors de l'inclusion d'une fenêtre Windows Form dans le contenu d'une fenêtre WPF (hosting Window).
Cependant, bien que ces deux spécifications graphiques soient très différentes dans leur implémentation, l'interopérabilité reste simple en raison d'éxécution commune en code managé et sur la même CLR. Dans ce cas, la couche d'interopérabilité sera réalisé par un contrôle WPF (ElementHost, WindowsFormsHost) chargé d'accueillir la fenêtre Windows Froms au sein de l'application WPF.

lundi 23 août 2010

Interfaces Office

Depuis la publication de ses premières applications Office, Microsoft fournit la possibilité de les piloter au moyen d'interfaces COM, c'est l'Automation.

Avec Automation, vous pouvez utiliser la fonctionnalité de publipostage de Microsoft Word pour générer des lettres types à partir de données d'une base de données sans que l'utilisateur se rende compte que Word est impliqué. Vous pouvez même utiliser toutes les fonctionnalités de graphiques et d'analyse de données de Microsoft Excel à l'aide d'Automation. Vous n'avez pas besoin d'écrire votre propre moteur de calcul pour fournir la multitude de fonctions mathématiques, financières et techniques fournies par Excel. Il vous suffit d'automatiser Microsoft Excel pour « emprunter » ces fonctionnalités et les incorporer dans votre propre application ... (Extrait du Centre de Support Microsoft)

Plus précisément:

Automation (anciennement OLE Automation) est une technologie qui vous permet de tirer parti d'une fonctionnalité ou du contenu d'un programme existant et de l'incorporer à vos propres applications. Automation est basé sur le composant COM (Component Object Model). COM est une architecture logicielle standard basée sur des interfaces, et conçue pour séparer le code en objets autonomes ou composants. Chaque composant expose un jeu d'interfaces par lesquelles toute la communication avec le composant est gérée. Automation est constitué d'un serveur et d'un client. Le serveur Automation est l'application qui expose ses fonctionnalités au travers d'interfaces COM à d'autres applications, appelées clients Automation ... (Extrait du Centre de Support Microsoft)

Intégration avec les applications .NET

Microsoft fournit officiellement des Interfaces en code managé pour communiquer avec ses applications Office; ce sont les Primary Interop Assemblies (PIAs).
Les PIAs sont des assemblies .NET (en code managé) qui communiquent directement avec les objets COM (librairies de code non managé) exposés par les applications Office. Une PIA MSOffice est donc un intermédiaire entre le monde .NET et des librairies MSOffice, écrites le plus souvent en langage C++ et exposés par des interfaces COM. Chaque version d'Office aura ses propres versions de PIA, mais chaque version de PIA restera compatible avec les précédentes. Cependant depuis la version 2007 d'Office et les sépcifications WPF apportées par .NET 3.0, la communication entre une application .NET et MSOffice est devenue beaucoup plus simple grâce au standard OpenXML.

Visual Basic for Applications (VBA) est une déclinaison de Visual Basic dédié à l’automatisation des applications bureautiques MSOffice.
VBA permet trois types de développements:
  • Les développements orientés documents. Le code VBA est attaché au document, il se manifeste lorsqu’un utilisateur ouvre le document.
  • Les développements orientés modèles. Le code VBA est intégré aux modèles disponibles, typiquement réunis dans un répertoire partagé accessible depuis tous les postes.
  • Les développements orientés applications. Dans ce cas on parle d'un Add-In à l’applicationle car le code VBA est chargé au démarrage sans necessiter de document. Pour Excel l’Add-In VBA se présente sous forme d’un fichier d’extension .xla, en C++ ce sera un fichier d’extension .xll.
VBA est un bon outil pour personnaliser l’environnement de travail Office mais ses limitations apparaissent dès l’industrialisation du développement, c'est à dire lorsque le volume et les origines (différentes équipes, développeurs isolés, ...) du code VBA vont croissant. Office 2007 conserve cette technologie, en plus des nouvelles possibiltés liées au format OpenXML.

Visual Studio Tools for Office (VSTO) s'intègre à l'outil de développement Visual Studio pour proposer un accès aux applications Office via un modèle objet de l’environnement .NET.
Avec l'aide de l'outil de développement Visual Studio et des langages .NET, VSTO autorise la création d'applications de qualité: tests unitaires, contrôle des sources, programmation orientée objet ... En résumé, le développement d’applications Office intégrées à d’autres systèmes a tout intérêt à reposer sur VSTO plutôt que VBA.
Enfin, les innovations d'Office 2007 augmentent les possibilités d'intégration de la suite bureautique dans les applications d'entreprise. C'est à travers le concept des Office Business Applications que Microsoft décrit les architectures qui tirent parti de ces nouveautés.

Office Business Applications

Office System est un des moyens promus par Microsoft pour résoudre la problématique du last-mile of productivity. A l'image des réseaux de communication dont le dernier kilomètre de connectivité peut être le plus coûteux, les systèmes d'information d'entreprise, même correctement conçus côté back-end, pêchent souvent par un manque d'intégration sur le poste de l'utilisateur final.
Où est le gain en productivité d'une architecture SOA si les processus métier sont au final soumis aux aléas du copier-coller et à l'Import/Export de fichiers ?
L'approche Office Business Applications est centrée sur Office System. Elle s'applique à toutes les couches de l'architecture depuis les données jusqu'aux interactions homme-machine. L'extensibilité de l'interface graphique est importante mais ne suffit pas à garantir une intégration en profondeur. Ce sera les nouveaux composants aptes à s'exécuter au sein des couches business et data qui feront la différence:
  • L'arrivée d'Open XML, nouveau format XML des documents Office, permet aujourd'hui de manipuler les documents Office sans devoir instancier les exécutables. La voie est donc ouverte pour mettre en place des traitements métiers sur les documents sur les couches non IHM.
  • L'hébergement de Workflow Foundation (WF) par le serveur documetataire Sharepoint. La définition de workflow spécifiques au métier de l'entreprise est possible soit directement depuis Sharepoint Designer soit depuis l'environnement de développement Visual Studio.
  • Business Data Catalog fait le lien entre les données métier dans Office SharePoint Server 2007.

Business Data Catalog

Cette nouvelle fonctionnalité introduite avec Office SharePoint Server 2007 fournit un moyen d'intégrer les données métier (SAP, Siebel, ...) dans SharePoint sans écriture de code. Business Data Catolog (BDC) est une couche d'indirection et d'abstraction au-dessus des services métiers. Qu'il s'agisse de services Web internes ou externes, de base de données ou d'annuaires OLAP, BDC en produit une vue homogène dont la description repose sur un méta modèle. La mise au point des méta-données de description ne requiert pas d'expertise de développement, mais demande toutefois une bonne connaissance d'XML et des bases de données. Une fois enregistrés dans le BDC, les données et services peuvent être consommés sans plus de développement.

InfoPath

Office InfoPath répond au besoin bien précis mais omniprésent de la gestion des formulaires de saisie, depuis la collecte au sein une interface graphique ergonomique jusqu’à l’intégration des données collectées dans les processus métier. InfoPath est une application autonome qui fonctionne sous deux modes distincts.
  • En mode design, l’auteur du formulaire choisit sa ou ses sources de données parmi les sources proposées par InfoPath (SQL Server, fichier XML ou service Web). Le designer compose ensuite son formulaire et travaille la mise en forme par les outils habituels d’Office. Enfin il publie son formulaire. Plusieurs moyens de diffusion sont disponibles, dont la publication vers un site SharePoint, par email ou par simple dépôt sur un dossier partagé.
  • En mode utilisateur, le formulaire peut être rempli depuis un navigateur Web, par Office InfoPath, par une application .NET, ...
    C’est un mode de développement rapide pour des applications de saisie de données. Dans un premier temps, des formulaires seront créés par des utilisateurs, puis les équipes techniques pourront définir des modèles de formulaires réutilisables. Enfin, les modèles de formulaires seront utilisées pour saisir et transporter des informations dans le système.

Liens intéressants

dimanche 22 août 2010

ASP.NET Ajax, MVC

procure aux clients légers une ergonomie supplémentaire que le HTML seul ne permet pas.

ASP.NET Ajax

Comme tous les Frameworks Ajax, ASP.NET Ajax repose sur des librairies JavaScript offrant au minimum le téléchargement asynchrone des données et le rafraîchissement partiel d'une page HTML. Ces deux fonctionnalités évite à l'utilisateur un rechargement total accompagné de la disparition de la page que nous connaissons tous. L'Ajax de Microsoft n'est pas entièrement lié à ASP.NET, plus précisément il est composé de trois blocs distincts:
  • Microsoft Ajax Library est un ensemble de classes JavaScript indépendant de tout environnement serveur, y compris ASP.NET.
  • ASP.NET 2.0 Ajax Extensions, est une librairie de classes .NET destinée à faciliter l'usage d'Ajax lors du développement sous ASP.NET. Ces classes sont chargées côté serveur. En termes de développement, elles s'intègrent facilement à Visual Studio pour simplifier le développement Ajax réputé ardu.
  • ASP.NET AJAX Control Toolkit est une librairie de contrôles qui reposent sur les extensions Ajax et permettent de mettre en oeuvre rapidement sous Visual Studio des éléments graphiques tels que des
    boites de dialogue modales, des panneaux rétractables, etc.

ASP.NET MVC

Enfin, la version 3.5 du Framework .Net va améliorer l'architecture ASP.NET pour la rapprocher des standards du moment, avec la fourniture d'une librairie pour le modèle MVC (Modèle-Vue-Contrôleur.)

Liens intéressants