web-dev-qa-db-ja.com

WebアプリケーションにOracle Application Expressを使用する理由

私たちは将来の開発のためにOracle Apexに移行していると思います。ウィキペディアでOracle Apexについて読んだことがありますが、賛否両論です。詐欺師はプロを上回るように思えますが、多分私は間違っています。 Oracle Apexは、プログラミングの知識がほとんどまたはまったくないDBA向けであり、プログラマーなしでMS AccessのようにすばやくWebアプリをセットアップできるという感覚が得られます。

Oracle Apexの実務経験がある場合、考えを共有できますか?ウィキペディアのエントリーから、PL/SQLだけでプログラミング言語を知っている必要はないように思えますか?

編集:Oracle Apexはスケーラブルですか? Facebookのサイズのようなトラフィックを処理できますか?

編集:Oracle Apex 3.2で2年近く作業した後。私はそれが嫌いだと安全に言うことができます、そして、誰もがブラウザー、pl/sqlでウェブアプリ/ページを作成したい理由がわからず、バージョン管理を行う方法もありません。

感謝。

ジャック

46
Jack

私の経験はAPEX 2.x-3.0であることに注意してください。

12か月間、いくつかの内部アプリにApexを使用しましたが、最終的にはASP.NET用にダンプしました。

一部のOracleエバンジェリストは、ASP.NET/J2EEなどのより主流のフレームワークと同等の高度に動的なコンテンツを作成できると主張しています。技術的にはこれは真実ですが、技術的には、1人のカヌーで大西洋を横断できることも事実です。中程度の複雑さのAPEXプロジェクトに身を投じたいと思うなら、 シンプルなディスカッションフォーラム のAPEXサンプルをご覧になることをお勧めします。 ASP.NET MVCディスカッションフォーラムサンプルまたはRoR実装と比較してください。

そうは言っても:

良い

  • 基本的なCRUDデータ入力、シンプルなレポート、およびデータの取り込みを行うことで、非常に簡単に立派なWebアプリを生成できます。企業の膨大なExcel/Accessデータベースを中央のDB/Web環境に統合するタスクを担当しているIT担当者であれば、APEXをご覧ください。このタスクに非常に適しています。スコープが中程度の複雑さまで拡大すると予想される場合は、より柔軟なフレームワークに直接進みます。

  • DBA/PLSQLの第一人者でありながら、従来のWeb開発の経験がない場合は、HTML/CSS/JavaScriptを使いたくない場合は、Webアプリで既存のビジネスロジックを公開する準備ができています。

  • APEXサポートフォーラムには膨大な情報があり、APEX開発者のスタッフが豊富です。

悪い

Apexでの経験は、アプリがCRUDデータ入力を超えて移動し、より動的でイベント駆動型の動作が必要になったときに下り坂になり始めました。

  • WebベースのGUIはクールではありません。デバッグは苦痛です。

  • バージョン管理?バージョン管理が必要なのは誰ですか?

  • フレームワークの限られた範囲外で何かをする必要がある場合(必然的に)、PL/SQLを使用する必要があります。データベースに対してビジネスロジックを書くことは問題ありませんが、PL/SQLプロシージャからHTMLを生成することは2007年には不快なほど古く感じられました。

  • ページとリダイレクトロジックを隠すことができる巧妙な場所が多数あることを考えると、プログラムフローは視覚化するのが難しく、モジュール式で分離可能で再利用可能なコードを自然に助長しません。 OOP開発者は感心しません。APEXを使用して、適切に構造化された保守可能なアプリケーションを作成することは可能ですが、本来よりも困難です。これはMVCから離れた世界です。

  • 使用したバージョンのフレームワークのバグの許容できない数。これが最近のバージョンで改善されることを願っていますが、APEXプラットフォーム自体にIDE)を統合するというパラダイムにより、最も暗い、魂を破壊する私の人生のセッションのデバッグ。例として、ユーザーがセッションデータを失うことになる断続的なバグを再現しようとしていました。セッション情報ポップアップを使用して、時々セッションデータ運がよければコードでエラーを見つけるために2日間を費やしました。ほぼ間違いなく、デバッグウィンドウでエラーセッションデータを再現できることに純粋に気付きました。アプリケーション自体はエラー状態になりません。何が起こっているのかを認識したとき、私の心は沈みました。オラクルは、セッション情報ウィンドウに断続的にデータを表示させるAPEXのバグを発見したことを確認しました前のセッションです。セッション関連のバグをバグのあるセッションデバッグウィンドウでデバッグするのに2日間無駄になりました。私が構築した元アプリ。

  • PL/SQLはWeb開発の次の大物ではありませんし、決してありません。しばらくAPEXで作業した後、私は自分を作るつもりはないことに気付きましたより良いウェブ開発者。 APEXの習得は、実際にはPL/SQLについてです。 Oracleテクノロジーにキャリアを集中させる場合は、APEXが主流のWebテクノロジーの方向に非常に密接に関係しているため、APEXから他のWebフレームワークに取り入れることができる移植可能な一連のスキルは最小限であることに注意してください。

単純なWebベースのデータ入力とレポートを提供するためにAPEXを検討している場合は、一見の価値があります。動的なWebコンテンツとリッチなUIインタラクションのための.NET/Java/PHPの代替を探している場合は、他の場所を調べることをお勧めします。

52
Alex

私は非常に興味を持ってこのページを読みました。私たちの開発チームは、約2年間Apexを使用していますが、私たちの経験をまとめたいと思います。

基本的なCRUDアプリケーションを構築するには、Apexは本当に優れています。実際、自分で試してみることをお勧めします。私たちはそれを設定する最初の小さな困難に直面しましたが、これらは3.2リリースで解決されたようです。

良い

  • シンプルなアプリケーションに最適です。アプリの複雑さが増す場合は、代替ソリューションを検討してください。
  • テンプレートが組み込まれているため、アプリは非常にプロフェッショナルに見えます(これについては議論する人もいます)。
  • たくさんの熱心な人があなたを助けてくれる良いサポートフォーラムとコミュニティ。
  • 優れた組み込みコントロール。グラフとレポートが大好きです(ただし、以下を参照してください)。

悪い

  • デバッガーはひどいです。 Visual Studio(およびMicrosoft Accessの古いバージョン)を使用している場合は、デバッガーに夢中になります。ブレークポイントはありません。デバッグメッセージは大きなリストで画面に表示され、デバッグメッセージを画面に手動で出力する必要があります。恐ろしい。サポートに多くの時間が費やされた原因。

  • アプリケーションが複雑になるか、豊富な機能が必要になるとすぐに、JavascriptとHTML/CSSハックを使用する必要があります。これにより、デバッグとサポートがさらに複雑になります(ただし、FirebugやVisual Studioなどのツールを使用してこれを支援できます)。

  • 説明のつかないセッション状態のバグや、説明なしでアプリケーションからスタイルシートが「デタッチ」されるようになりました-いくつかの問題を挙げます。

  • なじみのないアプリをサポートすることは、優れたデバッガーなしではページロジックフローを追跡するのが難しいため、難しい場合があります。そして、私は「よく-アプリはより良くコード化されるべきだ」というストックレスポンスを買いません。なぜなら、現実の世界ではそうではありません-特に請負業者を使用している場合はそうです。

  • レポートは見た目は良いですが、印刷したりPDFにエクスポートできない場合はあまり良くありません。もちろん、レポートサーバーにシェルアウトすることもできますが、最終的には別のソリューションを使用しました。

全体

シンプルなCRUDアプリには必ずApexを使用すると思います。軽度の複雑さ以上のものは、.NetまたはJavaに行きます。 ApexのWiki記事は非常に歪んでいるので、私は通知しません。記事から「デバッグが難しい」(私の意見では最大の失敗)がどのように消去されたかに注意してください。

同様に非常に警戒すべきことは、Accessデータベースを直接Apexにすばやく変換できるというばかげた主張です。はい、Access DBが非常に単純化されていれば機能します。適度に複雑なものはすべて、それを忘れてしまいました。

ウェブ向けアプリには絶対に使用せず、内部のみに使用します。たとえば.Netで当たり前のことをするのが難しいということは、単純に多すぎます。 AskTomなどのサイトが存在することは知っていますが、これらは厳密には複雑ではありません。次のFacebookが表示されますか?私はそうは思わない-これを読んでいる誰かがそれに亀裂を持っていると確信しているけれども。

Apexは以前のコメントで要約されています-マネージャーはデモを見て、すぐに賛同し、開発時間を大幅に短縮する特効薬を見つけたと確信しました。マネージャーから電話があり、Apexで1週間に40個のテーブルを作成できるdbアプリが必要であるという話があります。現実は多少異なります。はい、いくつかのことはより速く、かなり速くなりますが、他の分野-デバッグ、サポート、カスタマイズで時間を失うことになります。

もちろん、自分で決めるのが一番です。それをインストールして、試してみてください、あなたはそれを好むかもしれません。ただし、現実的なアプリケーションを適切に検討するまで、開発時間の短縮という主張に惑わされないでください。

22
Ken Wood

5000モジュールのOracle FormsアプリケーションをAPEXに移行するhugeプロジェクトに関与しています。これはAPEXの極端な使用方法ですが、うまく機能しています。 APEXが適切であるという完全な神話ですのみ DBA、インターン、またはエンドユーザーによって構築された小さな内部アプリ:それは確かにそれらにも適しています(そして他のほとんどのツールよりも適しています)が、また、非常に洗練されたアプリケーションの構築にも使用できます。

すぐに使用できるデフォルトのAPEXアプリケーションではなく、洗練されたアプリケーションを構築するには、Javascriptスキルを持つチームのメンバーとCSSスキルを持つ誰かが必要です。ただし、ほとんどの開発者は最初にPL/SQLを必要とするだけです。

スケーラブルですか?はい:他のほとんどのソリューションよりもおそらく拡張性があります! APEXはデータベースサーバーにほとんどオーバーヘッドを追加せず、最小限のアプリケーションサーバーのみが必要です。 「Facebookサイズ」?確かなことはわかりませんが、「Facebookサイズ」のデータとトランザクションボリュームを処理するのに十分な大きさで強力なマシンにOracleデータベースがあると仮定すると、なぜそうなのかわかりません。他のOracleプロジェクトと同様に、スケーラビリティは、ツールではなく、データベースの設計が不適切であり、SQLの記述が不十分であることが主な原因です。ただし、「Facebookサイズ」のシステムを構築している人はあまりいません。

17
Tony Andrews

APEXは、データベースとPL/SQLを使用してWebページを生成するフレームワークです。ブラウザへの出力に必要なものを把握できる場合は、APEXで作成できます。フレームワークの一部が阻害されている場合は、PL/SQLプロシージャを記述してWebサーバーに直接公開できますが、APEXシステムが管理するセキュリティ、ロギング、セッション状態などを利用できます。

PL/SQL、SQL、HTML、JavaScriptおよびCSSを知っている必要があります。インターフェースは大きなデータ入力アプリケーションのように見えますが、入力するデータはほとんどこれらの言語のコードスニペットになります。

データベースと同様にスケーリングします。通常、ApacheをWebサーバーとして使用しますが、静的ファイルを提供し、APEXスキーマのPL/SQLコードによってWebページが作成されるデータベースにリクエストを返すためにのみ使用されます。 AJAXを使用して、パイプを上下するトラフィックのサイズを最小化できます。特定のアイテム、リスト、ページ領域、ページなどのキャッシュを設定できます。

ほとんどのことはフレームワークで実行するのが非常に簡単なので、フレームワーク内で実行するのがもう少し複雑になることが当然あります。上記のカラーコーディングの例は、CSSを使用する場合や、必要な出力を生成するためにprintステートメントを使用する必要がある場合があります。問題は、フレームワークがどのように人生を楽にするかを学ぶことです。そして、限界に達したら、より直接的な方法に簡単に頼ることができます。

VB.Netからは、ステップバイステップのデバッグとドラッグアンドドロップができなくなります。ページのライフサイクルの一部がバインドを行い、ページの別の部分のオブジェクトにバインドした値をリセットするという事実を見逃すことはありません。

幸運を。

グレッグ

12
Greg

私はDBAであり、APEXまたは最近他の何か(管理目的の一部のbashスクリプトおよびカスタムSQLスクリプトを除く)でプログラムする必要はありませんでした。なぜなら、私の仕事はアプリケーションの開発からはほど遠いからです(開発者のお尻の痛みを除く) 。もちろん、私の経歴は開発者ですが、APEXはOracleベースのデータ中心の厳密なプログラムの将来であると確信しています。

すべてのアプリケーションがデータ中心であるという他の多くのDBAに同意しないため、ここでのキーワードはデータ中心です(ODBCはOracleデータベース接続)。もちろん、すべてのアプリケーションにはデータが含まれていますが、すべてのアプリケーションはデータ中心ですか?APEXが画像処理やモバイルゲームのようなアプリに使用されることは疑わしいと思いますが、RIAとWeb 2.0の誇大宣伝にもかかわらず事実、私たちの周りのビジネスのほとんどは、それらの単純な古いデータ中心のアプリケーションに飢えています。Oracleは最高のデータベースであり、OracleとAPEXがFacebookのスケーラビリティよりもはるかに多くのことを処理できることを保証できます。基盤となるインフラストラクチャのFacebookメンバーとして。

ちなみに、私はOracleのAPEXテーマのデザインも嫌いです(プロではないUI、銀行や航空会社のメインUIとして想像してください)、機能が限られています(将来的には変化しそうですが)、さらに多くの問題(プロフェッショナルPDF BIパブリッシャーにエンタープライズデータベースライセンスの金額を支払わずにレポートしますか??)あなたは私の友人、私は子供たちが私のデータベースに触れることを決して許さないだろう:)

ご存じのように、OracleにはPL/SQLと呼ばれるgemがあり、長年にわたって他のどの言語よりもはるかに直感的な方法でデータを処理するために完成されました。 Forms/Reportsのゆっくりとした死とともにgemは萎縮しており、データベースストアドプロシージャについて厳密に学んでいる新卒者はいません(Javaと.Net開発者間の激しい戦争をご覧ください)そして、あなたは中括弧{}に触れると異端となることに気づきます。何千人もの優れたPL/SQL開発者にとって悲しいかなAPEXは、生産性を維持し、卓越したデータ中心のアプリケーションを開発できるAPEX PL/SQLは間違いなく次のCOBOLになります。これが、PL/SQLコミュニティがOracleを駆動し、現在見ているものよりもはるかに強力なグレードAプラットフォームにAPEXを変換する理由です。ちなみに、少なくともあなたが開発者であるときに異なる技術を試すことは決して悪い考えではありません。少なくともあなたはそれが反対側で必ずしも環境に優しいわけではない理由を知っています。

9
Anis

PL/SQLをプログラミング言語と見なさない理由はわかりません...

APEXは、データの上に軽量UIが必要な内部アプリケーションに最適です。コードを作成することなく、かなり簡単に構築できます。

また、APEXは、小規模な顧客向けアプリケーションの開発に非常に適していると思います。 APEXを使用して何百人もの開発者が作業する巨大なアプリケーションを構築したくありません。しかし、3人または4人の開発者が小規模なサイトを構築している場合、APEXはJava/PHP/ASP.Net /同等のスキルを備えた開発者と同じくらい優れている可能性があります。たとえば、すべての開発者が多くのASP.Netの専門知識を持っている場合、彼らはAPEXアプリを書くための学習曲線を持っているでしょう。ただし、多くのPL/SQL開発者がASP.Netサイトを構築する方法を学ぼうとした場合、少なくとも同じレベルの難易度があります。

8
Justin Cave

Apexにビジネスロジックを入れないでください。プレゼンテーションのみに使用します。

アプリにコードを配置すると、コードを維持できなくなり、クリックするたびにRSIが取得されます。私は常にラッパーレイヤーを作成し、Oracleの世界ではTom Kytesのアドバイスに従います。ビジネスロジックをできるだけデータに近づけます。これはまた、PL/SQLモジュールを他のシステムなどから呼び出すことができることを意味します-そして何よりも-アプリケーションの本当の意味は、お気に入りのテキストエディター/ IDEで操作できるストレートテキストファイルになります。

  • 各画面で取得するすべてのデータを含むビューを作成します。
  • すべてのCRUD操作に対して単一のラッパーパッケージを作成します。 (つまり、作成、読み取り、更新、および削除です)

要するに:

アプリのロジックをAPEXに入れないでください。

それが私のアドバイスです。 。 。 。

7
pj.

OracleのMetalinkサポートサイトはApexで記述されているため、確実に拡張できます。ただし、現在は新しいFlashベースのサポートサイトに移行しています。 Apexの制限に応じて構築するのではなく、別の会社の買収を通じてそのプラットフォームを取得したことを理解しています。

Webアプリで「超セクシー」にしたい場合は、おそらくFlash/Silverlight/Airを使用する必要があります。その下で、Apexを含むHTMLベースのサイトは、Javascriptできれいにできます。 JQueryライブラリはApexの次のメインバージョン(4.0)に含まれますが、これ(または他のライブラリ)を今すぐ含めることができます。

ウィキペディアの記事で言及されているキャッシュの問題は解決されていますが、ほとんどのインストールでは、画像やスクリプトをデータベースから提供するのではなく、従来のディレクトリ構造に配置します。

Oracleデータベースにロックされている間は、記事で「プラットフォーム」ロックの「con」は表示されません。 Oracleは、Windows、Linux、AIX(その他)で利用できます。これは、ASP/SQL Server。

7
Gary Myers

Apexはプログラマー以外の人にのみ適していて、DBAは残念な誤解です。これを使用して、基幹業務、ミッションクリティカル、顧客向けの複数のWebアプリケーションを構築しました。

GUIは、ユーザーエクスペリエンスを向上させるために、Apexページテンプレート(HTML)、CSS、および少しのJavaScriptによって処理されます。すべてのビジネスロジックはPL/SQLパッケージに配置されます。これは、アプリケーションを保守しやすくし、他のApexアプリケーションやC#WinForms、Delphiなどのクライアントツールからビジネスロジックを再利用するための鍵です。Javaアプリなど。

パフォーマンスに関しては、Apexエンジンはオーバーヘッドをほとんど追加せず、アプリケーションの応答時間とスケーラビリティはSQLクエリ(およびデータモデル)の品質に大きく依存します。このように考えてください。Apexを使用する場合、ユーザーとデータベースの間の唯一のものはPL/SQLの薄層です。これは、GUI間の17層の複雑さ(通常、多くのWebサービスとオブジェクトリレーショナルマッピングレイヤーを含む)を持つ典型的な.NETまたはJavaアプリケーションよりも高速でなければならないというのは常識ですおよびデータベース。

6
ObiWanKenobi

私のプロジェクトでは、システムの内部ビューにOracle APEXを使用しています。その目的には非常にうまく機能します。

プログラミングは必要ありません。 PL/SQLおよびSQLはオプションです。その結果、当社のDBAとオペレーターは、自分の好みに合わせてビューを形成できます。

欠点として、システムにプログラムされていない必要な機能がある場合、それを追加するのは非常に困難です。たとえば、出力を色分けしたかったのですが、できませんでした。

APEX上に顧客向けのサイトを構築したくありません。


スケーラビリティの問題について、APEXの良い点の1つは、Oracleで構築されていることです。適切なSQLの記述とテーブルの適切な設計に焦点を当てると、物事はうまくスケールするはずです。スケーラビリティが問題になるのに十分なユーザーを獲得することについて、私はもっと心配します。

5
Jon Ericson

それは熱い議論のように感じたので、上から下までスレッドを非常に読んで楽しんだ。スレッドの開始を思い出させるために、「将来の開発のためにOracle Apexに移行していると考えています...」として始まりました。NETプログラマーであるジャックは、彼の管理の決定とOracle Apex最終的に(すべてのWebフレームワークの)汚れたリネンを公に洗うことになりました。犠牲者がOracle Apexであったという事実にもかかわらず、議論が.netとj2eeの達人の間で行われた場合、.netまたはj2eeのどちらでも同じことが起こり得ます。私のポイントは、すべてのフレームワークに長所と短所があるということです。それが実際に私たちが非常に多く持っている理由です。生きるためにもっと重要なもの(性別、食べ物、水など)について議論するのは時間の無駄です。当然、必要なときに最も適切なアイテムを選択します。

  • 多数のOracle Databaseがあり、Pl/SQL愛好家が本当にいる環境向けのOracle APEXスイート。リッチで複雑なWeb 2.0を実際に構築できますData Centricアプリケーションは非常に簡単(Apex 4.0)ですが、デバッグとバージョン管理は依然として混乱であり、Oracleデータベースに固執する必要があります回避策ですが、堅牢ではありません)。
5
Sas

外部WebサイトをAPEXで見たい場合は、 Oracle Tools Users Group サイト、または Ask Tom をご覧になることをお勧めします。どちらも大規模で頻繁に使用されるサイトで、多くのカスタマイズがあります。

ウィキペディアの記事からの印象は正しいです。必要なプログラミング知識はPL/SQLのみです。サイトの大部分が単純なレポートである場合は、SQLクエリを記述する必要さえなく、ウィザードインターフェイスがクエリと出力を作成します。クールなクライアント側の作業が必要な場合は、CSSとJavascriptを知っている必要があります。 PL/SQLは、より複雑なデータ検証専用です。

4

同意しません。開発スキルやDBAが少ない開発者に適しているだけではありません。

実際に、独自のCSSテンプレート、多くの動的アクションと対話(jQueryといくつかのフレームワークを使用)、微調整されたセキュリティ、独自の頂点プラグイン、複雑なPL/SQLプロセスを使用して、高度にカスタマイズされたアプリを作成します。

もちろん、apex> 4.0を使用しています。

そのため、必要に応じて、複雑なアプリ(ページごとに最大100の異なるプロセス/検証および動的アクションがあります)を構築できます。また、javascriptとPL/SQL(OOP)またはJavaストアドプロシージャ+ SQLの十分な知識を使用して、最大500行のコードの最適化されたクエリを定義するには、強力なプログラミングスキルが必要です。再帰SQLといくつかの面白い機能。

3
LSdev