我相信我们正在转向Oracle Apex以进行未来的开发.我在维基百科上读过关于Oracle Apex的文章,它是赞成和反对的.在我看来,这个概念胜过职业选手,但也许我错了.我认为Oracle Apex适用于DBA,很少或根本没有编程知识来设置Web应用程序,快速排序为MS Access,对于没有程序员.
如果您有Oracle Apex的工作经验,您能分享您的想法吗?从维基百科的条目来看,您似乎不需要知道任何编程语言,只需要知道PL/SQL?
编辑:Oracle Apex可扩展吗?它能处理像Facebook这样的流量吗?
编辑:在Oracle Apex 3.2上工作近两年.我可以肯定地说,我讨厌它,我不明白为什么有人想要在浏览器上创建web应用程序/页面,pl/sql并且无法进行版本控制.
谢谢.
插口
请注意我的经验是APEX 2.x-3.0.
我在12个月的时间内使用了Apex用于一些内部应用程序,但最终将其转储到ASP.NET中.
一些Oracle福音传播者声称它能够创建与ASP.NET/J2EE等主流框架相同的高度动态内容.从技术上讲,这是事实,但从技术上讲,你也可以在一人独木舟中穿越大西洋.如果你想把自己投入到一个中等复杂度的APEX项目中,那么我建议你看看一个简单讨论论坛的APEX样本.将它与ASP.NET MVC讨论论坛示例或RoR实现进行比较.
话说回来:
好的
非常容易生成一个受人尊敬的Web应用程序,其中包含基本的CRUD数据输入,简单的报告并使用数据填充它.如果您是负责将公司的Excel/Access dbs混合到一个中央数据库/ Web环境中的IT人员,那么您应该看看APEX,它非常适合这项任务.如果您希望范围增长到甚至中等复杂度,那么我将直接转向更灵活的框架.
如果您是DBA/PLSQL专家,但没有传统Web开发经验,那么您将很好地准备在Web应用程序中公开现有的业务逻辑,如果您不想这样做,而无需填充HTML/CSS/JavaScript.
APEX支持论坛拥有大量信息,并且APEX开发人员配备齐全.
坏
当应用程序超越CRUD数据输入并需要更多动态和事件驱动的行为时,我对Apex的体验开始走下坡路.
基于Web的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交互,我建议您去其他地方寻找.
我非常感兴趣地阅读了这个页面.我们的开发团队已经使用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张桌子建成 - 这就是这个神话已经走了多远.现实情况有所不同.是的,有些东西更快,更快,但你会在其他方面浪费时间 - 调试,支持和定制.
当然,你最好自己决定.安装它,试一试,你可能会喜欢它.但是,不要被快速开发时间声明所迷惑,直到你在实际应用程序上给它一个好的结果.
我参与了一个将5000模块Oracle Forms应用程序迁移到APEX 的大项目.这是APEX的极端用途,但它的工作正常.这是一个完整的神话,APEX是适合仅由数据库管理员,实习或最终用户建立小型的内部应用程序:它肯定适合那些太(比大多数其他工具更适合),但它也可以用来构建极其复杂应用.
要构建一个复杂的应用程序(而不是默认的开箱即用APEX),你需要团队中有Javascript技能的人,以及具有CSS技能的人.但是大多数开发人员最初只需要PL/SQL.
它可扩展吗?是的:可能比大多数其他解决方案更具可扩展 APEX为数据库服务器增加了很少的开销,只需要最少的应用程序服务器."脸谱大小"?我不确定,但我不明白为什么不这样做,假设你的机器上有一个Oracle数据库,它足够强大,可以处理"Facebook大小"的数据和交易量.与任何Oracle项目一样,可伸缩性主要受到错误的数据库设计和编写得不好的SQL的阻碍,而不是工具.然而,没有多少人发现自己建立了"Facebook规模"系统:是吗?
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,你会错过一步一步的调试和拖放.您永远不会错过页面生命周期的某些部分将执行绑定并重置绑定到页面另一部分中的对象的值这一事实.
祝好运.
格雷格
我是一名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并加入大括号前面(顺便说一下,当你是开发人员时至少尝试不同的技术从来都不是一个坏主意,至少你会明白为什么它不一定是绿色的.另一边).
我不确定为什么你不认为PL/SQL是一种编程语言......
APEX非常适合需要基于数据的轻量级UI的内部应用程序.无需编写任何代码即可轻松构建.
我还发现APEX非常适合开发面向客户的小型应用程序.我不想构建一个巨大的应用程序,它将有数百名开发人员使用APEX处理它.但是,如果您有3或4个开发人员正在构建一个小型站点的情况,APEX可能与Java/PHP/ASP.Net /同样假设同样熟练的开发人员一样好.例如,如果您的开发人员都拥有大量的ASP.Net专业知识,那么他们将有一个学习曲线来编写APEX应用程序.但是,如果你有一群PL/SQL开发人员试图学习如何构建ASP.Net站点,那么你至少有相同的难度.
不要将商业逻辑放入Apex.仅用于演示.
如果您将代码放在应用程序中,您将无法维护它,并且您将从所有单击中获得RSI.我总是创建一个包装层,并在oracle世界中遵循Tom Kytes的建议 - 将业务逻辑尽可能接近数据.这也意味着您可以通过其他系统调用PL/SQL模块等 - 最重要的是 - 您应用程序的真正内容将是直接文本文件,可以使用您喜欢的文本编辑器/ IDE进行操作.
创建一个视图,其中包含要为每个屏幕检索的所有数据.
为所有CRUD操作创建一个包装程序包.(多数民众赞成是创造,阅读,更新和删除我认为)
简而言之:
请勿在APEX中提供APP逻辑.
多数民众赞成我的建议....
Oracle的Metalink支持站点是用Apex编写的,所以它绝对可以扩展.他们现在正在迁移到更新的基于Flash的支持网站.我知道他们通过收购另一家公司获得了该平台,而不是根据任何Apex限制来建立它.
如果你想要任何网络应用程序的"超级性感",你可能需要去Flash/Silverlight/Air.在此之下,任何基于HTML的网站,包括Apex网站,都可以使用Javascript进行设置.JQuery库将包含在Apex(4.0)的下一个主要版本中,尽管您现在可以包含该(或任何其他库).
维基百科文章中提到的缓存问题已得到解决,但大多数安装仍会将图像和脚本放在传统的目录结构上,而不是将它们提供给数据库.
当您被锁定在Oracle数据库中时,我没有在文章中获得"平台"锁定"con".Oracle可在Windows,Linux和AIX(以及其他)上使用.这比ASP/SQL Server的锁定要少得多.
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服务和对象关系映射层).
在我的项目中,我们使用Oracle APEX来获取系统的内部视图.它非常适用于此目的.
无需编程. PL/SQL
甚至SQL
是可选的.因此,我们的DBA和操作员可以根据自己的喜好塑造视图.
在缺点方面,如果您需要一个未编程到系统中的功能,则很难添加它.例如,我们想要对输出进行颜色编码,但却无法做到这一点.
我不希望在APEX上建立面向客户的网站.
关于可扩展性问题,APEX的一个好处是它建立在Oracle之上.专注于编写好的SQL并正确设计表,事情应该扩展得很好.我更关心的是让足够多的用户可扩展性成为问题所在.
非常喜欢从上到下阅读线索,因为它感觉像是一场激烈的辩论.为了提醒线程的开始,它开始称为"我相信我们正在转向Oracle Apex进行未来的开发......"作为.NET程序员的杰克担心他的管理层决定并想到为Oracle Apex寻找反事实最终在公共场合洗掉了所有网页框架的脏衣服.尽管受害者是Oracle Apex,但如果辩论是在.net和j2ee大师之间,那么.net或j2ee也会发生同样的情况.我的观点是所有框架都有各自的优缺点.这就是为什么我们实际上有这么多.对生活中更重要的事情(性,食物或水)进行辩论是浪费时间吗?当然,我们会在需要时选择最合适的项目.
Oracle APEX套件适用于拥有大量Oracle数据库且您真正拥有Pl/SQL爱好者的环境.真的可以非常轻松地构建丰富,复杂的Web 2.0 数据中心应用程序(Apex 4.0),但是调试和版本控制仍然是一团糟,您还必须坚持使用Oracle数据库(是的,您可以使用变通方法但不强大).