Projet Webmaster
Gestion de projets web ntic

Du concept au projet informatique - De la maîtrise d’oeuvre à la maîtrise d’ouvrage

Web-ntic MOE MOA > Powerbuilder > Objet et client serveur

Objet et client serveur

vendredi 21 mars 2003, par km

1 ère partie du memoire : L’Etat de l’art, l’objet et le client-serveur distribué.

Powerbuilder vers l’architecture distribuée

L’Etat de l’art, l’objet et le client-serveur distribué.

L’objet, la distribution et le Web sont les trois technologies qui ont émergées en synergie depuis la fin des années 1970 [Wallnau97]

1.1. L’objet et ses propriétés

La méthode de développement orientée objet nous fournit non seulement une nouvelle technique de conception et de développement des systèmes d’information (SI) mais aussi une multitude de concepts fondamentaux qui révolutionnent le monde des SI. Parmi ces concepts fondamentaux, notons, entre autres, les objets, les classes, l’encapsulation, l’héritage, le polymorphisme et l’agrégation.
Sans être tous des concepts inédits, les concepts à la base de la méthode orientée objet sont utilisés de façon telle qu’ils créent un nouveau paradigme qui se détache de façon marquée des méthodes de conception structurée (orientées traitements - développement traditionnel) et des méthodes de conception orientées vers les données.En ce sens, [Guerraoui96] oppose la logique procédurale, qui implémente des fonctions, alors que les objets expriment des systèmes étendus qui implémentent des services dans le temps. De part ces méthodes de conception et développement et des demandes des utilisateurs pour un poste de travail unique regroupant la bureautique et l’accès a leur applications, le client-serveur est apparu comme une alternative aux systèmes centraux.

1.1.1. L’objet

Selon [Poisson98] et [Caussin98] un objet peut être qualifié de la façon suivante : "un objet est quelque chose de réel ou d’abstrait, de tangible ou d’intangible, à propos duquel on emmagasine des données et des méthodes (procédures, fonctions) permettant de les manipuler". Cette définition contient trois des éléments fondamentaux qui définissent un objet soit, le caractère réel ou abstrait d’un objet, le caractère intangible ou tangible et ce qu’il contient (les données et les méthodes de manipulation).Un quatrième élément fondamental de l’objet est son unicité. Chaque objet est une occurrence et peut donc être identifié de façon unique, être distingué des autres objets. La structure de données d’un objet est définie en terme d’attributs. Ces attributs sont des valeurs qui sont associées et étroitement connectées aux objets [Poisson98]. [Bouzeghoub97] caractérise l’objet par :Objet = identité + état + comportement.

1.1.2. La classe

Une classe d’objets permet de regrouper des objets possédant les mêmes caractéristiques (même structure et même ensemble de méthodes) afin d’en faciliter la gestion. Les classes, qui possèdent aussi leurs méthodes, sont utilisées pour créer de nouveaux objets (de nouvelles instances)[Poisson98]. Définition caractérisée dans [Bouzeghoub97] par :Classe = instanciation + attributs + opérations

1.1.3. Les méthodes

Les méthodes modélisent le comportement de l’objet. Ce sont des séquences d’instructions nommées qui seules permettent de manipuler l’objet de l’extérieur (méthodes publiques) ou de l’intérieur (on les qualifie alors de privées) [Poisson98]. En fait, ce sont les fonctions associées à une classe d’objets.

1.1.4. L’encapsulation

Selon [Poisson98], l’encapsulation signifie que les données, de même que les méthodes permettant de les manipuler, sont contenues dans un même emballage (objet) et qu’un utilisateur (humain ou un autre objet) ne peut directement atteindre les données associées à cet objet. L’encapsulation cache les données et le code des fonctions de l’objet. L’objet gère ses propres ressources et limite ce que les autres doivent savoir de lui..L’utilisateur peut accéder aux données d’un objet uniquement en effectuant une requête sur les méthodes de manipulation des données de cet objet.Cet utilisateur est donc uniquement concerné par la requête de services à effectuer et non par les détails et la façon dont ces services sont effectués.[Bouzeghoub97] apporte à l’encapsulation une notion abstraction : un objet n’est accessible que par son interface externe, sa structure étant cachée.

1.1.5. Les attributs

Les attributs ou variables, sont des champs nommés où les données sont stockées. Ils modélisent l’état d’un objet.

1.1.6. L’héritage

Comme dans le monde réel, certains objets sont associés entre eux. Via le mécanisme de l’héritage, une sous-classe peut hériter des méthodes et des propriétés de sa classe parente. Les classes héritées ne sont au départ que des copies de leur parent, mais peuvent ensuite évoluer en ajoutant des propriétés ou des méthodes, voire en modifiant les méthodes existantes (mécanisme de surcharge). [Caussin98].Dans [Debrauwer94], l’héritage est un concept fondamental de la programmation par objets. L’héritage consiste à définir une classe d’objets à partir d’une autre classe tout en l’affinant de deux façons :
- en ajoutant des attributs
- en ajoutant des méthodes ou en redéfinissant des méthodes déjà définies dans la surclasse. (surcharge)

Toutefois, en entreprise, si cette dernière technique n’est pas maîtrisée, les objets peuvent devenir complexes à maintenir et à réutiliser.

1.1.7. L’agrégation

L’agrégation est une relation qui permet de décrire un objet composite en terme d’objets qui le constituent [Poisson98].

1.1.8. Le polymorphisme

Le polymorphisme permet à une sous-classe d’outrepasser l’implantation d’une méthode héritée d’une superclasse. Il consiste, tout en gardant le même nom pour une méthode héritée, à associer un code spécifique qui vient ainsi se substituer à celui de la méthode héritée. Lorsque la méthode est appelée, l’utilisateur (humain ou autre objet) n’a pas besoin de connaître quelle est l’implantation précise à sélectionner puisque le système se charge de sélectionner le code qui est approprié pour la classe en question. [Poisson98].

1.1.9. La réutilisation

A travers son mécanisme d’héritage et la capacité d’isoler des fonctionnalités standards [Jacquot 96], la méthode orientée objet permet la réutilisation des composantes (classes, objets) à l’intérieur d’un même système de même qu’à l’intérieur de plusieurs systèmes. Le concept de réutilisation n’est pas unique à la méthode objet mais, contrairement aux autres méthodes (conception structurée et conception orientée vers les données), son application y est quasi implicite. La réutilisation est considérée par plusieurs experts comme le "Saint-Graal" du développement puisqu’elle permet d’accélérer la vitesse de développement et ainsi de réduire les coûts qui y sont liés. [Poisson98].

1.1.10. Les liaisons entre objets

Les objets peuvent être liés entre eux de différentes façons :
- Spécialisation, une classe est définie comme un cas particulier d’une autre classe (cf. héritage).
- Collaboration, les objets s’envoient des messages pour demander l’exécution de services.
- Composition, les objets sont construits à partir d’autres objets, on parlera ici d’objets composites. Un objet fractal est un type spécial d’objet composite qui contient sa propre classe comme composant.

Limites et apports
La méthodologie objet étant souvent utilisée afin de faciliter le découpage et la distribution de l’application, il semble intéressant de pouvoir dès la phase de conception, afin de faciliter le travail futur des administrateurs, distinguer par exemple les objets persistants (situés sur un serveur de données) et les objets distribués (pouvant être répartis sur des machines serveurs).
L’utilisation d’une méthodologie « objet » nécessite cependant un apprentissage de cette philosophie assez poussée. La distinction des différents objets est notamment assez compliquée à effectuer. Certains outils vont ainsi préférer s’en tenir à des méthodologies maîtrisées, du type entité - association et alors :
- soit simplement permettre la définition de procédures distantes (et non d’objets) ;
- soit prendre eux-mêmes à leur charge la transformation du modèle classique en modèle objet. Cette dernière alternative peut toutefois être assez coûteuse en termes de performances, le schéma de la base de données n’étant pas forcément adapté à ces modifications.

[Wallnau97] synthétise le modèle orienté objet : les systèmes sont vus comme des objets coopérants qui encapsulent les structures et les comportements et appartiennent à des classes hiérarchiques.
Pour [Guerraoui96], la robustesse des systèmes orientés objets pour modéliser les domaines applicatifs s’étend à la modélisation des systèmes distribués ; ces derniers peuvent ainsi être regardés comme de simples domaines applicatifs pour lesquels l’orientation objet est naturelle. En d’autres termes, les propriétés de l’objet en font un élément approprié au mode client-serveur distribué.

Résumé : L’objet, méthode de programmation différente de la programmation procédurale, a des propriétés intrinsèques en meilleure adéquation avec le développement en client-serveur. Ce concept est intéressant tant au niveau de la conception puisqu’il est plus proche du monde réel, qu’au niveau du développement grâce à la réutilisation et à l’encapsulation. Cependant il se distingue par rapport au monde procédural par une "philosophie objet", une compréhension nécessitant un apprentissage.

1.2. vers l’interface graphique

Les outils de développement rapide de la micro tirent un bon parti des interfaces utilisateurs graphiques et des techniques de composants - Ils prennent petit à petit le chemin du client-serveur, même si les problèmes de performance restent entiers.

1.2.1. Les concepts

1.2.1.1. L’outil de développement

Je propose de définir l’outil de développement comme étant l’ensemble des dispositifs informatiques permettant au sein d’une équipe de permettre la création et l’évolution d’un produit informatique (par exemple un logiciel) et couvrant l’ensemble du cycle de vie de ce produit (la conception, le développement proprement dit, les tests, l’installation, la maintenance, ...).Cet outil s’appuie sur les techniques informatiques disponibles sur le marché et notamment l’interface graphique.

1.2.1.2. L’interface graphique

L’interface graphique peut être définie comme étant le vecteur par lequel l’utilisateur d’une application informatique peut dialoguer avec celle-ci pour mener à bien son utilisation de l’application. C’est tout d’abord une interface car elle se situe entre l’utilisateur et le système, c’est ensuite un vecteur graphique car le mode de représentation des fonctions qu’offre l’application est schématisé par des icônes, des boutons, des boites de dialogues. L’utilisateur interagît avec le système par le clavier et/ou la souris. Une action sur un bouton déclenche alors un événement, un traitement par le système. Le contrôle du dialogue est entièrement donné a l’utilisateur, contrairement au mode caractère auquel il s’oppose et où le système propose à l’utilisateur des écrans successifs [Meinadier91].Si l’interface graphique permet à l’utilisateur de "piloter" son application, elle a au niveau du développement apporté une grande aide aux entreprises.

1.2.2. Le prototypage via l’interface graphique.

Dans les systèmes d’exploitation à interface graphique, le développeur agit désormais directement sur l’interface qu’il fait vivre en enchaînant les fenêtres. Il associe cet enchaînement à des actions effectuées par l’opérateur sur des objets de l’interface : fenêtres, menus déroulants, boutons, champs de saisie, etc. On parle de programmation « pilotée » par les événements ou de programmation événementielle, ce qui implique un aspect dynamique. À chaque objet graphique peut être associé un traitement ou une « méthode ».Le développement démarre à partir de l’interface, que l’utilisateur peut aussitôt valider sur un plan fonctionnement applicatif, mais également sur un plan ergonomie de l’interface graphique [Meinadier91]. Puis l’application peut être progressivement enrichie à partir de cette interface, selon une démarche itérative. Ces techniques graphiques permettent de développer des applications très sophistiquées.De nombreux outils de développement s’appuient sur une telle approche visuelle et événementielle, dont notre outil PowerBuilder. Ils permettent, en s’appuyant sur des concepts de navigation de rechercher des objets et de générer des dessins d’arbres et de graphes [Meinadier91]. Orientés objets, ces outils génèrent des programmes structurés sous Windows, en exploitant toutes les fonctionnalités de l’interface graphique.

1.2.3. Des bibliothèques de fonctions génériques

Le développement par composants présente l’avantage de donner l’accès à des bibliothèques de services réutilisables. Ils permettent de créer des bibliothèques de fonctions génériques et sont un élément de base essentiel à la réutilisation.

Résumé : L’interface graphique a ouvert la voie de la programmation événementielle et a permis avec les propriétés de l’objet (réutilisation, unicité) de regrouper les composants objets utilisés en bibliothèques de fonctions réutilisables et de gagner en productivité au niveau du développement..

1.3. Accès aux données et passage au mode client-serveur

Les outils de développement basés sur l’Interface graphique permettent également de donner accès à des bases de données relationnelles en mode client-serveur. Plusieurs modes sont possibles, généralement les outils se contentent d’encapsuler les commandes SQL (Structured QueryLangage : langage de requêtes structuré) et de les transmettre au serveur, en mode natif ou via ODBC (Open Data Base Connectivity : mode de dialogue entre un applicatif et une base de données interrogée par SQL).Mais ce comportement peut entraîner une diminution des performances lorsque l’application monte en charge. L’ergonomie de l’interface homme-machine semble être privilégiée à l’accès aux données. Toute la logique applicative est développée et déployée sur le poste client qui peut alors se trouver surchargé. L’optimisation des performances, si elle devient nécessaire, se fait généralement en déportant certaines parties de l’applicatif sur le serveur pour les transformer en procédures stockées (Suite d’instructions SQL regroupées en une procédure gérée par le SGBDR). Des gains considérables ont été constatés en termes de performance d’accès à la base de données par un allégement du trafic réseau. L’utilisation de l’interface graphique introduit un nouvel élément qu’est le serveur, et particulièrement à ce niveau les procédures stockées. Une procédure stockée est une partie de traitement qui est liée aux données qu’elle manipule et qui dans l’architecture client-serveur se situe sur le serveur de données. Elle est écrite dans un langage qui est propre au moteur de la base de données (Oracle, Sybase, Ingres, Informix), et nécessite d’une part la connaissance de ce langage, d’autre part une version de procédure selon la base de données qui est interrogée [SEI97].Cette particularité des procédures stockées introduit des limites que nous retrouverons au niveau de l’outil de développement.

Résumé :Au niveau des données, l’accès peut se faire selon deux modes : soit par requêtes SQL depuis le poste client, mais peu performant en cas de montée en charge de l’applicatif ; soit par déportation de traitements sous forme de procédures stockées sur le serveur de données. Cette dernière solution nécessite alors des connaissances liées au langage utilisé par le moteur, ainsi qu’une incompatibilité entre moteurs de bases de données.

1.4. Le Client-serveur

Le client-serveur est une évolution du mainframe et permet par l’utilisation de nouvelles méthodes et techniques de passer outre les limites que l’on connaissait avec l’environnement mainframe et les systèmes propriétaires et ainsi d’améliorer l’interopérabilité, la flexibilité des systèmes.

Environnement centralisé Environnement client-serveur
Développement en cascadeDéveloppement itératif
Traitement centraliséTraitement distribué
Programmation procéduraleProgrammation événementielle
Utilisation du codeRéutilisation des objets

Dans un système central, la logique de traitement se situe sur la machine hôte, l’utilisateur interagissant avec celui-ci au travers d’un terminal PC ou passif en mode caractère généralement. Pour les données, le système central est basé sur une architecture de fichiers partagés, et les fichiers sont traités dans leur totalité. Les applications sont développées sans décomposer leurs trois champs d’activité (la présentation, le noyau applicatif et l’accès aux ressources) [Bénard95].
Dans une architecture client-serveur, le client est défini comme un demandeur de services auprès du serveur qui en est le fournisseur. Le système de fichier est remplacé par une base de données que l’utilisateur interroge au travers de requêtes. Les communications entre client et serveur se font soit par RPC (Appel de procédures distantes) soit par requêtes SQL.
Au niveau du SI, les systèmes centraux sont des systèmes dits "propriétaires" posant des problèmes techniques et de gestion. Le client-serveur dit système "ouvert" répond à ces problèmes par l’ouverture :
- par une architecture fondée sur plusieurs produits de fournisseurs différents ;
- par nécessité d’intégrer des outils, techniques et services standards ;
- par stratégie englobant les standards.

Les limites
Cette ouverture a néanmoins un coût, ou plus exactement des coûts.Selon [Rugy98] les coûts se repartissent en coûts d’acquisition (matériel, logiciels et extension de matériel), coûts d’administration (coûts de toutes les taches nécessaires au processus d’achat ou d’approvisionnement), coûts d’assistance à l’utilisateur (formation, déménagement ) et coûts utilisateur (autoformation, exploitation du poste, formation informelle).L’auteur compare la période actuelle "d’informatique répartie" avec la période précédente "d’informatique atomisée" ou la décision d’achat ou d’évolution de matériel était décidée de manière locale et totalement décentralisée, participant à l’hétérogénéité des systèmes. L’informatique répartie peut permettre de prendre conscience de ce coût et donc de prendre des mesures pour harmoniser le matériel et permettre des achats centralisés. Concernant les coûts, le Gartner Group fournit à ce niveau des chiffres depuis 1987 qui représentent certes une moyenne concernant l’Amérique du Nord mais dont le sens va dans celui de l’augmentation de ces coûts. Pour cet organisme le coût de possession d’un poste serait de 47.000 fr. par an et pour un poste connecté au réseau de 67.000 fr. par an.Le Gartner Group indique de plus que son calcul est basé sur un cycle vie du matériel de trois ans contre cinq pour 1987. Cette diminution témoigne du taux de remplacement moyen, il faudrait savoir au niveau de l’entreprise si la durée de vie est limitée par l’obsolescence du matériel, la gourmandise croissante des logiciels en temps processeur ou le désir de l’utilisateur d’avoir un matériel plus puissant, plus récent.L’ouverture peut-être freinée par des contraintes que [Bénard95] classe en trois catégories, l’entreprise, les projets, le marché ; il explique ainsi que l’héritage informatique, composé de systèmes ; réseaux et logiciels hétérogènes, nécessite un plan d’urbanisation pour favoriser l’ouverture et faire évoluer l’héritage. Sur le plan du marché, il souligne que les multiples fournisseurs font qu’un nombre plus ou moins importants de composants techniques vont entrer dans l’entreprise (favorisant l’hétérogénéité des systèmes). Ces composants devront être matures et disponibles et capables d’évoluer et de communiquer avec d’autres produits. Pour ma part, je pense que cette multiplicité de fournisseurs est un risque qu’il faut chercher à minimiser en orientant ses choix vers des entreprises pérennes.

1.4.1. Modèle du client-serveur bipartite.

L’architecture client-serveur généralement utilisée aujourd’hui repose sur un modèle d’architecture distribuée bipartite. L’interface graphique se situe sur le poste client et la base de données est localisée sur le serveur. La logique de traitement pouvant se situer sur l’une ou l’autre des parties.Dans une architecture client-serveur bipartite, les PC sont généralement connectés aux serveurs de base de données via un réseau local.L’utilisateur final contrôle le poste client qui réalise une grande partie des traitements de l’application et sollicite des informations ou des traitements SQL de la part de un ou plusieurs serveurs [FAURE97]. Dans le modèle bipartite, une partie de la logique de gestion réside sur le serveur sous la forme de procédures stockées et de triggers. La caractéristique majeur du serveur est d’être disponible pour répondre, de préférence de manière simultanée, aux demandes de plusieurs clients [Bénard 95].
Ce type d’architecture est une bonne solution d’informatique distribuée lorsque le nombre d’utilisateurs ne dépasse pas une centaine d’utilisateurs, [SEI97] cependant il existe d’une part une limite tenant au fait que la connexion est maintenue en permanence entre le client et le serveur, même si aucun travail n’est effectué, d’autre part les procédures d’accès aux données étant spécifiques aux moteurs de base de données, la flexibilité et le choix d’une base de données sont réduites.L’architecture tripartite permet de dépasser ces limites, et d’apporter une meilleure réactivité de l’entreprise en cas de changements.

1.4.2. Modèle du client-serveur tripartite.

Dans l’architecture trois tiers ou multi-tiers, un niveau supplémentaire est ajouté entre les deux niveaux précédents, permettant de séparer les traitements de l’interface graphique et du serveur de base de données. Ce niveau intermédiaire peut être implémenté de différentes manières entre moniteur transactionnel, serveur de messages, ou serveur d’application. Le dialogue peut se faire en mode synchrone ou en mode asynchrone, dans ce cas l’utilisateur est informé lors d’une nouvelle connexion du résultat de sa requête précédente. L’architecture tripartite supporte de la centaine d’utilisateurs à plusieurs milliers accédant à plusieurs serveurs répartis géographiquement [SEI97].La division de l’application en couches distinctes, consacrées à l’interface utilisateur graphique, à la logique de gestion (partitionnée entre plusieurs processeurs) et aux traitements sur la base de données permet de faciliter l’extension et la maintenance des applications tout en offrant un moyen d’intégration des nouvelles applications aux systèmes existants. Ce gain engendre toutefois des taches plus complexes d’administration des composants de l’architecture (clients, serveurs et équipement réseau) ou du déploiement de l’application vers les serveurs. [Bénard95].

Résumé : Le client-serveur (système "ouvert") se distingue des systèmes centraux (systèmes "propriétaires") par l’utilisation de bases de données, et la possibilité de déporter les traitements. La répartition peut concerner les données (client-serveur 2 tiers) ou les données et les traitements (client-serveur 3 tiers).L’ouverture et la distribution ont un coût significatif et sont freinées par des contraintes liées à l’entreprise (l’héritage) et au marché (multiplicité des fournisseurs).

1.5. Le client-serveur "universel"

Au delà de l’architecture trois tiers, et pour répondre aux problèmes posés par l’hétérogénéité des systèmes, et notamment leur administration, le concept de client "universel" à émergé, il repose sur la technologie Internet.A l’instar du slogan de Sun concernant son langage Java [SEI97], [Lefevre98] définit le concept de client-serveur "universel" comme l’architecture technique qui permettrait d’écrire une application une fois et de la déployer sur tous les types de serveurs, indépendamment de leur hétérogénéité.

1.5.1. Le concept Internet ou le n-tiers

Les bases de l’Internet aussi nommé « Réseau des réseaux » ont été définies en 1969 avec le projet ARPANET. L’Internet est aujourd’hui le premier réseau mondial accessible à toutes les entreprises. L’Internet fut longtemps réservé aux universités américaines et aux scientifiques. En 1989, Tim Berners Lee, alors ingénieur au CERN, définit le World Wide Web : une technologie qui permet à partir d’un logiciel client appelé navigateur (ou browser) d’accéder facilement à des documents stockés sur un serveur connecté à l’Internet. Avec le Web, l’Internet s’ouvre au grandpublic et ne nécessite plus de connaissances spécifiques en informatique.Le modèle Internet est celui du client-serveur, où un programme client permet à un utilisateur de soumettre des requêtes à un serveur Web et de visualiser le résultat, le serveur Web étant un programme qui tourne sur un ordinateur dans le but de répondre à des requêtes de logiciel client qui tournent sur d’autres ordinateurs. [Dagorn94]Un document est la plus petite unité fournie par le serveur en réponse à une requête du client [Dagorn94]. Les documents Web, qui utilisent l’hypertexte, pointent vers d’autres documents et permettent ainsi, par un clic de souris, de passer en toute transparence d’un document hébergé sur un serveur à Tokyo, à un document stocké sur un serveur à New-York.


Un document Web est appelé page. Le langage utilisé pour créer des pages est HTML. La communication entre navigateur et serveur Web se fait grâce à un protocole spécialisé dans le transport de ce type de pages :HTTP. Un programme serveur dédié à la gestion de ce protocole est au coeur de tout serveur Web. Il se charge de répondre aux demandes des navigateurs, va chercher la page désirée et la renvoie à l’utilisateur qui la consulte depuis son navigateur.Le Web permet non seulement d’accéder à des documents statiques et prédéfinis, mais aussi d’accéder dynamiquement à des informations stockées sur des systèmes de bases de données. Ainsi, le Web peut être vu comme un nouvel environnement de développement d’applications client-serveur.Créer des pages HTML dynamiquement sur le serveur permet de personnaliser les informations en fonction des interactions de l’utilisateur.Souvent, cette interactivité se traduit concrètement par un échange client-serveur avec une base de données. Dans ce cas, on ne crée donc plus un document statique, mais un document personnalisé. Ceci pose les bases du concept d’applicationréelleautravers du Web.

1.5.1.1.Accès aux bases de données

Le mécanisme le plus ancien et le plus couramment utilisé pourl’accès à une base de données via Internet, est celui du protocole CGI : ce sont des programmes (écrits en Perl, C ou Java) qui sontinvoqués depuis le client Web et exécutent des requêtes en SQL sur le serveur.Ils présentent l’avantage de répondre à un standard reconnu par tous mais l’inconvénient de surcharger rapidement le serveur par multiplication des processus associés aux requêtes des clients. On peut aussi utiliser des API propriétaires (NSAPI de Netscape, ISAPI de Microsoft, ou celles proposées par certains éditeurs de SGBD) qui permettent au client de dialoguer directement avec la base de données. Ces API permettent de s’affranchir de codage de programmes en incluant dans les pages HTMl les codes d’accès aux bases de données, elles apportent l’avantage d’une grande rapidité d’exécution à laquelle s’opposent leur aspect propriétaire et leur portabilité restreinte.On peut aussi coder les requêtes à l’aide d’un langage script. Moins rapide que Java, ces langages interprétés sont moins puissants et ont un domaine d’utilisation plus restreint ; de plus ils ne sont pas tous reconnus par les différents navigateurs du marché.Enfin, l’accès distribué : dernière née des technologies, celle-ci vise à fournir au client le logiciel lui permettant de faire lui même la connexion avec la base de données. Ceci est l’un des enjeux de Java qui notamment avec son extension JDBC permet de fournir une applet (application écrite en langage Java) chargée de se connecter au serveur par une connexion ODBC.


Cliquez sur l’image pour l’agrandir


1.5.1.2. L’environnement Internet

Une autre possibilité de développement d’application consiste à apporter au navigateur la faculté d’effectuer des traitements ou d’exécuter de petites applications sur le poste client. Pour cela, on voit apparaître différentes solutions qui peuvent d’ailleurs être complémentaires :

1.5.1.2.1. Les scripts

- les langages de script tels que Javascript (de Netscape) ou VBscript (de Microsoft), qui s’intègrent dans un document HTML et qui permettent d’effectuer des traitements simples comme les contrôles de dates, les validations de zones de saisies, etc. ;

1.5.1.2.2. Les modules externes

- les plug-ins (introduits par Netscape) développés par des éditeurs tiers, qui permettent d’ajouter des fonctionnalités au navigateur, comme la possibilité de visualiser des animations multimédia directement dans la fenêtre du navigateur ;
- Active X : Issus de la technologie OLE qui permettait l’échange de données entre deux applications Windows, les contrôle Actives X sont des composants réutilisables, éléments logiciels distincts permettant à des composants logiciels d’interagir dans un environnement réseau en utilisant n’importe quel langage. Ces contrôles apportent principalement de l’interactivité aux pages HTML et peuvent être utilisés pour une saisie d’informations par l’utilisateur sous la forme d’une requête vers le serveur, ou une personnalisation du site selon le profil de l’utilisateur.

Ainsi il devient plus aisé de construire de véritables applications et non plus de simples pages HTML. On peut développer, par exemple, une billetterie ou un système de réservation. Ces contrôles peuvent être de simples boutons ou encore des tableurs complets. Leur aspect visuel est contrôlé par des scripts dans un langage spécifique. A l’inverse des applets, une fois ces composants transférés, ceux ci demeurent et s’incorporent au navigateur de l’utilisateur, et ne nécessitent pas d’être téléchargés lors d’un prochain accès, sauf pour disposer de la dernière version.Deux aspects limitent cependant ces composants :
- étant compilés, donc plus rapides à l’exécution que du code interprété (les applets Java pas exemple) ils ne sont pas aujourd’hui multi-plate-forme [01info97].
- contrairement aux applets Java, ils bénéficient de l’accès aux ressources locales, ce qui peut poser un problème de sécurité, malgré le fait que ces composants soient certifiés. La certification consiste en un référencement de l’auteur du contrôle apurés d’organismes de certification.

1.5.1.2.3. L’environnement JAVA

L’environnement Java introduit une portabilité inter plate-forme et est composé de divers éléments que nous devons préciser puis détailler. Tout d’abord, il permet le téléchargement de modules applicatifs ( applets)qui s’exécuteront sur le poste client, indépendamment de son système d’exploitation. Cette indépendance s’appuie une machine virtuelle. Ensuite, il permet l’exécution de scripts et d’objets Java ainsi que l’accès à des bases de données.
- Le langage Java est avant tout un langage de programmation original. Ce n’est pas une nouvelle évolution du C ou du C++, bien qu’il s’en soit inspiré, en particulier au niveau de la syntaxe.
Principales caractéristiques du langage [Wallnau97] :
- orienté objet : Java est un langage "full object " c’est-à-dire qu’il respecte une approche orientée objet de la programmation, sans qu’il ne soit possible de programmer autrement.
- portable : un programme écrit en Java sur une plate-forme peut être exécuté sans aucune modification sur un autre système, à condition bien sûr qu’un environnement d’exécution (i.e. une machine virtuelle) soit disponible sur ce dernier.
- interprété : Un programme écrit en Java est exécuté par un interpréteur qui traduit en temps réel les instructions Java en instructions interprétées par une machine virtuelle. Il convient de noter que la portabilité de Java découle du fait qu’il soit interprété par la machine virtuelle et non par le système d’exploitation.
- orienté réseau : Non seulement Java dispose de fonctions standards permettant la gestion de sockets (point de communication entre un processus et un réseau) mais il est intrinsèquement prévu pour fonctionner dans un environnement réseau de type Internet/Intranet, via la création d’ Applets exécutées dans un navigateur Web.
- Les applets Les applets se distinguent des applications standards de par leur structure et leurs capacités d’accès à des ressources. Elles sont issus d’un serveur et exécutées sur le poste de l’utilisateur distant [Andrieu96].Les classes la composant se trouvent sur le serveur, et non pas en local.La Machine Virtuelle Java (ou JVM, Java Virtual Machine en anglais) intégrée au navigateur (et en particulier le chargeur de classes) doit donc être capable d’aller chercher les classes dont l’applet a besoin, durant son exécution.
- La machine virtuelle La capacité à exécuter une application Java sur une plate-forme donnée est obligatoirement conditionnée par l’existence de l’implémentation de la Machine Virtuelle Java sur cette dite plate-forme.Un compilateur Java génère un fichier .class contenant des "bytecodes" ou "P-codes" ( P pour Program). Ces "bytecodes" ne peuvent pas être exécutés tel quel par le processeur de la machine sur laquelle on désire lancer un programme Java compilé (une applet). Il est nécessaire d’introduire une couche logicielle ayant pour principale fonction de traduire les bytecodes en instructions exécutables par le processeur de la machine hôte. C’est cette couche que l’on appelle la Machine Virtuelle Java (JVM).On peut donc dire que, porter Java sur une plate-forme, c’est simplement porter la machine virtuelle Java.
La JVM est en fait l’implémentation d’un processeur virtuel, disposant d’un jeu d’instructions propres ainsi que des instructions natives dédiées à des fonctionnalités spécifiques du langages Java.Cette machine virtuelle est donc constituée d’un moteur d’exécution mais aussi d’un chargeur de classes (class loader) et d’un vérificateur de classes (class vérifier) Celui-ci interdira notamment à l’ applet d’accéder aux ressources locales, une applet ne peut communiquer qu’avec le serveur dont elle est issue. La machine virtuelle Java constitue en réalité ce qu’on appelle un "run-time" Java.
- Les javabeans Un j avabean est un composant réutilisable, écrit avec le langage Java, qui peut être manipulé avec un logiciel de construction graphique. On peut ainsi construire une application complète rien qu’en assemblant entre eux des javabeans [Larcher98].
Un composant Java peut être un simple objet graphique comme un bouton mais pas seulement, car un assemblage de composants Java devient lui-même un composant Java. Un mécanisme dit d’introspection permet à un outil de développement d’explorer un tel composant afin d’en extraire ses propriétés et son comportement (signature des méthodes, classes, événements générés, ).
Des outils de développement dédiés permettent d’assembler des composants Java mais également de les faire interagir entre eux, de façon à pouvoir construire une application interactive sans qu’il ne soit nécessaire d’entrer la moindre ligne de code. On associe ainsi un événement généré par un composant Java à un traitement effectué par un autre, et ce, rien qu’en manipulant des objets graphiques dans une fenêtre.Il est également important de noter que les caractéristiques et le comportement d’un composant Java ne sont pas figés. L’utilisateur peut en effet les modifier avant de les intégrer dans une application, ce qui rendces composants réellement réutilisables.
- Invocation à distance
RMI ou Remote Method Invocation est un mécanisme qui permet d’appeler, dans un programme Java, une méthode se trouvant sur une machine distante et ce, de façon transparente. L’application est construite comme si la méthode était localement disponible, en lui passant des arguments éventuels. Ensuite, à l’exécution de l’application, l’appel de la méthode est transmis à un serveur distant qui aura pour but d’exécuter cette méthode et de renvoyer le résultat de l’exécution à l’application originaire de la demande.
Un tel système permet de centraliser certains développements et d’exécuter des calculs, opération parfois coûteuse en ressources, sur une machine distante. RMI masque la présence d’un réseau si bien que le programmeur n’a pas à connaître la moindre notion de programmation réseau.
- JDBC
Java DataBase Connectivity (JDBC) est une API qui permet d’accéder à une base de données, directement en Java. JDBC a été conçu, comme Java, pour être indépendant de la plate-forme sur laquelle il est utilisé, c’est pourquoi il est basé sur SQL ( Structured Query Language). JDBC utilise un "driver manager" (gestionnaire de pilotes) qui est en fait spécifique à chaque base de données à laquelle on peut se connecter.
Les limites
Java est un langage puissant et performant, tirant expérience des autres langages apparus avant lui dont l’apport principal vient de sa portabilité grâce à la machine virtuelle. Au delà du langage, il apparaît comme un véritable environnement de développement, lequel peut être utilisé de manière exclusive, mais également de manière partielle en n’utilisant par exemple que le langage, les applets. Il est a noter qu’utiliser un tel langage ne garantit pas pour autant une programmation objet, écrire en Java ne suffit pas, je pense qu’une méthodologie propre à la programmation objet est nécessaire afin de bénéficier d’objets qui soient réellement réutilisés, car réutilisables.
Le caractère universel du langage ne règle pas tout, en fait Java ne peut pas utiliser toutes les ressources de la plate-forme sur laquelle il tourne, mais doit se contenter d’un minimum compris par tous les types de machines.
Enfin et par expérience dans la réalisation de pages en langage HTML, on peut rajouter qu’il faut disposer de versions récentes des navigateurs pour que les " applets" soient reconnus, ou que les scripts fonctionnent, l’universalité des langages Java ou des scripts (Javascript ou VBscript)n’est que relative à la version du navigateur.Cette architecture multi-tiers sera envisagée plus avant dans le chapitre sur les scénarios possibles d’évolution. Nous nous focaliserons pour l’instant sur l’architecture trois tiers de notre problématique.
Si l’architecture trois tiers présente des caractéristiques appropriées pour une informatique distribuée, et permet à l’entreprise d’être plus réactive face au changement, encore faut il que les outils de développement utilisés permettent une ingénierie logicielle respectant certains éléments propres à l’architecture (hétérogénéité des systèmes par exemple) et répondent aux problèmes que cette architecture engendre (le déploiement). C’est ce que proposent les outils de seconde génération.

Résumé :Avec l’environnement Internet, architecture multi-niveaux, il est possible au travers du réseau et depuis une application jouant le rôle de navigateur, de consulter des documents ou d’accéder à des données à distance, mais également d’exécuter des applications accédant à des bases de données.De par les caractéristiques objet de ses composants (langage Java, protocole CGI, composants Javabeans) cet environnement permet de passer outre le caractère hétérogènes des technologies informatiques employés (serveurs, systèmes d’exploitation, réseaux). Le langage Java s’appuie sur une machine virtuelle, installée sur le poste client, et qui permet la portabilité du langage.Cependant cette architecture nécessite un développement de l’application ou l’encapsulation de modules avec des éléments propres à cet environnement, ce dernier constitue en quelque sorte une nouvelle plate-forme de développement.

Résumé et Introduction du Mémoire sur Powerbuilder
Objet et client serveur
Powerbuilder Outils de seconde génération client serveur
Powerbuilder scénarios
PowerBuilder l’outil client serveur
Mémoire Powerbuilder conclusions






Répondre à cet article et accéder au Forum Objet et client serveur

Imprimer Objet et client serveur