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

ASP.NET

représente l'ensemble d'outils et de librairies du Framework .NET
dédié aux applications Web. Avec l’apparition du Framework .NET en 2002, les Actives Server Pages ont été entièrement repensées.

ASP.NET 1.0, la refonte d'ASP

ASP.NET 1.0 garde les caractéristiques de base des ASP: il combine HTML, langages de programmation, composants serveur et il s’exécute côté serveur. En revanche certaines limitations reconnues des ASP classiques sont dépassées avec ASP.NET:
  • Séparation présentation/traitements. Le style de programmation des ASP imposait au sein d'une même page un mélange de HTML et de script. La clarté du code et donc la maintenabilité de l'application Web en souffrait, il était difficile de réaliser des sites Web complexes. Pour améliorer ce point, ASP.NET permet une séparation claire entre la présentation (le HTML) et la logique applicative (par exemple le code C#). Cette séparation est rendue possible par l'introduction du concept de page de code cachée (code-behind) associée à chaque page HTML.
  • Objets. L'orientation objet vient combler les limites de l'aspect procédural des ASP classiques en permettant, voire en imposant une structuration de la logique de traitement.
  • Performances. Les pages ASP classiques n'étaient pas compilées mais interprétés ce qui entrainait des performances moindres que les technologies concurrentes. ASP.NET compile le code.
  • Réutilisabilité. Une amélioration importante d'ASP.NET est l'introduction de parties de pages Web réutilisables – les contrôles serveurs. Ils permettent de développer une seule fois des parties de
    pages Web qui seront réutilisées dans de multiples pages.
  • Homogénéité. Les ASP classiques avaient l'inconvénient de mélanger les technologies ASP et COM, forçant le développeur à passer d'un environnement de développement à un autre. A l'inverse ASP.NET repose entièrement sur le Framework .NET, socle homogène contenant le traitement des pages Web comme les traitements métier.
  • Ouverture. Les ASP classiques verrouillaient les accès à la mécanique de bas niveau de traitement de requêtes HTTP. En revanche ASP.NET ouvre ces couches de bas niveau à la programmation. Il est ainsi possible de développer son propre code de gestion des requêtes dans le cas d'impératifs spécifiques non couverts par les fonctions par défaut d'ASP.NET (modéle de pipeline HTTP).

ASP.NET 2.0, l’aboutissement

Avec ASP.NET 2.0 le temps de développement de sites Web classiques est considérablement réduit. Les fonctionnalités récurrentes sont en effet prises en charge par de nouvelles librairies du Framework .NET 2.0 consacrées:
  • Les Pages Maîtres (Master Pages)sont des modèles de mise en page d’un site Web. Les zones définies par les pages maîtres seront remplies dynamiquement par les contenus adéquats, typiquement une bannière d'entête, un menu de navigation, une colonne de news ...
  • Les Web Parts permettent la personnalisation des pages par l'utilisateur final.
  • Des nouvelles librairies de classes facilitent l'implémentation de fonctionnalités souvent réécrites telles que la gestion des menus et la navigation du site, la gestion des utilisateurs et des droits associés, la gestion de caches sur le serveur, ...

Liens intéressants

Active Server Pages

Introduction

Active Server Pages (ASP) est une technologie Microsoft permettant de développer des pages Web dynamiques. Elle utilise des scripts insérés aux pages HTML qui sont exécutés sur le serveur Web IIS. Ces scripts peuvent intégrer des composants COM (Component Object Model) et grâce aux ADO (ActiveX Data Objects) établir des connexions à des bases de données. La principale avancée des ASP par rapport aux technologies du moment (1996-2000) telles que les scripts CGI, était de fournir des composants prêts à l'emploi facilitant:
  • la gestion des sessions ou contexte utilisateur.
  • la gestion des requêtes HTTP clientes et des réponses.
Ce modèle de composants a d'ailleurs donné lieu à des développements similaires avec d'autres technologies, notamment les Java Server Pages (JSP).

Architecture

Les Active Server Pages s'inscrivent dans une architecture 3-tiers. Cela signifie qu'un serveur supportant les Active Server Pages peut servir d'intermédiaire entre le navigateur du client et une base de données en permettant un accès transparent à celle-ci grâce à la technologie ActiveX Data Objects. ADO fournira les éléments nécessaires à la connexion au système de gestion de bases de données (SGBD), à la manipulation des données grâce au langage SQL.


Liens intéressants

Silverlight

Liens intéressants

DWM


Liens intéressants

samedi 21 août 2010

WF/Biztalk

Workflow Foundation

Un des éléments de base des applications composites et des Architectures Orientées Service (SOA) est l’échange de messages en mode asynchrone. Dans de tels systèmes, la complexité des développements est en grande partie liée au suivi des états des systèmes expéditeurs et destinataires des messages. En supposant que la complexité des communications inter-systèmes soit prise en charge par WCF, la gestion des états du système (workflow) pourra être confiée à Windows WorkFlow Foundation (WF). Un workflow modélisera les états d’un système, la logique de transition entre états, les évènements extérieurs et les conditions de transition, ...

Windows Workflow Fondation (WF) est composé d’un ensemble de classes qui couvrent les fonctionnalités suivantes:
  • La définition d’un worflow. Les éléments de base d’un workflow (WF)sont les activités, qui rendent compte des actions et interactions du workflow. WF est livré avec des activités prédéfinies comme l’appel à des services Web, la réponse à des évènements ou des activités de contrôle (boucle while, exécutions parallèles, etc.).
  • L’hébergement du workflow. Ces classes incluent un moteur d’exécution et des outils de contrôle de l’exécution des instances d’un même workflow. Elles permettent d’héberger le moteur d’exécution dans tout type d’application, console, WinForms ou ASP.NET.
  • La persistance du workflow. En entreprise les processus qui durent plusieurs heures voire plusieurs mois sont possibles (support IT, commandes, ...). Dans ce cas l’état du workflow ne peut se permettre de résider en mémoire: le flot doit pouvoir s’interrompre éventuellement au milieu d’une activité transactionnelle, et se réveiller par la suite.
  • La définition et l’exécution de règles métier. WF comprend un moteur de règles capable de déduire l’ordre d’exécution des règles à partir de leurs dépendances.



Biztalk

Biztalk complète le Framework .Net notamment avec l’orchestration de processus distribués, longues durées ou encore transactions. Il propose aussi un moteur de règles métiers, et des aspects intégration (connecteurs aux données et applications du système d'information globale de l'entreprise), le tout complété de métriques d’activités (Business Activity Monitoring).

Liens intéressants

WCF

ASP.NET et les services Web

Depuis l'apparition du Framework .NET, l'environnement de développement Visual Studio permet de créer ou consommer un service Web en quelques clics grâce aux composants ASMX. Au-delà de cette facilité, la mise au point des caractéristiques étendues du service est à la charge du développeur, avec le risque de produire un service Web peu interopérable car muni d'une configuration exotique. En ce qui concerne la consommation de services Web, des points d'extension rendent possible les traitements spécifiques sur les messages, ce qui procure la possibilité d'exploiter n'importe quel service aux caractéristiques imprévues.

La diversité des technologies de transport, encodage, cryptographie, et l'évolution des standards a justifié la création de l'organisme Web Service Interoperability (WS-I), chargé d'identifier et de conseiller des profils de standards. Avec la publication du couple .NET 2.0/ASMX 2.0, la pile de composants Web Services s'enrichit du moyen de rendre un service Web conforme à ces standards en ajoutant une instruction devant l'interface du service.

Par ailleurs, afin de rester en phase avec l'évolution des standards et étendre la déclaration de conformité à la sécurité et à la fiabilité des échanges, Microsoft délivre aussi des compléments sous la forme d'une librairie qui étend ASMX via des points d'extension prévus à cet effet: Web Services Enhancements (WSE).

Windows Communication Foundation

Windows Communication Foundation (WCF) est un composant majeur du Framework .NET 3.0. C'est une refonte des services supportés par ASMX et WSE, étendue aux communications hors services Web. Cette nouvelle bibliothèque de classes a été pensée pour unifier l'accès aux différents moyens de communication de .NET. Là où l'architecte devait intégrer les interfaces de .NET Remoting, WSE, des Enterprises Services (Transactions distribuées) ou MSMQ, WCF fournit une vue homogène pour les besoins de communication.

WCF repose sur des messages échangés entre deux points selon les modalités définies par l'adressage, le mode de liaison et le contrat de service. Ces trois points sont résumés selon Microsoft par le triplet A, B et C : Address, Binding et Contract.
  • Address: Un point de destination (endpoint) d'une communication WCF doit avoir une adresse représentée sous forme d'un URI.
  • Binding: Une liaison comprend trois types d'éléments.
    1. Le protocole définit la sécurité, la fiabilité, le contexte de communication ou un protocole personnalisé pour les messages qui circuleront entre les points de destination. Dans cette catégorie figurent des spécifications telles que WSReliableMessaging ou WS-Federation.
    2. Le transport définit la couche réseau qui servira de base au transport des messages, par exemple tcp ou http.
    3. L'encodage définit la méthode de codage du contenu des messages, par exemple text/XML, Binary ou MTOM.
  • Contract: Le contrat expose les opérations que le service est capable d'assurer. En plus de la signature des opérations qui décrivent les données échangées dans les messages, la nature de l'échange est aussi déterminée par le contrat (uni- ou bidirectionnelle, synchrone ou asynchrone), ainsi que la mécanique de gestion des erreurs.

Toutes ces informations sont exposées dans un modèle objet unifié qui vise à assurer la productivité des développements quel que soit le niveau de spécificité de l'application distribuée à mettre en oeuvre. Le développeur gagne en temps de codage et évite l’éparpillement et les apprentissages de multiples
APIs. De plus WCF est extensible (possiblité d’ajouter ses protocoles, ses formats de compression, ses mécanismes de trace) en venant s’insérer dans le pipeline de traitements des messages.
Autre facteur de productivité, les bindings les plus courants, tels que ceux correspondants aux standards WS-BasicProfil et WS-Federation, sont prédéfinis. Ils peuvent toutefois être paramétrés dans les détails (algorithme de cryptage, types de clés, types de jeton de sécurité, etc.) pour assurer l'interopérabilité avec des services existants. D'autres bindings moins courants sont prédéfinis : peer-to-peer sur tcp, canaux nommés, échanges convoyés par MSMQ, ...

Liens intéressants

WPF

Windows Presentation Foundation

Windows Presentation Foundation (WPF) est la spécification par Microsoft d'un nouveau type d'interface graphique. Partie essentielle de .NET 3.0, elle amène des ruptures à plusieurs points de vue avec l'ancienne génération interfaces graphiques représentée par les Winforms (Windows Forms):
  • Le Look and Feel ainsi que la qualité des graphiques changent la relation entre l’utilisateur et l’application. WPF permet en effet de présenter des interfaces qui comportent des animations, des effets de transition, de transparence et de 3D.
  • La conception et le développement des applications WPF impliquent une nouvelle organisation du développement. Le travail de design peut être conduit indépendamment du travail de codage de la logique applicative et de l’accès aux données. L’élément clé dans cette séparation des tâches est le langage de description XAML.
  • La technologie elle-même fait rupture. Côté matériel, au lieu de s’appuyer sur le processeur 2D de la carte graphique, l’affichage des visuels WPF tire parti de la puissance de traitement des processeurs
    3D habituellement inexploitée par les applications d’entreprise. Côté logiciel, DirectX est le point d’accès à cette puissance. Les API Win32 d’accès aux fonctions de dessin 2D ne sont plus employées.

XAML

XAML est l’élément central de description des interfaces graphiques WPF. Indépendamment de WPF, XAML est une grammaire XML qui permet de définir une arborescence d’objets. Appliqué à la logique de Windows Presentation Foundation, cela signifie que les styles, modèles de comportement, animations, contrôles utilisateur et sources de données peuvent être décrits de manière déclarative dans un fichier XML. XAML permet de distinguer la conception de l’interface et son code sous-jacent, facilitant la collaboration entre développeurs et designers.

XBAP

XAML Browser Application (XBAP) désigne un mode d’exécution d’une application décrite en langage XAML dans lequel l’interface graphique est captive du navigateur Microsoft IE ou Mozilla Firefox. Une application XBAP est typiquement RIA (Rich Internet Application) puisque contrainte par des limites de sécurité qui l’empêche d’interagir avec le bureau de l’utilisateur, le système de fichier ou la base de registre. Il s'agit d'une application WEB reposant sur le Framewok .NET du poste de travail, qui obtient ses données de machines distantes.

Silverlight

Il s'agit d'une CLR .NET livrée sous la forme d'un plug-in pour navigateur Internet. Une application Silverlight ne nécessite pas la présence d'un Framework .Net sur le poste de travail puisqu'elle repose entièrement sur le plug-in Silverlight du navigateur internet qui l'exécute.

WPF, XBAP, Silverlight ...

WPF est donc une spécification d'interface graphique qui se retrouve sous différentes formes:
  • Une application indépendante (Standalone) qui s'installe sur un ordinateur en utilisant un installateur comme Microsoft Windows Installer. (msi).
  • Une applet sous forme d'un fichier XAML Browser Application (XBAP) qui s'exécute sur la CLR du poste de travail au travers du navigateur IE ou Firefox
  • Un composant embarqué dans une page HTML, puis exécuté sur n'importe quel navigateur Internet supportant le plug-in Silverlight

Architecture

WPF présente une architecture où les couches supérieures proposent un ensemble de services écrits entièrement en code managé. Une couche intermédiaire dénommée Media Integration Library (Milcore) assure le lien entre ces services managés de haut niveau et la couche native DirectX.


Toujours Plus !

WPF inclut de nombreux composants destinés à enrichir les interactions homme-machine:
  • Les vidéos peuvent être très simplement incluses dans une interface. Les transformations applicables aux éléments visuels classiques s'appliquent de la même façon aux vidéos. C'est donc une nouvelle
    possibilité qui est offerte aux concepteurs de logiciels pour, par exemple, présenter l'aide d'un logiciel en mode multimédia.
  • WPF propose un ensemble de classes dédiées à la reconnaissance de l'écriture manuscrite temps réel. Les moyens de saisie de textes s'étendent ainsi au périphérique de saisie manuscrite sans surcoût de développement.
  • Un synthétiseur vocal est inclus dans WPF. Sa mise en oeuvre à travers la classe SpeechSynthetizer est extrêmement simple: il suffit d'appeler la méthode Speak en lui passant le texte à faire entendre.
  • La reconnaissance de la parole est aussi fournie clé-en-main dans WPF via les nouvelles classes de System.Speech.Recognition.
  • WPF concrétise le concept de document au travers d'un ensemble de fonctionnalités et services qui couvrent la présentation des documents dans l'interface graphique leur annotation par l'utilisateur, leur
    persistance et leur impression.

Liens intéressants

vendredi 20 août 2010

.Net Fx Versions

NET Framework 1.0

Rendue disponible le 13 février 2002, cette première version du Framework introduit le langage C#. L'objectif est de constituer une alternative crédible aux plates formes Java ...

.NET Framework 1.1

Publiée le 3 avril 2003, ce fut la première version du .NET Framework à faire partie d'un système d'exploitation (Windows Server 2003).

Changements majeurs depuis 1.0
  • Amélioration du développement d'applications Web avec le support intégré des contrôles ASP.NET.
  • Meilleure gestion de la sécurité des applications avec Code Access Security (CAS).
  • Support pour ODBC et les bases de données Oracles.
  • Introduction du .NET Compact Framework, une version .NET compatible avec Windows CE.

.NET Framework 2.0

Rendu disponible le 22 janvier 2006, il s'agit de la dernière version compatible avec Windows 2000, Windows 98 et Windows ME.

Changements majeurs depuis version 1.1
  • Support 64-bit pour les plates-formes matérielles x64 et IA-64.
  • Introduction du type Generic dans le CLR .NET. Le but est d'augmenter le niveau d'abstraction des langages afin de rendre les algorithmes indépendants d'un type de données particulier.

.NET Framework 3.0

Inclu dans les systèmes Windows Vista et Windows Server 2008, le .NET Framework 3.0 utilise le Common Language Runtime de la version 2.0 auquel il rajoute 4 parties principales:
  1. Windows Presentation Foundation (WPF): il s'agit d'un nouveau sous-système d'interface utilisateur basé sur XML et le dessin vectoriel. WPF utilise les possibilités des nouvelles cartes graphiques 3D et Direct3D.
  2. Windows Communication Foundation (WCF): apporte toute l'infrasructure nécessaire pour mettre en place un système de messagerie orienté services.
  3. Windows Workflow Foundation (WF): permet la construction de transactions ou tâches automatisées à l'aide de workflows.
  4. Windows CardSpace: est destiné à mémoriser de façon sécurisée les informations numériques relatives à une personne. Il fournit une interface unifiée pour le choix des identités lors de la mise en place d'une transaction.

.NET Framework 3.5

Rendue disponible le 19 novembre 2007, la version 3.5 repose aussi sur la version 2.0 de la CLR. Cette version apporte beaucoup de nouveautés comme le framework Language Integrated Query (LINQ) permettant des requêtes objet aussi bien sur des Data, des Collections, du XML ou des DataSets. Elle intègre également le framework Ajax.Net avec de nouveaux protocoles (AJAX, JSON, REST, RSS, Atom) et d'autres standards WS-*.
Changements depuis la version 3.0

  • Incorporation de nouvelles fonctionnalités aux langages C# 3.0 et VB.NET 9.0
  • Ajout du support pour les arbres d'expression et les méthodes lambda
  • Méthodes d'extension
  • Language Integrated Query (LINQ)
  • Une API ADO.NET pour synchroniser les données en cache local et côté serveur
  • Une API asynchrone pour les entrées/sorties réseau
  • support pour le modèle MVC de Microsoft ASP.NET.
  • Accélaration de performances et nouveaux contrôles WPF, notamment un DataGrid

.NET Framework 4.0

Cette nouvelle version apporte une fois de plus beaucoup de nouveautés, notamment dans le domaine du traitement parallèle et de la programmation par contrat.

Changements majeurs depuis la version 3.5
  • Une Version 4.0 du langages C# avec encore plus de fonctionnalités !
  • Extensions (PLINQ) et traitement parallèle de l'information sur des systèmes multi-core ou distribués
  • Support de la programmation par Contrat
  • Suppport des fichiers Mappés Mémoire
  • Nouvelles méthodes d'Entrées/Sorties
  • ...

Résumé


Conclusion

Les langages de programmation et leurs Frameworks de développement associés évoluent désormais à un rymthe frénétique. Le Framework .NET suit cette tendance et certains auteurs n'hésitent pas à émettre des réserves sur l'utilité d'un tel mouvement.

  • Délaration de Rob Pike : Les langages statiques sont-ils trop sophistiqués et complexes ?
  • Déclaration de
    Jean-Pierre Troll
    Y en a mare de ces langages qui évoluent tous le temps. Où s'est perdu le bon sens et la raison ?

Liens intéressants

.Net Fx Architecture

Architecture

La technologie Microsoft .NET a pour but de faciliter la tâche des développeurs en proposant une approche unifiée de la conception d'applications Windows, Web, Mobile ...

L'environnement Microsoft .NET gère tous les aspects de l'exécution d'une application sur un mode dit managé:
  • Il alloue la mémoire pour le stockage des données et des instructions du programme.
  • Il autorise ou refuse des droits à l'application.
  • Il démarre et gère l'exécution.
  • Il gère la ré-allocation de la mémoire pour les ressources qui ne sont plus utilisées.
Microsoft .NET s'appuie sur la norme Common Language Infrastructure (CLI) qui est indépendante du langage de programmation utilisé. Ainsi tous les langages respectant la norme CLI auront accès à toutes les bibliothèques installées dans l'environnement d'exécution.

L'environnement Microsoft .NET est composé de deux blocs principaux:
  1. L'implémentation d'une machine virtuelle compatible Common Language Infrastructure (CLI) sous le nom de Common Language Runtime (CLR).
  2. Le Framework .NET qui est la bibliothèques libraire de composants.

Tout comme en Java, lorsqu'une application .NET est compilée on n'obtient pas de code binaire machine mais un code binaire intermédiaire (CIL).
Une application est donc en un ensemble d'assemblages (.NET Assemblies) en CIL contenus dans des fichiers exécutables ou DLL.
Quand l'exécution d'un programme démarre, l'assemblage contenant le point d'entré de l'application est chargé en mémoire puis un processus est créé pour exécuter l'application. Le premier morceau de code nécessaire à l'exécution est chargé en mémoire et est compilé en code binaire natif par le compilateur juste à temps (Just-In-Time, JIT). Une fois compilé, le code est exécuté et stocké en mémoire sous forme de code natif, garantissant ainsi que chaque portion de code n'est compilée qu'une seule fois lors de l'exécution de l'application.
.NET supporte tous les langages développés par Microsoft ou par des tierces parties conformément aux spécifications de la CLI. La CLI, pour Common Language Infrastructure, est une spécification internationale (Ecma-335) de machine virtuelle indépendante de tout langage de développement. Le CLR (Common Language Runtime) est l'implémentation commerciale de Microsoft de cette CLI. Le CLR donne déjà accès à plus de 25 langages,certains développés par Microsoft, d'autres par des éditeurs indépendants ou dans le cadre de projets open source : Cobol, Lisp, Delphi, PHP, Pascal, Ada,Prolog, Python, Ruby, ...
Librairies de classes Microsoft fournit un ensemble de librairies (Framework Class Library) qui repose sur le CLR et qui compose le Framework .NET. Accessible depuis tous les langages évoqués plus haut, il tend à couvrir l'ensemble des fonctions et interactions nécessaires au développement d'applications, depuis les accès disque jusqu'aux Web Services. Les appels natifs au système Windows restent cependant nécessaires pour quelques points spécifiques. ASP.NET est une partie de la Framework Class Library. Une version "compacte" (8% de la taille du Framework standard) du Framework .NET est destinée aux périphériques mobiles, téléphones ou PDA. Il s'agit de .NET Compact Framework, qui n'implémente qu'une partie de la librairie et optimise certains traitements, notamment ceux liés à la communication distante


Historique

VersionVersion DélivréeMise sur le MarchéLivré avec Windows
1.01.0.3705.02002-02-13
1.11.1.4322.5732003-04-24Windows Server 2003
2.02.0.50727.422005-11-07
3.03.0.4506.302006-11-06Windows Vista, Windows Server 2008
3.53.5.21022.82007-11-19Windows 7, Windows Server 2008 R2
4.04.0.30319.12010-04-12

Liens intéressants

CLR

Introduction

Common Language Runtime (CLR) est le nom choisi par Microsoft pour le composant de machine virtuelle du framework .NET. Il s'agit de l'implémentation par Microsoft du standard Common Language Infrastructure (CLI) qui définit l'environnement d'exécution des codes de programmes.

Architecture

Le CLR fait tourner une sorte de bytecode nommé Common Intermediate Language (CIL). Le compilateur transforme (à la volée) le code CIL en code natif spécifique au système d'exploitation.


Liens intéressants