Pourquoi utiliser Oracle Application Express pour l'application web?
je crois que nous allons à Oracle Apex pour le développement futur. J'ai lu à propos D'Oracle Apex sur wikipedia et c'est pour et contre. Il me semble que l'arnaque l'emporte sur le pro, mais je me trompe peut-être. J'ai l'impression Qu'Oracle Apex est pour DBA avec peu ou pas de connaissances de programmation pour configurer une application Web rapidement trier comme MS Access pour aucun programmeur.
si vous avez L'expérience de travail Oracle Apex, pouvez-vous partager votre pensée? D'après L'entrée de Wikipedia, il ne semble pas que vous devez savoir n'importe quel langage de programmation sauf le PL/SQL?
edit: Oracle Apex-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 et je ne vois pas pourquoi quelqu'un voudrait créer application/page web sur le navigateur, pl/sql et aucune façon de faire le contrôle de version.
Merci.
Jack
13 réponses
veuillez 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 jeté pour ASP.NET.
certains Oracle evangelists prétendent qu'il est capable de créer un contenu très dynamique sur le même pied que les cadres plus courants comme ASP.NET/J2EE. Techniquement, c'est vrai, mais techniquement, c'est aussi vrai qu'on peut traverser l'Atlantique en canot d'un seul homme. Si vous êtes tenté de vous jeter dans un APEX projet même de complexité modérée alors je vous suggère de regarder l'échantillon APEX d'un forum de discussion simple. Comparez - le à un ASP.NET exemple de forum de discussion du MVC ou mise en œuvre d'un RoR.
ayant dit cela:
Le Bon
incroyablement facile à générer une application web respectable avec la saisie de données de base CRUD, le rapport simple et le peupler avec des données. Si vous êtes L'informaticien chargé de la consolidation le mess D'une entreprise D'Excel / accès dbs dans un environnement DB/web central alors vous devriez jeter un oeil à APEX, il très bien adapté pour cette tâche. Si l'on s'attend à ce que le champ d'action atteigne une complexité même modérée, je passerai directement à un cadre plus souple.
si vous êtes un DBA / PLSQL gourou mais n'avez aucune expérience avec le développement web traditionnel, vous serez bien préparé pour exposer la logique d'affaires existant dans une application web sans farce autour de HTML/CSS / JavaScript si vous ne le souhaitez pas.
forum de soutien APEX a une tonne d'information et est bien doté par les devs APEX.
Mauvais
mon expérience avec Apex a commencé à se dégrader lorsque les applications ont dépassé le stade de la saisie de données CRUD et ont exigé des comportements plus dynamiques et axés sur les événements.
L'INTERFACE GRAPHIQUE Basée sur le web n'est pas cool. Déboguer est douloureux.
Version Contrôle? Qui a besoin d'un contrôle de version?
lorsque vous avez (inévitablement) besoin de faire quoi que ce soit en dehors de la portée limitée du cadre, vous devrez vous salir les mains avec PL/SQL. Écrire la logique d'affaires contre la base de données est très bien, mais générer du HTML à partir des procédures PL/SQL s'est senti d'une archaïque inconfortable en 2007.
étant donné le grand nombre d'endroits sournois que vous pouvez cacher page et la logique de redirection, le flux de programme est à la fois difficile à visualisez et pas naturellement propice à un code modulaire, séparable et réutilisable. Les développeurs OOP ne seront pas impressionnés. Il est possible d'avoir des applications maintenable bien structurées avec APEX, mais c'est plus difficile qu'il ne devrait l'être. C'est à des mondes éloignés 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é certains des les plus sombres, l'âme de détruire les sessions de débogage de ma vie. Par exemple, j'essayais de reproduire un bug intermittent qui causerait à un utilisateur de perdre ses données de session. En utilisant le popup d'information de session j'ai vu que de temps en temps les données de session changeraient quand elles n'auraient pas dû. J'ai passé 2 jours à essayer de trouver l'erreur dans mon code sans succès. Presque délirant, j'ai remarqué par pur hasard que je pouvais reproduire des données errantes de session dans la fenêtre de débogage mais le l'application elle-même n'irait pas dans un État d'erreur. Mon cœur s'est effondré quand j'ai réalisé ce qui pouvait arriver. Oracle a confirmé plus tard que j'avais trouvé un bug dans APEX qui a causé la fenêtre d'information de session de me montrer par intermittence des données d'une session précédente. J'avais perdu 2 jours à déboguer un bogue lié à une session avec une fenêtre de débogage de session buggy. 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 web développement. après avoir travaillé avec APEX pendant un certain temps, j'ai réalisé que cela ne ferait pas de moi un meilleur développeur web. Maîtriser APEX est vraiment une question de PL / SQL. Thats fine si vous prévoyez de concentrer votre carrière sur la technologie Oracle, juste être conscient que L'APEX est si tangentielle à la direction des technologies web grand public que l'ensemble portable de compétences que vous pouvez prendre de L'APEX à d'autres cadres web est minime.
si vous envisagez APEX pour fournir simple basé sur le web saisie de données et de rapports, ça vaut le coup d'oeil. Si vous êtes à la recherche d'une alternative à .NET/JAVA/PHP pour le contenu Web dynamique et l'interaction riche UI, je vous conseille de chercher ailleurs.
j'ai lu cette page avec grand intérêt. Notre équipe de développement utilise Apex depuis environ 2 ans maintenant, et j'aimerais résumer notre expérience.
pour la construction des applications de base CRUD, Apex est vraiment excellent. En fait, je vous recommande d'essayer vous-même. Nous avons rencontré quelques difficultés initiales mineures pour le mettre en place, mais celles-ci semblent avoir été résolues dans la version 3.2.
bon
- Idéal pour les applications simples. Si vous app accroître la complexité, envisager une solution de rechange.
- les gabarits intégrés signifient que votre application semble très professionnelle (bien que certains vont débattre de cela).
- un forum et une communauté de soutien, avec beaucoup de gens enthousiastes à votre disposition pour vous aider.
- quelques superbes commandes intégrées. Aime les graphiques et les rapports (mais voir ci-dessous).
mauvais
Le débogueur est catastrophique. Si vous avez utilisé Visual Studio (et même les anciennes versions de Microsoft Access), vous allez vous incruster dans le débogueur. Aucun point de rupture, les messages de débogage jaillissant à l'écran dans une grande liste, ayant à imprimer manuellement des messages de débogage à l'écran. Horrible. La cause de beaucoup, beaucoup d'heures perdues à l'appui.
dès que votre application devient complexe ou nécessite une fonctionnalité riche, vous devez recourir à des hacks Javascript et HTML / CSS, qui rendent le débogage et le support encore plus compliqués (bien que vous puissiez utiliser des outils comme Firebug ou Visual Studio pour vous aider avec cela).
nous avons rencontré des bogues d'état de session inexpliqués, et des feuilles de style qui se sont "détachées" de l'application sans explication - pour nommer quelques problèmes.
le Soutien d'inconnus apps peut être difficile, car il peut être difficile de suivre le cheminement logique sans un bon débogueur. Et je n'achète pas la réponse stock de " bien-apps devrait être codé mieux". Parce que dans le monde réel, ils ne le sont pas - surtout quand vous utilisez un entrepreneur.
les rapports semblent bons mais pas très bons si vous ne pouvez pas les imprimer ou les exporter en PDF. Bien sûr, vous pouvez configurer un serveur de rapports, à la fin nous avons utilisé une autre solution.
dans l'ensemble
je dirais que par tous les moyens utiliser Apex pour des applications simples CRUD. Pour tout ce qui est d'une complexité plus que légère, allez à .Net ou Java. Je ne voudrais pas prenez n'importe quelle note de L'article Wiki sur Apex car il est très biaisé. Notez comment "difficile à contester" (à mon avis le plus grand défaut) a été effacé de l'article.
il faut également se méfier de l'affirmation ridicule selon laquelle on peut convertir rapidement des bases de données D'accès directement en Apex. Oui, cela fonctionnera si vous accédez à la base de données est très, très simpliste. Rien modérément complexe, de l'oublier, comme nous l'avons trouvé.
nous ne l'utiliserions certainement pas pour les applications faisant face au web, seulement interne. Il y a tout simplement trop de difficultés à faire des choses que vous tiendriez pour acquises, par exemple .Net. Je sais qu'il y a des sites comme AskTom, mais ils ne sont pas vraiment complexes. Verrons-nous le prochain Facebook? Je pense que non, même si je suis sûr que quelqu'un Lira ça aura une chance.
Apex est résumé dans un commentaire précédent - les managers voient les démos, et s'y mettent rapidement, convaincus qu'ils ont trouvé une balle d'argent qui va réduire les temps de développement. J'ai eu les directeurs m'appellent et me disent, Nous avons besoin d'une application db avec 40 tables construites en une semaine à Apex s'il vous plaît - c'est à quel point le mythe a perpétré. La réalité est quelque peu différente. Oui, certaines choses sont plus rapides, beaucoup plus rapides, mais vous perdrez du temps dans d'autres domaines - débogage, prise en charge et personnalisation.
bien sûr, vous êtes mieux décider pour vous-même. Installez - le, essayez, vous aimerez peut-être. Mais ne vous laissez pas tromper par les revendications de temps de développement rapide jusqu'à ce que vous avez donné bon allez plus réaliste de l'application.
je suis impliqué dans un énorme projet de migration de 5000 module Oracle Forms application à l'APEX. C'est une utilisation extrême de L'APEX, mais ça marche très bien. C'est un mythe complet que L'APEX est adapté pour les petites applications internes construites par des DBA, des stagiaires ou des utilisateurs finaux: il est certainement adapté à ceux aussi (et plus adapté que la plupart des autres outils), mais il peut également être utilisé pour construire des applications extrêmement sophistiquées.
Pour construire un système sophistiqué de application (plutôt qu'un Out-of-the-box APEX one par défaut) vous aurez besoin de quelqu'un dans l'équipe avec des compétences Javascript, et quelqu'un avec des compétences CSS. Mais la plupart des développeurs auront juste besoin de PL/SQL au départ.
Est-il évolutif? Oui: probablement plus évolutif que la plupart des autres solutions! APEX ajoute très peu de frais généraux au serveur de base de données, et seul le plus minime des serveurs d'application est requis. "Taille Facebook"? Je ne suis pas sûr, mais je ne vois pas pourquoi, en supposant que vous avez un Base de données Oracle sur une machine assez grande et puissante pour traiter des données de "taille Facebook" et des volumes de transaction. Comme n'importe quel projet Oracle, l'évolutivité est entravée principalement par de mauvaises conceptions de base de données et un SQL mal écrit, pas par l'outil. Cependant, peu de gens se retrouvent à construire des systèmes de "taille Facebook": l'êtes-vous?
APEX est un framework qui utilise la base de données et PL/SQL pour produire des pages web. Si vous pouvez comprendre ce que la sortie vers le navigateur devra être vous pouvez le créer dans l'APEX. Si vous trouvez qu'une partie du framework est inhibante, 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 devriez connaître PL / SQL, SQL, HTML, JavaScript et CSS. Assurer la 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 ainsi que la base de données. Il utilise généralement Apache comme serveur web, mais n'est utilisé que pour servir des fichiers statiques et transmettre des requêtes à la base de données, où les pages web sont créées par le code PL/SQL dans le schéma APEX. Vous pouvez utiliser AJAX pour minimiser la taille de la circulation voyageant en haut et en bas de la pipe. Vous pouvez définir la mise en cache pour des articles, des listes, des régions de la page, pages, etc.
comme la plupart des choses sont assez simples à faire avec le cadre, il y aura naturellement des choses un peu plus compliquées à faire dans le cadre. L'exemple de codage de couleur ci-dessus pourrait être quelque chose que vous faites avec CSS ou peut-être que vous devriez vous tourner pour imprimer des énoncés pour produire la sortie dont vous avez besoin. La chose est d'apprendre la façon dont le cadre rend la vie plus facile et puis quand vous frappez une limite, vous pouvez facilement recourir à plus d' les méthodes directes.
venant de VB.Net vous manquerez le débogage étape par étape et le drag and drop. Vous ne manquerez jamais le fait qu'une partie du cycle de vie de la page va faire un bind et réinitialiser les valeurs que vous liez à un objet dans une autre partie de la page.
Bonne chance.
Greg
je suis un DBA et je n'ai jamais eu à programmer avec APEX ou récemment n'importe quoi d'autre (à part quelques Bash scripting et scripts SQL personnalisés pour des buts d'administration) parce que mon travail est loin de développer des applications (sauf être la douleur dans le cul des développeurs qui est). Bien sûr, ma formation est développeur bien que et je crois QU'APEX est l'avenir pour les programmes basés strictement Oracle centrés sur les données.
maintenant le mot clé ici est centré sur les données puisque je ne suis pas d'accord avec beaucoup D'autres ad que tous les applications sont centrées sur les données (vous savez le genre de DBAs qui pensent encore QU'ODBC signifie ORACLE Connectivité Des Bases De Données). Bien sûr, toutes les applications comportent des données, mais sont-elles toutes centrées sur les données? Je doute, tout comme je doute QU'APEX serait jamais utilisé pour le traitement d'image ou les jeux mobiles genre d'applications. Cependant, malgré tout le battage médiatique avec RIA et Web 2.0 le fait est que la plupart des entreprises autour de nous sont affamés pour ces applications simples Vieux centriques de données et Oracle est la meilleure base de données autour et je peux vous assurer Oracle et APEX peut gérer beaucoup plus que l'évolutivité de Facebook à condition bien sûr que vous avez mis la même quantité d'argent que les gars Facebook dans l'infrastructure sous-jacente.
en passant, je déteste aussi la conception D'Oracle des thèmes APEX (affreuse interface utilisateur non professionnelle, imaginez-le comme interface utilisateur principale pour une banque ou une compagnie aérienne), des capacités limitées (bien que cela semble sur le point de changer dans le futur), beaucoup plus de problèmes (rapports PDF professionnels sans payer quantité de licence de base de données D'entreprise pour l'éditeur BI??) mais surtout le marketing D'APEX comme substitut D'accès ou D'Excel car il donne mauvaise impression c'est pour les enfants et je peux vous assurer mon ami que je ne permettrais jamais aux enfants de toucher mes bases de données :)
vous voyez, Oracle a un joyau appelé PL/SQL qui a été perfectionné au fil des ans pour traiter les données de manière beaucoup plus intuitive que n'importe quel autre langage. Maintenant que gem se flétrit avec la mort lente des formes / rapports et je suis positif pas frais graduate ne prendra jamais la peine de l'apprendre strictement pour les procédures stockées dans la base de données (il suffit de voir la guerre entre les développeurs Java et .Net et vous vous rendez compte qu'une fois que vous touchez les crochets bouclés {} tout le reste devient une hérésie). Hélas pour des milliers et des milliers d'excellents développeurs PL/SQL APEX reste le seul sanctuaire où ils peuvent rester productifs et développer des applications centrées sur les données exceptionnelles et sans APEX PL/SQL deviendra sûrement COBOL prochain. C'est pourquoi la communauté PL/SQL conduira Oracle transformera APEX en une plateforme bien plus puissante que ce que nous voyons aujourd'hui. Soit cela, soit dire au revoir à PL/SQL et rejoindre crochets Bouclés Avant (d'ailleurs, il n'est jamais une mauvaise idée d'au moins essayer différentes technologies lorsque vous êtes développeur, au moins vous obtenez une idée pourquoi il n'est pas nécessairement plus vert de l'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 où vous voulez une interface utilisateur légère en plus de vos données. Vous pouvez construire cela assez facilement sans avoir à écrire n'importe quel code.
je trouve aussi QU'APEX est très bon pour le développement de petites applications orientées client. Je ne voudrais pas construire une application géante qui va avoir des centaines de développeurs travaillant dessus en utilisant APEX. Mais si vous avez un cas où 3 ou 4 développeurs construisent un petit site, APEX est susceptible d'être aussi bon que Java/PHP/ASP.Net / whatever assuming equally skilled developers. Si vos développeurs ont tous beaucoup de ASP.Net expertise, par exemple, ils vont avoir une courbe d'apprentissage pour écrire des applications APEX. Vous auriez au moins le même niveau de difficulté, cependant, si vous aviez un tas de développeurs PL/SQL essayer d'apprendre à construire ASP.Net sites.
le site de support de Metalink D'Oracle a été écrit en Apex, donc il peut certainement se dimensionner. Ils sont en train de migrer vers un nouveau site de support basé sur Flash. Je crois comprendre qu'ils ont acquis cette plate-forme par l'acquisition d'une autre entreprise, plutôt que de la construire en réponse à des limites D'Apex.
si vous voulez 'super sexy' avec n'importe quelle application web, vous aurez probablement besoin D'aller Flash/Silverlight/Air. En vertu de cela, n'importe quel site HTML, y compris un site Apex, peut être préparé avec Javascript. Le Bibliothèque JQuery sera inclus dans la prochaine version principale de l'Apex (4.0), mais vous pouvez l'inclure (ou toute autre bibliothèque) maintenant.
la question de la mise en cache mentionnée dans L'article de Wikipedia a été abordée, bien que la plupart des installations mettent encore des images et des scripts sur une structure de répertoire conventionnelle plutôt que de les servir hors de la base de données.
pendant que vous êtes verrouillé dans la base de données Oracle, Je n'obtiens pas le "con" de' plate-forme ' dans l'article. Oracle est disponible sur Windows, Linux et AIX (entre autres). C'est beaucoup moins verrouillé que ASP / SQL Server.
que L'Apex ne convient qu'aux non-programmeurs et que le DBAs est une fâcheuse idée fausse. Nous l'avons utilisé pour construire plusieurs applications web de ligne-of-business, mission-critique, face à la clientèle.
L'interface graphique est gérée par les modèles de page Apex (HTML), CSS et un peu de Javascript pour améliorer l'expérience utilisateur. Toute la logique commerciale est placée dans les paquets PL/SQL. C'est la clé pour rendre votre application facile à entretenir, et pour réutiliser la logique d'affaires dans d'autres applications Apex et d'autres outils client, tels que c# WinForms, Delphi, Java apps, etc.
en ce qui concerne les performances, le moteur Apex ajoute peu de frais généraux et les temps de réponse et l'évolutivité de votre application dépend 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 base de données est une mince couche de PL/SQL. Il est tout à fait logique que cela doit être plus rapide qu'une application .NET ou Java typique qui a dix-sept couches de complexité (comprenant généralement de nombreux services web et des couches de mappage objet-relationnel) entre L'interface graphique et la base de données.
ne mettez pas la logique des affaires dans L'Apex. Utilisez-le pour la présentation seulement.
si vous mettez le code dans l'application Votre ne sera pas en mesure de le maintenir, et vous obtiendrez RSI à partir de tout ce clic. Je crée toujours une couche d'enrubannage, et dans le monde oracle suivre Tom Kytes conseiller - mettre la logique de l'entreprise aussi proche des données que possible. Cela signifie également que vous modules PL / SQL peut être appelé par d'autres systèmes etc - et le meilleur de tous - la véritable viande de votre applicaiton sera en ligne droite des fichiers texte qui peuvent être manipulés avec votre éditeur de texte / IDE préféré.
- Créer une vue avec toutes les données doivent être extraites pour chaque écran.
- créer un seul paquet d'emballage pour toutes les opérations CRUD. (C'est, c'est de Créer, Lire, mettre à Jour et Supprimer je présume)
En bref:
NE METTEZ PAS VOTRE LOGIQUE D'APPLICATION DANS APEX.
c'est mon conseil . . . .
sur mon projet, nous utilisons Oracle APEX pour les vues internes de notre système. Il fonctionne très bien pour ce but.
il n'y a pas de programmation requise. PL/SQL
et même SQL
sont en option. En conséquence, notre DBA et l'opérateur peuvent modeler la vue à leur convenance.
sur le côté négatif, s'il y a une fonctionnalité dont vous avez besoin qui n'est pas programmée dans le système, il est très difficile de l'ajouter. Par exemple, nous avons voulu colorier notre sortie et n'avons pas été en mesure de le faire que.
Je ne voudrais pas qu'un site orienté client soit construit sur APEX.
J'ai beaucoup aimé lire le fil de haut en bas, comme si c'était un débat brûlant. Pour rappeler le début du fil il a commencé par "je crois que nous allons passer à Oracle Apex pour le développement futur..."jack étant un programmeur. net était inquiet de la décision de sa direction et songeait à trouver des contre-faits pour Oracle Apex qui a fini par laver le linge sale (de tous les cadres web) en public. Malgré le fait que la victime était Oracle Apex, la même chose pourrait se produire à .net ou j2ee si le débat a eu lieu entre .net et J2EE gurus. Mon point est que tous les cadres ont leurs propres avantages et inconvénients. C'est pourquoi nous avons tant de personnes. C'est une perte de temps à débattre sur ce qui est plus important de vivre (le sexe, la nourriture ou l'eau? Naturellement, nous choisissons l'article le plus approprié lorsque cela est nécessaire.
- Oracle APEX suites pour les environnements où vous avez beaucoup de bases de données Oracle et quand vous avez vraiment des passionnés de Pl/SQL. Peut vraiment construire riche, complexe, le web 2.0 Centré Sur Les Données applications très facilement (Apex 4.0) mais le débogage et le contrôle de version sont toujours un gâchis et vous devrez aussi vous en tenir à une base de données Oracle(oui vous pouvez avoir des solutions de contournement mais pas robustes).
si vous voulez voir un site Web externe fait en APEX, je suggère de regarder le Outils Oracle Groupe D'Utilisateurs site, ou Demander À 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 programmation dont vous avez besoin est PL/SQL. Si la plupart de votre site sera des rapports simples, vous n'avez même pas besoin d'écrire les requêtes SQL, et l'interface de l'Assistant construira la requête et le sortie pour vous. Si vous voulez du travail côté client cool, vous aurez besoin de connaître CSS et Javascript. Le PL / SQL est seulement pour la validation de données plus complexe.
je suis en désaccord. Il n'est pas seulement adapté aux devs avec quelques compétences de développement ou Ad.
nous produisons en fait des applications hautement personnalisées en utilisant nos propres modèles CSS, un grand nombre d'actions dynamiques et d'interactions (en utilisant jQuery et plusieurs Framework), une sécurité affinée, nos propres plugins apex et des processus PL/SQL complexes.
bien sûr, je suis à l'aide de l'apex > 4.0.
ainsi, vous pouvez construire des applications complexes (nous avons jusqu'à 100 processus/validations différentes et dynamique actions par page) si nécessaire. Et il pourrait exiger de fortes compétences de programmation pour coder correctement dans javascript et PL / SQL (OOP) ou Java procédures stockées + une bonne connaissance de SQL pour définir des requêtes opimisées jusqu'à 500 lignes de code en utilisant SQL récursive et quelques fonctionnalités amusantes.