معماري Oracle APEX (قسمت اول)
اوراكل اي پكس شامل متاديتايي مي باشد كه تمام مشخصات اپليكيشن ها، درون آن ذخيره مي شود كه به اصلاح موتور اوراكل اي پكس (Oracle Apex engine) مي نامند و كار آن ترجمه و اجرا و پردازش صفحه ها مي باشد كه تمام اين اعمال درون ديتابيس انجام مي پذيرد و چيزي غير از ديتاي درون جداول و تعداد زيادي PL/SQL نيست. هسته Oracle Application Express متشكل از تقريبا 425 جدول و 230 Packages PL/SQL كه محتوي 425000 خط كد مي باشد.

شماي كلي عملكرد PL/SQL Web Toolkit
ابتدا درخواست از سمت كلاينت بوسيله مرورگر (Browser) به لايه (Mid-tier(Web Listener فرستاده مي شود و سپس پس از اتصال با ديتابيس (Database-tier) اطلاعات مورد نظر واكشي شده و دوباره به سمت Web Listener برگشت داده مي شود در اين مرحله فايل هاي مورد نظر از قسمت File System استخراج شده و بصورت خروجي Html بر روي مرورگر كاربر به نمايش در مي آيد. بطور كلي دسترسي به موتور اوراكل اي پكس توسط يك مرورگر (web browser) بواسطه يك وب سرور مي باشد. اپليكيشن ها در زمان واقعي از متاديتاي ذخيره شده در جداول ديتابيس استفاده كرده و اجرا مي شوند.

نحوه اجراي موتور اوراكل اي پكس
- مديريت وضعيت Session
- سرويس احزار هويت
- سرويس مجوزدهي
- كنترل چرخه جريان صفحه ها
- اعتبار صحت پروسه ها
- ترجمه و اجرا و پردازش صفحه ها
طراحي غيرهمگام (asynchronous) مديريت وضعيت Session اين امكان را بوجود مي آورد كه كمترين مقدار استفاده از CPU و مصرف منابع را داشته باشد. در مرورگر(Browser) يك درخواست توسط URL فرستاده ودر PL/SQL مناسب اوراكل اي پكس كه صدا زده شده ترجمه مي شود و بعد ديتابيس PL/SQL را پردازش مي كند حال جواب آن براي مرورگر بصورت HTML برگشت داده مي شود. اين چرخه در هربار كه يك درخواست فرستاده يا اينكه يك صفحه ارسال شود، دوباره تكرار مي شود. شرايط/ وضعيت Session در ديتابيس مديريت مي شود و براي يك اتصال (كانكشن) ديتابيس اختصاص داده شده، استفاده نمي شود. براي مشاهده هر صفحه نيازمند يك session ديتابيسي جديد مي باشد بنابراين منابع ديتابيس وقتي مورد استفاده قرار مي گيرند كه موتور اوراكل اي پكس يك صفحه را پردازش يا اجرا مي كند.

Web Listener
Oracle Application Express يك معماري ساده جايي كه صفحه ها ي دايناميك با استفاده از متاديتاي ذخيره شده در ديتابيس توليد مي شود بكار برده است. هيچ كدي توليد يا اينكه هيچ فايلي كامپايل نمي شود.فقط وقتي بصورت كامل نصب شود كاربران نهايي (End Users) و توسعه دهندگان مي توانند از طريق URL(Uniform Resource Locator) دسترسي به اوراكل اي پكس داشته باشند. كاربران تنها به يك مرورگر (Web Browser) و URL نياز دارند نه به هيچ گونه ابزار اضافي كه بخواهد بر روي كلاينت ها نصب شود.
Web Listener در واقع توابعي هستند شبيه كارگزار ارتباطات بين وب سرور و آبجكت هاي اوراكل اي پكس( بوسيله درخواستي كه از سمت مرورگر آمده، پروسيجرهاي ذخيره شده در ديتابيس را صدا مي زند)
شما مي توانيد از سه نوع انتخاب Web Listener زير يكي را انتخاب كنيد
Oracle REST Data Services(در گذشته به نام APEX Listener) :ماهيت ORDS بر پايه جاوا مي باشد و مي توان آن را بر روي هر وب سرور سازگار با J2ee نصب كنيم و مي تواند يك گزينه مورد نظر براي استفاده از اوراكل اي پكس باشد و آن يك ابزار رايگان با پشتيباني كامل بر خلاف Oracle WebLogic Server, Oracle Glassfish Server و Apache Tomcat مي باشد. ORDS قسمتي از معماري بكاربرده شده در عملكرد سرويس ابري (Cloud) ديتابيس اوراكل است.
نكته: براي استفاده از Oracle WebLogic Server, Oracle Glassfish Enterprise edition بايد مجوز استفاده (لايسنس) داشته و هزينه پرداخت كنيد در صورتيكه نسخه Oracle Glassfish Community edition بدون هزينه مي باشد.

Embedded PL/SQL Gateway : كه آن را (EPG) هم مي نامند در پروتكل سرور Oracle XML DB درون ديتابيس اوراكل اجرا شده و شامل ويژگي هاي هسته mod_plsql مي باشد و به اين نوع معماري Simple two tier گفته مي شود.
نكته: در صورتيكه كه شما لايسنس ديتابيس اوراكل را داشته باشيد شما نيز مجوز استفاده از آن را داريد.

Oracle HTTP Server-Apache : با پلاگين mod_plsql مي تواند بر روي همان ماشيني كه ديتابيس سرور نصب شده ايجاد گردد يا اينكه بصورت جداگانه در يك سرور فيزيكي بصورت جداگانه نصب شود.
نكته: اگر شما بر روي همان ماشيني كه ديتابيس اوراكل نصب شده بخواهيد Oracle HTTP Server را نصب كنيد در نتيجه شامل يكسري محدوديت هاي لايسنس كه در واقع مربوط به لايسنس ديتابيس اوراكل مي شده را در برمي گيرد. اگر چه خود Oracle HTTP Server نيازمند لايسنس خواهد بود.
هشدار: از ورژن Oracle HTTP Server 12c-12.1.3 به بعد mod_plsql كنار گذاشته خواهد شد و مورد استفاده قرار نمي گيرد. پيشنهاد مي شود كه به جاي آن از ORDS استفاده شود.

مرجع:
http://www.oracle.com/technetwork/developer-tools/apex
اولين وبلاگ به زبان فارسي كه درليست بلاگ هاي Application Express Community -ODTUG APEX قرار گرفت