Vous êtes actuellement dans WEB-NTIC > Powerbuilder Thème spécifique au L4G Powerbuilder au travers d’un mémoire de DESS. Mise en ligne: vendredi 21 mars 2003, par km Objet et client serveurPowerbuilder 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ésLa 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. 1.1.1. L’objetSelon [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 classeUne 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éthodesLes 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’encapsulationSelon [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 attributsLes 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éritageComme 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 :
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égationL’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 polymorphismeLe 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éutilisationA 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 objetsLes objets peuvent être liés entre eux de différentes façons :
Limites et apports [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. 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 graphiqueLes 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 concepts1.2.1.1. L’outil de développementJe 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 graphiqueL’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ériquesLe 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-serveurLes 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-serveurLe 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.
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]. Les limites 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]. 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-tiersLes 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éesLe 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 InternetUne 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 JAVAL’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. 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 Répondre à cet article et Acceder au Forum Objet et client serveur
|
Plan Web Ntic | Espace rédacteurs | Résumé | XML
Copyright © 2008 Web-ntic MOE MOA - Tous droits réservés. Responsable éditorial : km |