Pourquoi utiliser Oracle Application Express pour une application Web?

Je pense que nous passons à Oracle Apex pour un développement futur. J’ai lu des articles sur Oracle Apex sur Wikipédia. Il me semble que la con l’emporte sur le pro mais je me trompe peut-être. J’ai l’impression qu’Oracle Apex est destiné aux administrateurs de bases de données avec peu ou pas de connaissances en programmation pour configurer rapidement une application Web comme MS Access for none programmer.

Si vous avez une expérience de travail Oracle Apex, pouvez-vous partager votre opinion? De l’entrée de Wikipedia, il ne semble pas que vous ayez besoin de connaître un langage de programmation du tout, mais seulement le PL / SQL?

edit: Oracle Apex est-il évolutif? Peut-il gérer le trafic comme la taille de Facebook?

edit: après avoir travaillé près de deux ans sur Oracle Apex 3.2. Je peux dire en toute sécurité que je déteste ça et je ne vois pas pourquoi quiconque voudrait créer une application / page web sur un navigateur, pl / sql et aucun moyen de contrôler la version.

Remercier.

Jack

    S’il vous plaît noter que mes expériences sont avec APEX 2.x-3.0.

    J’ai utilisé Apex pour quelques applications internes sur une période de 12 mois, mais je l’ai finalement ajouté à ASP.NET.

    Certains évangélistes d’Oracle affirment qu’il est capable de créer un contenu hautement dynamic au même titre que les infrastructures plus classiques telles que ASP.NET / J2EE. Techniquement, c’est vrai, mais techniquement, il est également vrai que vous pourriez traverser l’Atlantique en canoë à un seul homme. Si vous êtes tenté de vous lancer dans un projet APEX d’une complexité même modérée, je vous suggère de consulter l’exemple APEX d’un simple forum de discussion . Comparez-le à un exemple de forum de discussion ASP.NET MVC ou à une implémentation RoR.

    Ayant dit cela:

    Le bon

    • Incroyablement facile à générer une application Web respectable avec la saisie de données de base CRUD, la génération de rapports simple et le remplissage de données. Si vous êtes l’informaticien chargé de regrouper les fichiers Excel / Access d’une entreprise dans un environnement DB / Web central, vous devriez consulter APEX, qui convient parfaitement à cette tâche. Si vous vous attendez à ce que la scope évolue vers une complexité encore plus modérée, je passerais directement à un cadre plus flexible.

    • Si vous êtes un gourou DBA / PLSQL mais que vous n’avez aucune expérience du développement Web traditionnel, vous serez bien préparé pour exposer la logique métier existante dans une application Web sans avoir à utiliser HTML / CSS / JavaScript si vous ne le souhaitez pas.

    • Le forum de support APEX a une tonne d’informations et est bien géré par les développeurs APEX.

    Le mauvais

    Mon expérience avec Apex a commencé à se détériorer lorsque les applications dépassaient la saisie des données CRUD et nécessitaient des comportements plus dynamics et axés sur les événements.

    • L’interface utilisateur Web n’est pas cool. Le débogage est douloureux.

    • Contrôle de version? Qui a besoin du contrôle de version?

    • Lorsque vous devez (inévitablement) faire quelque chose en dehors de la scope limitée du cadre, vous devez vous familiariser avec PL / SQL. L’écriture de la logique métier sur la firebase database est satisfaisante, mais la génération de code HTML à partir de procédures PL / SQL s’est avérée inconfortable en 2007.

    • Étant donné le grand nombre de lieux sournois que vous pouvez masquer et la logique de redirection, le stream de programme est à la fois difficile à visualiser et ne favorise pas naturellement un code modulaire, séparable et réutilisable. Les développeurs OOP ne seront pas impressionnés. Il est possible d’avoir des applications maintenables bien structurées avec APEX, mais c’est plus difficile que prévu. Ce sont des mondes loin de MVC.

    • Nombre inacceptable de bogues dans les versions que j’ai utilisées. J’espère que cela s’est amélioré avec les versions récentes, mais le paradigme de l’intégration de l’IDE dans la plate-forme APEX elle-même m’a causé certaines des sessions de débogage les plus sombres et les plus destrucsortingces de ma vie . Par exemple, j’essayais de reproduire un bug intermittent qui ferait perdre à un utilisateur ses données de session. À l’aide de la fenêtre contextuelle d’information sur la session, j’ai constaté que les données de session changeraient parfois lorsque cela ne devrait pas être le cas. J’ai passé 2 jours à essayer de trouver l’erreur dans mon code sans succès. Au bord du délire, j’ai constaté par hasard que je pouvais reproduire des données de session erronées dans la fenêtre de débogage, mais que l’application elle-même n’entrerait pas dans un état d’erreur . Mon coeur a coulé quand j’ai réalisé ce qui pouvait arriver. Oracle a par la suite confirmé que j’avais trouvé un bogue dans APEX qui entraînait l’affichage intermittent de la fenêtre d’informations de session d’une session précédente. J’ai perdu 2 jours à déboguer un bug lié à la session avec une fenêtre de débogage de session buggée. C’était la dernière application Apex que j’ai construite.

    • PL / SQL n’est pas et ne sera jamais la prochaine grande chose dans le développement web. Après avoir travaillé avec APEX pendant un certain temps, j’ai réalisé que cela ne allait pas faire de moi un meilleur développeur Web. Maîsortingser APEX, c’est vraiment PL / SQL. Si vous prévoyez d’axer votre carrière sur la technologie Oracle, sachez que l’APEX est tellement tangible à la direction des technologies Web grand public que l’ensemble de compétences que vous pouvez utiliser depuis APEX vers d’autres infrastructures Web est minime.

    Si vous envisagez d’utiliser APEX pour fournir une saisie de données et un reporting simples sur le Web, cela en vaut la peine. Si vous cherchez une alternative à .NET / JAVA / PHP pour un contenu Web dynamic et une interaction riche avec l’interface utilisateur, je vous conseille de chercher ailleurs.

    Je lis cette page avec grand intérêt. Notre équipe de développement utilise Apex depuis environ 2 ans et j’aimerais résumer notre expérience.

    Pour construire des applications de base CRUD, Apex est vraiment excellent. En fait, je vous recommande de l’essayer vous-même. Nous avons rencontré quelques difficultés initiales lors de la configuration, mais celles-ci semblent avoir été corrigées dans la version 3.2.

    Le bon

    • Idéal pour les applications simples. Si votre application devient de plus en plus complexe, envisagez une solution alternative.
    • Les modèles intégrés signifient que votre application semble très professionnelle (bien que certains en débattent).
    • Un bon forum de support et une bonne communauté, avec beaucoup de personnes désireuses de vous aider.
    • De superbes commandes intégrées. J’adore les graphiques et les rapports (mais voir ci-dessous).

    Le mauvais

    • Le débogueur est catastrophique. Si vous avez utilisé Visual Studio (et même d’anciennes versions de Microsoft Access), vous allez vous heurter au débogueur. Pas de points d’arrêt, les messages de débogage crachant à l’écran dans une grande liste, devant imprimer manuellement les messages de débogage à l’écran. Horrible. La cause de nombreuses heures perdues à supporter.

    • Dès que votre application devient complexe ou nécessite des fonctionnalités riches, vous devez recourir aux hacks Javascript et HTML / CSS, ce qui rend le débogage et le support encore plus compliqués (même si vous pouvez utiliser des outils comme Firebug ou Visual Studio).

    • Nous avons rencontré des bogues d’état de session inexpliqués et des feuilles de style “détachées” de l’application sans explication – pour ne citer que quelques problèmes.

    • La prise en charge d’applications inconnues peut être difficile, car il peut être difficile de suivre le stream logique de la page sans un bon débogueur. Et je n’achète pas la réponse stock de «bien – les applications doivent être mieux codées». Parce que dans le monde réel, ils ne le sont pas – surtout lorsque vous utilisez un entrepreneur.

    • Les rapports sont beaux mais pas très bons si vous ne pouvez pas les imprimer ou les exporter au format PDF. Bien sûr, vous pouvez acheter un serveur de rapports, à la fin nous avons utilisé une autre solution.

    Global

    Je dirais que par tous les moyens, utilisez Apex pour de simples applications CRUD. Pour tout ce qui est de complexité moindre, optez pour .Net ou Java. Je ne prendrais pas note de l’article Wiki sur Apex car il est très faussé. Notez à quel point «difficile à déboguer» (à mon avis le plus gros échec) a été supprimé de l’article.

    Il faut également se méfier de l’argument ridicule selon lequel vous pouvez convertir rapidement des bases de données Access directement en Apex. Oui, cela fonctionnera si vous accédez à DB est très, très simpliste. Tout ce qui est moyennement complexe, oubliez-le, comme nous l’avons trouvé.

    Nous ne l’utiliserions certainement pas pour les applications en ligne, uniquement en interne. Il y a tout simplement trop de difficultés à faire des choses que vous considéreriez comme allant de soi, par exemple .Net. Je sais qu’il existe des sites comme AskTom, mais ceux-ci ne sont pas vraiment complexes. Verrons-nous le prochain Facebook? Je pense que non – même si je suis sûr que quelqu’un qui lit ceci aura un problème.

    Apex est résumé dans un commentaire précédent – les responsables voient les démonstrations et s’engagent rapidement, convaincus qu’ils ont trouvé une solution miracle qui réduira les délais de développement. J’ai eu des gestionnaires qui m’appelaient et disaient que nous avions besoin d’une application de firebase database avec 40 tables en une semaine dans Apex. La réalité est quelque peu différente. Oui, certaines choses sont plus rapides, sensiblement plus rapides, mais vous perdrez du temps dans d’autres domaines – le débogage, le support et la personnalisation.

    Bien sûr, vous devez décider par vous-même. Installez-le, essayez-le, vous pouvez l’aimer. Mais ne vous laissez pas berner par les délais de développement rapides, jusqu’à ce que vous ayez donné un bon résultat à une application réaliste.

    Je suis impliqué dans un énorme projet de migration d’une application Oracle Forms 5000 vers APEX. Ceci est une utilisation extrême de APEX, mais cela fonctionne très bien. C’est un mythe complet que APEX ne convient que pour les petites applications internes construites par les administrateurs de firebase database, les stagiaires ou les utilisateurs finaux: il convient certainement aussi (et plus adapté que la plupart des autres outils), mais applications.

    Pour créer une application sophistiquée (plutôt qu’une application APEX standard par défaut), vous aurez besoin d’un membre de l’équipe doté de compétences en JavaScript et d’une personne possédant des compétences en CSS. Mais la plupart des développeurs auront juste besoin de PL / SQL initialement.

    Est-ce évolutif? Oui: probablement plus évolutif que la plupart des autres solutions! APEX ajoute très peu de charge au serveur de firebase database et seuls les serveurs d’applications les plus minimes sont requirejs. “Taille de Facebook”? Je ne sais pas avec certitude, mais je ne vois pas pourquoi, en supposant que vous ayez une firebase database Oracle sur une machine suffisamment grande et puissante pour gérer les volumes de données et les volumes de transactions de “taille Facebook”. Comme tout projet Oracle, l’évolutivité est principalement gênée par de mauvaises conceptions de bases de données et un langage SQL mal écrit, et non par l’outil. Peu de gens se retrouvent cependant à construire des systèmes de “taille Facebook”: êtes-vous?

    APEX est un framework qui utilise la firebase database et PL / SQL pour produire des pages Web. Si vous pouvez déterminer la sortie du navigateur, vous pouvez la créer dans APEX. Si vous trouvez une partie du cadre interdisant, vous pouvez écrire des procédures PL / SQL et les exposer directement au serveur Web tout en profitant de la sécurité, de la journalisation, de l’état de session, etc. que le système APEX gère pour vous.

    Vous devez connaître PL / SQL, SQL, HTML, JavaScript et CSS. Bien sûr, l’interface ressemble à une application de saisie de données volumineuses, mais les données que vous entrez seront principalement des extraits de code dans chacune de ces langues.

    Il évolue aussi bien que la firebase database. Il utilise généralement Apache comme serveur Web, mais sert uniquement à servir des fichiers statiques et à renvoyer des requêtes à la firebase database, où les pages Web sont créées par le code PL / SQL du schéma APEX. Vous pouvez utiliser AJAX pour réduire la taille du trafic qui circule dans le tuyau. Vous pouvez définir la mise en cache pour des éléments spécifiques, des listes, des régions de page, des pages, etc.

    Puisque la plupart des choses sont assez simples à faire avec le framework, il y aura naturellement des choses un peu plus compliquées à faire dans le cadre. L’exemple de code couleur ci-dessus peut être quelque chose que vous faites avec CSS ou peut-être devrez-vous vous tourner vers l’impression des instructions pour produire le résultat dont vous avez besoin. La chose est d’apprendre comment le cadre facilite la vie et quand vous atteignez une limite, vous pouvez facilement recourir à des méthodes plus directes.

    En venant de VB.Net, vous allez manquer le débogage pas à pas et le glisser-déposer. Vous ne manquerez jamais le fait qu’une partie du cycle de vie de la page effectue une liaison et réinitialise les valeurs que vous avez liées à un object dans une autre partie de la page.

    Bonne chance.

    Greg

    Je suis un DBA et je n’ai jamais eu à programmer avec APEX ou autre chose récemment (à part quelques scripts bash et des scripts SQL personnalisés à des fins d’administration) car mon travail est loin de développer des applications (sauf les développeurs) . Bien sûr, je suis développeur et je pense qu’APEX est un futur pour les programmes centrés sur les données ssortingctement Oracle.

    Maintenant, le mot-clé est centré sur les données, car je ne suis pas d’accord avec de nombreux autres administrateurs de bases de données sur le fait que toutes les applications sont centrées sur les données (vous connaissez le type d’administrateurs de bases de données ODBC. Bien sûr, toutes les applications impliquent des données, mais toutes les applications sont-elles centrées? Je doute, tout comme je doute que APEX serait jamais utilisé pour le traitement de l’image ou le type d’applications de jeux mobiles. Cependant, malgré tout le battage médiatique avec RIA et Web 2.0, la plupart des entresockets qui nous entourent ont soif d’anciennes applications centrées sur les données et Oracle est la meilleure firebase database. à condition bien sûr que vous ayez mis la même quantité d’argent que les gars de Facebook dans l’infrastructure sous-jacente.

    En passant, je déteste également la conception par Oracle des thèmes APEX (une interface utilisateur peu professionnelle, juste une interface utilisateur principale pour une banque ou une compagnie aérienne), des capacités limitées (bien que cela semble évoluer dans le futur) Création de rapports PDF sans payer le montant de la licence Enterprise Database pour l’éditeur BI ??) mais la plus grande partie du marketing d’APEX en remplacement d’Access ou d’Excel car cela donne une mauvaise impression aux enfants et je peux vous assurer touchez mes bases de données 🙂

    Vous voyez, Oracle a un joyau appelé PL / SQL qui a été perfectionné au fil des ans pour gérer les données de manière beaucoup plus intuitive que toute autre langue. Maintenant que la gemme dépérit avec la mort lente des formulaires / rapports et je suis certain qu’aucun nouveau diplômé ne prendra la peine de l’apprendre ssortingctement pour les procédures stockées de bases de données (il suffit de voir la guerre entre développeurs Java et .Net {} autre chose devient une hérésie). Hélas, pour des milliers et des milliers d’excellents développeurs PL / SQL, APEX rest le seul refuge où ils peuvent restr productifs et développer des applications centrées sur les données exceptionnelles et sans que APEX PL / SQL ne devienne sûrement le prochain COBOL. C’est pourquoi la communauté PL / SQL incitera Oracle à transformer APEX en une plate-forme de classe A beaucoup plus puissante que ce que nous voyons aujourd’hui. Soit ça, soit bye bye to PL / SQL et joindre les accolades avant (au fait, ce n’est jamais une mauvaise idée d’essayer au moins différentes technologies quand vous êtes développeur, au moins vous avez une idée de pourquoi ce n’est pas nécessairement plus vert au autre côté).

    Je ne sais pas pourquoi vous ne considérez pas PL / SQL comme un langage de programmation …

    APEX est idéal pour les applications internes dans lesquelles vous souhaitez une interface utilisateur légère sur vos données. Vous pouvez le construire assez facilement sans avoir à écrire de code.

    Je trouve également qu’APEX est très efficace pour développer des applications plus petites destinées aux clients. Je ne voudrais pas créer une application géante qui sera utilisée par des centaines de développeurs utilisant APEX. Mais si vous avez un cas où 3 ou 4 développeurs construisent un site restreint, APEX sera probablement aussi bon que Java / PHP / ASP.Net / peu importe les développeurs qualifiés. Si vos développeurs ont tous beaucoup d’expertise ASP.Net, par exemple, ils vont avoir une courbe d’apprentissage pour écrire des applications APEX. Vous auriez au moins le même niveau de difficulté si vous aviez un groupe de développeurs PL / SQL essayant d’apprendre à créer des sites ASP.Net.

    Le site de support Oracle de Metalink a été écrit en Apex. Cependant, ils migrent vers un site de support Flash plus récent. Je crois comprendre qu’ils ont acquis cette plate-forme par le biais d’une acquisition d’une autre société, plutôt que de la construire en réponse à des limites d’Apex.

    Si vous voulez être «super sexy» avec n’importe quelle application Web, vous devrez probablement utiliser Flash / Silverlight / Air. En vertu de cela, tout site HTML, y compris un site Apex, peut être agrémenté de Javascript. La bibliothèque JQuery sera incluse dans la prochaine version principale d’Apex (4.0), bien que vous puissiez l’inclure (ou toute autre bibliothèque) maintenant.

    Le problème de mise en cache mentionné dans l’article de Wikipedia a été résolu, bien que la plupart des installations placent encore des images et des scripts sur une structure de répertoire conventionnelle plutôt que de les dissortingbuer à partir de la firebase database.

    Pendant que vous êtes bloqué dans la firebase database Oracle, je ne reçois pas le verrou de la plate-forme “con” dans l’article. Oracle est disponible sous Windows, Linux et AIX (entre autres). C’est beaucoup moins verrouillé que ASP / SQL Server.

    Ce Apex ne convient que pour les non-programmeurs et les administrateurs de bases de données est une fausse idée malheureuse. Nous l’avons utilisé pour créer plusieurs applications Web métier, critiques et orientées vers la clientèle.

    L’interface graphique est gérée par des modèles de page Apex (HTML), CSS et un peu de Javascript pour améliorer l’expérience utilisateur. Toute la logique métier est placée dans des packages PL / SQL. Cela est essentiel pour faciliter la maintenance de votre application et pour réutiliser la logique métier dans d’autres applications Apex et d’autres outils clients, tels que C # WinForms, Delphi, les applications Java, etc.

    En ce qui concerne les performances, le moteur Apex ajoute peu de temps système et les temps de réponse et l’évolutivité de votre application dépendent largement de la qualité de vos requêtes SQL (et du modèle de données). Pensez-y de cette façon: avec Apex, la seule chose entre votre utilisateur et la firebase database est une couche mince de PL / SQL. Il est logique que cela soit plus rapide qu’une application .NET ou Java classique qui comporte dix-sept couches de complexité (comprenant généralement de nombreux services Web et couches de mappage relationnel) entre l’interface graphique et la firebase database.

    Ne mettez pas la logique de gestion dans Apex. Utilisez-le uniquement pour la présentation.

    Si vous placez le code dans l’application, vous ne pourrez pas le gérer, et vous obtiendrez RSI à partir de tout ce clic. Je crée toujours une couche enveloppante et, dans le monde des oracles, suivez Tom Kytes conseille de mettre la logique métier le plus près possible des données. Cela signifie également que vos modules PL / SQL peuvent être appelés par d’autres systèmes, etc. – et le meilleur de tous – la véritable utilité de votre application réside dans des fichiers texte pouvant être manipulés avec votre éditeur de texte / IDE préféré.

    • Créez une vue avec toutes les données à récupérer pour chaque écran.
    • Créez un package de wrapper unique pour toutes les opérations CRUD. (Ceci est créer, lire, mettre à jour et supprimer, je présume)

    En bref:

    NE PAS METTRE VOTRE APP LOGIC DANS APEX.

    C’est mon conseil . . .

    Sur mon projet, nous utilisons Oracle APEX pour les vues internes de notre système. Cela fonctionne très bien dans ce but.

    Il n’y a pas de programmation requirejse PL/SQL et même SQL sont facultatifs. En conséquence, notre DBA et notre opérateur peuvent adapter la vue à leur goût.

    En revanche, s’il existe une fonctionnalité dont vous avez besoin et qui n’est pas programmée dans le système, il est très difficile de l’append. Par exemple, nous voulions coder en couleur notre sortie et nous n’avions pas pu le faire.

    Je ne voudrais pas avoir un site client sur APEX.


    En ce qui concerne l’évolutivité, APEX est conçu sur Oracle. Concentrez-vous sur l’écriture d’un code SQL correct et la conception correcte des tables, et les choses devraient bien évoluer. Je serais plus soucieux d’obtenir suffisamment d’utilisateurs pour que l’évolutivité soit le problème.

    J’ai beaucoup aimé lire le fil de haut en bas, car cela semblait être un débat passionnant. Pour rappeler le début du thread, il a commencé par “Je crois que nous allons passer à Oracle Apex pour un développement futur …” Jack étant un programmeur .NET était inquiet de la décision de son management et pensait trouver des contre-faits pour Oracle Apex ce qui a finalement fini par laver le linge sale (de tous les frameworks web) en public. Malgré le fait que la victime était Oracle Apex, la même chose pourrait arriver à .net ou j2ee si le débat était entre .net et j2ee gurus. Mon point est que tous les frameworks ont leurs avantages et leurs inconvénients. C’est pourquoi nous en avons tellement. C’est une perte de temps pour discuter de ce qui est plus important de vivre (sexe, nourriture ou eau?). Naturellement, nous sélectionnons l’élément le plus approprié lorsque cela est nécessaire.

    • Les suites Oracle APEX pour les environnements où vous disposez de nombreuses bases de données Oracle et lorsque vous avez vraiment des passionnés de Pl / SQL. Peut vraiment créer des applications de Data Censortingc Web 2.0 riches et complexes (Apex 4.0), mais le débogage et le contrôle des versions sont toujours un gâchis et vous devrez également vous en tenir à une firebase database Oracle.

    Si vous souhaitez voir un site Web externe réalisé dans APEX, je vous suggère de consulter le site Oracle Tools Users Group ou Ask Tom . Les deux sont de grands sites fréquemment utilisés avec beaucoup de personnalisation.

    Votre impression de l’article de Wikipedia est correcte. La seule connaissance de la programmation dont vous avez besoin est PL / SQL. Si la plupart de vos sites sont des rapports simples, vous n’avez même pas besoin d’écrire les requêtes SQL, et l’interface de l’assistant va créer la requête et la sortie pour vous. Si vous voulez un bon travail côté client, vous devez connaître CSS et Javascript. Le PL / SQL est uniquement pour la validation de données plus complexe.

    Je ne suis pas d’accord. Il convient non seulement aux développeurs ayant quelques compétences en développement ou des administrateurs de firebase database.

    Nous produisons en fait des applications hautement personnalisées à l’aide de modèles CSS, de nombreuses actions et interactions dynamics (à l’aide de jQuery et de plusieurs frameworks), d’une sécurité optimisée, de nos propres plugins apex et de processus PL / SQL complexes.

    Bien sûr, j’utilise apex> 4.0.

    Ainsi, vous pouvez créer des applications complexes (nous avons jusqu’à 100 processus / validations différents et actions dynamics par page) si nécessaire. Et il pourrait nécessiter de solides compétences en programmation pour coder correctement en javascript et PL / SQL (OOP) ou en procédures stockées Java + une bonne connaissance de SQL pour définir des requêtes optimisées de 500 lignes de code en SQL récursif et quelques fonctionnalités amusantes.