为什么要将Oracle Application Express用于Web应用程序?

时间:2009-03-16 23:49:23

标签: oracle-apex

我相信我们将转向Oracle Apex以进行未来发展。我在维基百科上读过关于Oracle Apex的文章,它是赞成和反对的。在我看来,这个概念胜过职业选手,但也许我错了。我觉得Oracle Apex对于DBA而言很少或根本没有编程知识来设置一个Web应用程序,快速排序就像没有程序员的MS Access一样。

如果您有Oracle Apex的工作经验,您能分享一下您的想法吗?从维基百科的条目来看,除了PL / SQL之外,您似乎根本不需要了解任何编程语言?

编辑:Oracle Apex可扩展吗?它能处理像Facebook这样规模的流量吗?

编辑:在Oracle Apex 3.2上工作近两年后。我可以肯定地说,我讨厌它,我不明白为什么有人想要在浏览器上创建web应用程序/页面,pl / sql并且无法进行版本控制。

感谢。

杰克

13 个答案:

答案 0 :(得分:52)

请注意我的经验是APEX 2.x-3.0。

我在12个月的时间里使用了Apex用于一些内部应用程序,但最终将其转发给ASP.NET。

一些Oracle传播者声称它能够创建与ASP.NET / J2EE等主流框架相同的高度动态内容。从技术上讲,这是事实,但从技术上讲,你也可以在一人独木舟中穿越大西洋。如果你想把自己投入到一个中等复杂度的APEX项目中,那么我建议你看一下simple discussion forum的APEX样本。将它与ASP.NET MVC讨论论坛示例或RoR实现进行比较。

说完了:

  • 非常容易生成具有基本CRUD数据输入,简单报告并使用数据填充的受人尊敬的Web应用程序。如果您是负责将公司的Excel / Access dbs混合到一个中央数据库/ Web环境中的IT人员,那么您应该看看APEX,它非常适合这项任务。如果您希望范围增长到甚至中等复杂度,那么我将直接转向更灵活的框架。

  • 如果您是DBA / PLSQL专家,但没有传统Web开发经验,那么您将很好地准备在Web应用程序中公开现有的业务逻辑,如果您不想要的话,不需要填充HTML / CSS / JavaScript至。

  • APEX支持论坛有大量信息,APEX开发人员配备齐全。

错误

当应用程序超越CRUD数据输入并需要更多动态和事件驱动的行为时,我对Apex的体验开始走下坡路。

  • 基于网络的GUI并不酷。调试很痛苦。

  • 版本控制?谁需要版本控制?

  • 当你(不可避免地)需要在框架的有限范围之外做任何事情时,你将不得不弄清楚PL / SQL。编写针对数据库的业务逻辑很好,但是从PL / SQL过程生成HTML在2007年感到非常不舒服。

  • 鉴于可以隐藏页面和重定向逻辑的大量偷偷摸摸的地方,程序流程既难以可视化,也不自然地有利于模块化,可分离和可重用的代码。 OOP开发人员不会留下深刻印象。使用APEX可以拥有结构良好的可维护应用程序,但它应该比它应该更难。这远离MVC。

  • 我使用的版本中有不可接受的框架错误数量。我希望最近的版本能够有所改进,但是将IDE集成到APEX平台本身的范例让我发现了一些最黑暗,灵魂破坏我生命中的调试会话。作为一个例子,我试图重现一个间歇性的错误,导致用户丢失会话数据。使用会话信息弹出窗口,我偶尔会看到会话数据在不应该有的时候会改变。我花了两天的时间试图在我的代码中找到错误而没有运气。在近乎神志不清的情况下,我很有可能注意到我可以在调试窗口中重现错误的会话数据,但应用程序本身不会进入错误状态。当我意识到可能发生的事情时,我的心陷入了沉没。 Oracle后来证实我在APEX中发现了一个错误,该错误导致会话信息窗口间歇性地向我显示之前会话中的数据。我浪费了2天与一个错误的会话调试窗口调试会话相关的错误。这是我建立的最后一个Apex应用程序。

  • PL / SQL不会也不会成为Web开发中的下一件大事。在与APEX合作一段时间后,我意识到它不会让我成为更好的Web开发人员。掌握APEX真的是关于PL / SQL。如果您计划将您的职业生涯重点放在Oracle技术上,那就太好了,只要知道APEX与主流Web技术的方向如此相关,您可以从APEX到其他Web框架的便携技能很少。

如果您正在考虑APEX提供简单的基于Web的数据输入和报告,那么值得一看。如果您正在寻找.NET / JAVA / PHP替代动态Web内容和丰富的UI交互,我建议您去其他地方寻找。

答案 1 :(得分:21)

我非常感兴趣地阅读了这个页面。我们的开发团队已经使用Apex大约2年了,我想总结一下我们的经验。

为了构建基本的CRUD应用程序,Apex确实非常出色。事实上,我建议你自己尝试一下。我们确实面临一些初步的小困难设置,但这些似乎已经在3.2版本中得到了解决。

好的

  • 非常适合简单的应用程序。如果您的应用程序的复杂性会增加,请考虑另一种解决方案。
  • 内置模板意味着您的应用看起来非常专业(虽然有些人会辩论这个)。
  • 一个很好的支持论坛和社区,有很多热心人士随时为您提供帮助。
  • 一些极好的内置控件。喜欢图表和报告(但见下文)。

糟糕

  • 调试器非常糟糕。如果您使用过Visual Studio(甚至是古老版本的Microsoft Access),您将会对调试器感到畏缩。没有断点,调试消息喷出大屏幕中的屏幕,必须手动将调试消息打印到屏幕上。可怕。造成许多小时失去支持的原因。

  • 一旦您的应用程序变得复杂或需要任何丰富的功能,您就必须使用Javascript和HTML / CSS黑客,这使得调试和支持变得更加复杂(尽管您可以使用Firebug或Visual Studio等工具协助这个。)

  • 我们遇到了无法解释的会话状态错误,并且样式表在没有解释的情况下从应用程序中“脱离” - 仅举几个问题。

  • 支持不熟悉的应用程序可能具有挑战性,因为如果没有良好的调试器,可能很难遵循页面逻辑流程。而且我不买股票的反应'好 - 应该编码更好的应用程序'。因为在现实世界中,它们不是 - 特别是当你使用承包商时。

  • 如果您无法打印或导出为PDF,报告看起来不错但不太好。当然,你可以为报告服务器做好准备,最后我们使用了另一种解决方案。

<强>总体

我会说Apex用于简单的CRUD应用程序。对于任何超过轻微复杂性的东西都可以使用.Net或Java。我不会注意到关于Apex的Wiki文章,因为它非常偏斜。注意“难以调试”(在我看来,最大的失败)已经从文章中删除了。

一些非常谨慎的事情是可以快速将Access数据库直接转换为Apex的荒谬声明。是的,如果您访问数据库非常非常简单,它将起作用。正如我们所发现的,任何中等复杂的东西都会忘记它。

我们绝对不会将它用于面向网络的应用程序,只能用于内部。做起来很困难,你会认为理所当然的事情,比如.Net。我知道有像AskTom这样的网站,但这些网站并不完全复杂。我们会看到下一个Facebook吗?我认为不是 - 虽然我确信读到这篇文章的人会对此有所了解。

Apex总结在之前的评论中 - 管理人员看到演示,并迅速买进,确信他们已经找到了一个可以减少开发时间的银弹。我有经理打电话给我说,我们需要一个数据库应用程序,在Apex一周内建有40张桌子 - 这就是这个神话已经走了多远。现实情况有所不同。是的,有些东西更快,更快,但你会在其他方面浪费时间 - 调试,支持和定制。

当然,你最好自己决定。安装它,试一试,你可能会喜欢它。但是,不要被快速开发时间声明所愚弄,直到你在实际应用程序上给它一个好的结果。

答案 2 :(得分:18)

我参与了一个巨大的项目,将5000模块Oracle Forms应用程序迁移到APEX。这是APEX的极端用途,但它的工作正常。对于由DBA,实习生或最终用户构建的小型内部应用程序而言,APEX非常适合 这是一个完整的神话:它当然也适用于那些(并且比大多数其他工具更合适),但它可以也可用于构建极其复杂的应用程序。

要构建一个复杂的应用程序(而不是默认的开箱即用的APEX),你需要团队中有Javascript技能的人,以及有CSS技能的人。但是大多数开发人员最初只需要PL / SQL。

可扩展吗?是的:可能比大多数其他解决方案更具可扩展APEX为数据库服务器增加了很少的开销,只需要最少的应用程序服务器。 “脸谱大小”?我不确定,但我不明白为什么不这样做,假设你的机器上有一个Oracle数据库,它足够强大,可以处理“Facebook大小”的数据和交易量。与任何Oracle项目一样,可伸缩性主要受到错误的数据库设计和编写得不好的SQL的阻碍,而不是工具。然而,没有多少人发现自己正在构建“Facebook大小”系统:是吗?

答案 3 :(得分:11)

APEX是一个使用数据库和PL / SQL生成网页的框架。如果您可以确定浏览器的输出需要什么,您可以在APEX中创建它。如果您发现框架的任何部分禁止,您可以编写PL / SQL过程并直接将它们公开给Web服务器,但仍然可以利用APEX系统为您管理的安全性,日志记录,会话状态等。

你应该知道PL / SQL,SQL,HTML,JavaScript和CSS。当然,界面看起来像一个大数据输入应用程序,但您输入的数据主要是每种语言的代码片段。

它和数据库一样可以扩展。它通常使用Apache作为Web服务器,但仅用于提供静态文件并将请求传递回数据库,其中Web页面由APEX模式中的PL / SQL代码创建。您可以使用AJAX来最小化在管道中上下移动的流量大小。您可以为特定项目,列表,页面区域,页面等设置缓存。

由于大多数事情都很简单,因此在框架中自然会有一些事情要复杂得多。上面给出的颜色编码示例可能是您使用CSS执行的操作,或者您可能需要转到print语句以生成所需的输出。问题是要了解框架如何让生活更轻松,然后当你达到极限时,你可以轻松地采用更直接的方法。

来自VB.Net,你会错过一步一步的调试和拖放。您永远不会错过页面生命周期的某些部分将执行绑定并重置绑定到页面另一部分中的对象的值这一事实。

祝你好运。

格雷格

答案 4 :(得分:9)

我是一名DBA,我从来没有用APEX或最近的任何其他东西编程(除了用于管理目的的一些bash脚本和自定义SQL脚本)因为我的工作远离开发应用程序(除了开发人员的痛苦之外)那是)。当然我的背景是开发人员,我确实认为APEX是严格基于Oracle的数据中心程序的未来。

现在这里的关键字是以数据为中心的,因为我不同意许多其他DBA所有应用程序都是以数据为中心的(你知道那些仍然认为ODBC代表 ORACLE 数据库连接的DBA)。当然所有应用程序都涉及数据,但所有应用程序都以数据为中心我怀疑,正如我怀疑APEX将用于图像处理或移动游戏类应用程序。然而,尽管RIA和Web 2.0大肆炒作,但事实上我们周围的大多数企业都渴望那些普通的以数据为中心的应用程序,Oracle是最好的数据库,我可以向您保证,Oracle和APEX可以处理远远超过Facebook的可扩展性当然,你提供的金额与Facebook人员在底层基础设施上的金额相同。

顺便说一句,我也讨厌Oracle的APEX主题设计(糟糕的非专业用户界面,只是想象它是银行或航空公司业务的主要用户界面),有限的能力(虽然这似乎将来会发生变化),还有更多问题(专业的PDF报告没有支付BI发布商的企业数据库许可证数量?)但是APEX的大部分营销都是Access或Excel的替代品,因为它给孩子们带来了不好的印象,我可以向你保证我的朋友我永远不会让孩子们触摸我的数据库:)

你知道,Oracle有一个名为PL / SQL的宝石,多年来它已经完善,以比任何其他语言更加直观的方式处理数据。现在,宝石因为Forms / Reports的缓慢死亡而枯萎,我很肯定没有新毕业生会费心去学习严格的数据库存储过程(只看到Java和.Net开发人员之间激烈的战争,你就会意识到一旦你触摸大括号{}任何其他东西都变成异端邪说)。成千上万的优秀PL / SQL开发人员APEX仍然是唯一可以保持高效工作并开发出色的以数据为中心的应用程序的避难所,没有APEX PL / SQL肯定会成为下一个COBOL。这就是为什么PL / SQL社区将推动Oracle将APEX转换为比我们今天看到的更强大的A级平台。无论是那个还是说再见PL / SQL并加入大括号前面(顺便说一下,当你是开发人员时至少尝试不同的技术从来都不是一个坏主意,至少你会明白为什么它不一定是绿色的。另一方)。

答案 5 :(得分:8)

我不确定为什么你不认为PL / SQL是一种编程语言......

APEX非常适合您希望在数据上使用轻量级UI的内部应用程序。无需编写任何代码即可轻松构建。

我还发现APEX非常适合开发面向客户的小型应用程序。我不想构建一个巨大的应用程序,将有数百名开发人员使用APEX处理它。但是,如果您有3或4个开发人员正在构建一个小型站点的情况,APEX可能与Java / PHP / ASP.Net /同样假设同样熟练的开发人员一样好。例如,如果您的开发人员都拥有大量的ASP.Net专业知识,那么他们将有一个学习曲线来编写APEX应用程序。但是,如果你有一大堆PL / SQL开发人员试图学习如何构建ASP.Net站点,那么你至少有相同的难度。

答案 6 :(得分:7)

Oracle的Metalink支持网站是用Apex编写的,所以它绝对可以扩展。他们现在正在迁移到更新的基于Flash的支持网站。我知道他们通过收购另一家公司获得了该平台,而不是根据任何Apex限制来建立它。

如果你想要任何网络应用程序的'超级性感',你可能需要去Flash / Silverlight / Air。在此之下,任何基于HTML的网站,包括Apex网站,都可以使用Javascript进行设置。 JQuery库将包含在Apex(4.0)的下一个主要版本中,尽管您现在可以包含该(或任何其他库)。

维基百科文章中提到的缓存问题已得到解决,但大多数安装仍会将图像和脚本放在传统的目录结构上,而不是将它们提供给数据库。

当您被锁定在Oracle数据库中时,我没有在文章中获得'platform'lock“con”。 Oracle可在Windows,Linux和AIX(以及其他)上使用。这比ASP / SQL Server的锁定要少得多。

答案 7 :(得分:6)

Apex只适合非程序员和DBA,这是一个令人遗憾的错误观念。我们使用它来构建多个业务线,任务关键型,面向客户的Web应用程序。

GUI由Apex页面模板(HTML),CSS和一些Javascript处理,以增强用户体验。所有业务逻辑都放在PL / SQL包中。这对于使您的应用程序易于维护,以及在其他Apex应用程序和其他客户端工具(如C#WinForms,Delphi,Java应用程序等)中重用业务逻辑至关重要。

至于性能,Apex引擎增加了很少的开销,应用程序的响应时间和可伸缩性在很大程度上取决于SQL查询(和数据模型)的质量。以这种方式思考:使用Apex,用户和数据库之间唯一的区别就是PL / SQL的薄层。唯一的常识是,它必须比典型的.NET或Java应用程序更快,它在GUI和数据库之间具有17层复杂性(通常包括大量Web服务和对象关系映射层)。

答案 8 :(得分:6)

不要将商业逻辑放入Apex。仅用于演示。

如果您将代码放在应用程序中,您将无法维护它,并且您将从所有单击中获得RSI。我总是创建一个包装层,并在oracle世界中遵循Tom Kytes的建议 - 将业务逻辑尽可能接近数据。这也意味着您可以通过其他系统调用PL / SQL模块等 - 最重要的是 - 您应用程序的真正内容将是直接文本文件,可以使用您喜欢的文本编辑器/ IDE进行操作。

  • 创建一个视图,其中包含要为每个屏幕检索的所有数据。
  • 为所有CRUD操作创建一个包装程序包。 (多数民众赞成是创造,阅读,更新和删除我认为)

简而言之:

请勿在APEX中提供APP逻辑。

这就是我的建议。 。 。

答案 9 :(得分:5)

在我的项目中,我们使用Oracle APEX来获取系统的内部视图。它非常适用于此目的。

无需编程。 PL/SQL甚至SQL都是可选的。因此,我们的DBA和操作员可以根据自己的喜好塑造视图。

缺点是,如果您需要的功能未编入系统,则很难添加。例如,我们想要对输出进行颜色编码,但却无法做到。

我不希望在APEX上建立面向客户的网站。


关于可扩展性问题,APEX的一个好处是它建立在Oracle之上。专注于编写好的SQL并正确设计表,事情应该扩展得很好。我更关心的是让足够多的用户可扩展性成为问题所在。

答案 10 :(得分:5)

非常喜欢从上到下阅读帖子,因为这感觉就像一场激烈的辩论。为了提醒线程的开始,它开始称为“我相信我们正在转向Oracle Apex进行未来的开发......”作为.NET程序员的杰克担心他的管理层决定并想到为Oracle Apex寻找反事实最终在公共场合洗掉了所有网页框架的脏衣服。 尽管受害者是Oracle Apex,但如果辩论是在.net和j2ee大师之间,那么.net或j2ee也会发生同样的情况。我的观点是所有框架都有各自的优缺点。这就是为什么我们实际上有这么多。浪费时间讨论生活中更重要的事情(性,食物或水?)当然,我们会在需要时选择最合适的物品。

  • Oracle APEX套件适用于拥有大量Oracle数据库的环境以及真正拥有Pl / SQL爱好者的环境。可以真正轻松地构建丰富,复杂的Web 2.0 数据中心应用程序(Apex 4.0),但调试和版本控制仍然是一团糟,您还必须坚持使用Oracle数据库(是的,您可以拥有解决方法,但不健全)。

答案 11 :(得分:4)

如果您希望在APEX中看到外部网站,我建议您查看Oracle Tools Users Group网站或Ask Tom。两者都是大型,经常使用的站点,具有很多自定义。

您对维基百科文章的印象是正确的。您需要的唯一编程知识是PL / SQL。如果您的大多数站点都是简单的报告,您甚至不需要编写SQL查询,并且向导界面将为您构建查询和输出。如果你想要很酷的客户端工作,你需要知道CSS和Javascript。 PL / SQL仅用于更复杂的数据验证。

答案 12 :(得分:3)

我不同意。它不仅适合具有一些开发技能或DBA的开发人员。

我们实际上使用自己的CSS模板,大量动态操作和交互(使用jQuery和几个框架),微调安全性,我们自己的顶点插件和复杂的PL / SQL进程来生成高度自定义的应用程序。

当然,我使用的是顶点&gt; 4.0。

因此,如果需要,您可以构建复杂的应用程序(我们最多可以有100个不同的进程/验证和每页的动态操作)。它可能需要强大的编程技能才能在javascript和PL / SQL(OOP)或Java存储过程中正确编码+熟练掌握SQL,以使用递归SQL和一些有趣的功能来定义多达500行代码的最佳查询。