إطار عمل كائنات المؤسسة

تم تقديم إطار عمل كائنات المؤسسة ( EOF ) من قِبل شركة NeXT في عام 1994 كمنتج رائد لربط الكائنات بقواعد البيانات العلائقية لمنصتي تطوير NeXTSTEP و OpenStep . يُبسّط EOF عملية التفاعل مع قواعد البيانات العلائقية من خلال ربط صفوف قاعدة البيانات بكائنات Java أو Objective-C . وهذا يُعفي المطورين إلى حد كبير من كتابة أكواد SQL منخفضة المستوى . [ 1 ]

حققت منصة EOF نجاحًا محدودًا في منتصف التسعينيات بين المؤسسات المالية التي انجذبت إلى مزايا تطوير التطبيقات السريع التي توفرها منصة NeXT الموجهة للكائنات. ومنذ اندماج شركة Apple مع NeXT عام ١٩٩٦، تطورت EOF لتصبح جزءًا لا يتجزأ من WebObjects ، وهو خادم تطبيقات من NeXT أيضًا. وقد عادت العديد من المفاهيم الأساسية لـ EOF للظهور كجزء من Core Data ، الذي يُجرّد تنسيقات البيانات الأساسية بشكل أكبر ليسمح لها بالعمل على قواعد بيانات غير SQL.

تاريخ

في أوائل التسعينيات، أدركت شركة NeXT Computer أن الاتصال بقواعد البيانات ضروري لمعظم الشركات، ولكنه في الوقت نفسه معقد. فلكل مصدر بيانات لغة وصول بيانات (أو واجهة برمجة تطبيقات ) مختلفة، مما يزيد من تكاليف تعلم واستخدام منتجات كل مورد. أراد مهندسو NeXT تطبيق مزايا البرمجة كائنية التوجه ، من خلال جعل الكائنات "تتواصل" مع قواعد البيانات العلائقية. ولأن التقنيتين مختلفتان تمامًا، كان الحل هو إنشاء طبقة تجريدية، تعزل المطورين عن كتابة التعليمات البرمجية الإجرائية منخفضة المستوى ( SQL ) الخاصة بكل مصدر بيانات.

بدأت المحاولة الأولى عام ١٩٩٢ مع إصدار Database Kit (DBKit)، الذي وفّر إطار عمل كائني التوجه لأي قاعدة بيانات. لسوء الحظ، لم يكن برنامج NEXTSTEP قويًا بما يكفي في ذلك الوقت، كما أن DBKit كان يعاني من عيوب تصميمية خطيرة.

جاءت المحاولة الثانية لشركة NeXT في عام 1994 مع الإصدار الأول من إطار عمل كائنات المؤسسة (EOF)، وهو إعادة كتابة كاملة تميزت بمرونة أكبر وتوافق أوسع مع OpenStep . كان EOF 1.0 أول منتج تُصدره NeXT باستخدام Foundation Kit، وقدّم ميزة الكائنات ذاتية الإصدار لمجتمع المطورين. في ذلك الوقت، كان فريق التطوير يتألف من أربعة أشخاص فقط: جاك غرينفيلد، وريتش ويليامسون، ولينوس أبسون، ودان ويلهايت. أما EOF 2.0، الذي صدر في أواخر عام 1995، فقد حسّن البنية بشكل أكبر، مُضيفًا سياق التحرير. في ذلك الوقت، كان فريق التطوير يتألف من دان ويلهايت، وكريغ فيديريغي ، وإريك نويو، وتشارلي كلايسنر.

حققت لغة EOF شعبية متواضعة في أوساط مبرمجي الأنظمة المالية في منتصف التسعينيات، لكنها بلغت ذروتها مع ظهور شبكة الإنترنت العالمية ومفهوم تطبيقات الويب . كان من الواضح أن EOF قادرة على مساعدة الشركات في ربط قواعد بياناتها القديمة بالويب دون الحاجة إلى إعادة كتابة البيانات. ومع إضافة أطر عمل لإدارة الحالة، وموازنة الأحمال، وإنشاء صفحات HTML ديناميكية ، تمكنت شركة NeXT من إطلاق أول خادم تطبيقات ويب كائني التوجه، WebObjects ، في عام 1996، معتمدًا على EOF في جوهره.

في عام 2000، تخلت شركة آبل (التي اندمجت مع شركة نيكست) رسميًا عن EOF كمنتج مستقل، ما يعني أن المطورين لن يتمكنوا من استخدامه لإنشاء تطبيقات سطح المكتب لنظام التشغيل ماك أو إس إكس القادم . مع ذلك، سيظل جزءًا لا يتجزأ من إصدار جديد رئيسي من WebObjects. تميز WebObjects 5، الذي صدر عام 2001، بنقل أطره البرمجية من لغة البرمجة الأصلية Objective-C إلى لغة جافا . يرى منتقدو هذا التغيير أن معظم قوة EOF كانت نتيجة ثانوية لجذورها في Objective-C، وأن EOF فقدت جمالها وبساطتها السابقة. تساعد أدوات الطرف الثالث، مثل EOGenerator ، في سد أوجه القصور التي أدخلتها جافا (وذلك أساسًا بسبب فقدان الفئات ).

تمت إعادة تقديم قاعدة التعليمات البرمجية Objective-C مع بعض التعديلات لمطوري تطبيقات سطح المكتب باسم Core Data ، كجزء من واجهة برمجة تطبيقات Cocoa من Apple ، مع إصدار نظام التشغيل Mac OS X Tiger في أبريل 2005.

كيف يعمل نظام EOF

توفر Enterprise Objects أدوات وأطر عمل لربط الكائنات بالعلاقات. وتتخصص هذه التقنية في توفير آليات لاسترجاع البيانات من مصادر بيانات متنوعة، مثل قواعد البيانات العلائقية عبر أدلة JDBC و JNDI ، وآليات لإعادة البيانات إلى تلك المصادر. صُممت هذه الآليات وفق منهجية تجريدية متعددة الطبقات، تُمكّن المطورين من التفكير في استرجاع البيانات وإعادة ربطها على مستوى أعلى من مستوى مصدر بيانات محدد أو مُورّد مصدر البيانات.

يُعد ملف النموذج (EOModel) الذي تقوم بإنشائه باستخدام أداة مرئية - إما EOModeler أو إضافة EOModeler لـ Xcode - عنصرًا أساسيًا في هذه العملية . وتعمل هذه العملية على النحو التالي:

  • يتم ربط جداول قاعدة البيانات بالفئات.
  • يتم ربط أعمدة قاعدة البيانات بسمات الفئة.
  • يتم ربط صفوف قاعدة البيانات بالكائنات (أو مثيلات الفئات).

يمكنك بناء نماذج بيانات بالاعتماد على مصادر بيانات موجودة، أو يمكنك بناء نماذج بيانات من الصفر، والتي تستخدمها بعد ذلك لإنشاء هياكل بيانات (جداول، أعمدة، روابط) في مصدر بيانات. والنتيجة هي إمكانية تحويل سجلات قاعدة البيانات إلى كائنات جافا.

تكمن ميزة استخدام نماذج البيانات في عزل التطبيقات عن خصائص مصادر البيانات التي تستخدمها. يتيح هذا الفصل بين منطق العمل الخاص بالتطبيق ومنطق قاعدة البيانات للمطورين تغيير قاعدة البيانات التي يستخدمها التطبيق دون الحاجة إلى تغيير التطبيق نفسه.

يوفر EOF مستوى من شفافية قاعدة البيانات لا يُرى في الأدوات الأخرى، ويسمح باستخدام نفس النموذج للوصول إلى قواعد بيانات البائعين المختلفة، بل ويسمح أيضًا بالعلاقات عبر قواعد بيانات البائعين المختلفة دون تغيير التعليمات البرمجية المصدرية.

تكمن قوته في عرض مصادر البيانات الأساسية كرسوم بيانية مُدارة لكائنات دائمة. ببساطة، هذا يعني أنه يُنظم طبقة نموذج التطبيق في مجموعة من كائنات البيانات المُعرّفة في الذاكرة. ثم يتتبع التغييرات التي تطرأ على هذه الكائنات، ويمكنه عكس هذه التغييرات عند الطلب، كما هو الحال عند قيام المستخدم بتنفيذ أمر التراجع. بعد ذلك، عندما يحين وقت حفظ التغييرات في بيانات التطبيق، يقوم بأرشفة الكائنات في مصادر البيانات الأساسية.

استخدام الوراثة

عند تصميم كائنات المؤسسة، يمكن للمطورين الاستفادة من ميزة البرمجة الكائنية المعروفة باسم الوراثة . على سبيل المثال، قد يرث كل من كائن العميل وكائن الموظف خصائص معينة من كائن الشخص الأكثر عمومية، مثل الاسم والعنوان ورقم الهاتف. مع أن هذا النمط من التفكير متأصل في التصميم الكائني، إلا أن قواعد البيانات العلائقية لا تدعم الوراثة بشكل صريح. ولكن باستخدام كائنات المؤسسة، يمكنك بناء نماذج بيانات تعكس التسلسلات الهرمية للكائنات. أي يمكنك تصميم جداول قاعدة البيانات لدعم الوراثة من خلال تصميم كائنات المؤسسة التي ترتبط بجداول متعددة أو بعروض محددة لجدول قاعدة البيانات.

كائنات المؤسسة (EOs)

يُشابه كائن المؤسسة ما يُعرف في البرمجة كائنية التوجه بكائن الأعمال ، وهو فئة تُمثل كائنًا ماديًا أو مفاهيميًا في مجال الأعمال (مثل عميل، طلب، سلعة، إلخ). ما يُميز كائن المؤسسة عن الكائنات الأخرى هو أن بيانات مثيله تُربط بمخزن بيانات. عادةً، يحتوي كائن المؤسسة على أزواج مفتاح-قيمة تُمثل صفًا في قاعدة بيانات علائقية. المفتاح هو اسم العمود، والقيمة هي ما كان موجودًا في ذلك الصف في قاعدة البيانات. لذا، يُمكن القول إن خصائص كائن المؤسسة تبقى حتى بعد انتهاء تشغيل أي تطبيق مُحدد.

وبشكل أدق، فإن كائن المؤسسة هو نسخة من فئة تقوم بتنفيذ واجهة com.webobjects.eocontrol.EOEnterpriseObject.

يحتوي كائن المؤسسة على نموذج مطابق (يُسمى نموذج كائن المؤسسة EOModel) يُحدد العلاقة بين نموذج كائن الفئة ومخطط قاعدة البيانات. مع ذلك، لا يعرف كائن المؤسسة نموذجه بشكل صريح. يُمكّن هذا المستوى من التجريد من تغيير مزودي قواعد البيانات دون التأثير على كود المطور، مما يمنح كائنات المؤسسة درجة عالية من إمكانية إعادة الاستخدام.

نهاية الملف والبيانات الأساسية

على الرغم من أصولهما المشتركة، فقد تباعدت التقنيتان، حيث احتفظت كل تقنية بمجموعة فرعية من ميزات قاعدة التعليمات البرمجية الأصلية Objective-C، مع إضافة بعض الميزات الجديدة.

الميزات المدعومة فقط بواسطة EOF

يدعم EOF لغة SQL المخصصة، وسياقات التحرير المشتركة، وسياقات التحرير المتداخلة، والجلب المسبق وإصدار الأخطاء المجمعة للعلاقات، وهي جميعها ميزات من تطبيق Objective-C الأصلي غير مدعومة في Core Data. كما لا يوفر Core Data ما يعادل EOModelGroup، حيث توفر فئة NSManagedObjectModel طرقًا لدمج النماذج من النماذج الموجودة، ولاسترجاع النماذج المدمجة من الحزم.

الميزات المدعومة فقط بواسطة Core Data

يدعم Core Data الخصائص المُسترجعة؛ والتكوينات المتعددة ضمن نموذج الكائنات المُدارة؛ والمخازن المحلية؛ وتجميع المخازن (حيث يمكن توزيع بيانات كيان معين عبر مخازن متعددة)؛ وتخصيص أسماء الخصائص وتحذيرات التحقق من الصحة وتوطينها؛ واستخدام الشروط للتحقق من صحة الخصائص. هذه الميزات الموجودة في تطبيق Objective-C الأصلي غير مدعومة في تطبيق Java.

  • مقال في مجلة لينكس حول GDL2

مراجع

  1. وارنر، روبرت، وبريفات، مايكل.  برو كور داتا لنظام التشغيل iOS، الطبعة الثانية . هولندا، أبريس، 2011. 2.