سؤال

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

على سبيل المثال:تعيين علاقات الكائنات من Dev Express

في جوهرها، هل يستحق كل هذا العناء؟هل سأوفر "ذلك" الكثير من الوقت والجهد والأخطاء المستقبلية؟

هل كانت مفيدة؟

المحلول

لقد استخدمت SubSonic وEntitySpaces.بمجرد أن تتقنها، أعتقد أنها يمكن أن توفر لك الوقت، ولكن مع زيادة تعقيد تطبيقك وحجم البيانات، قد تتفوق على هذه الأدوات.تبدأ في إضاعة الوقت في محاولة معرفة ما إذا كان شيء مثل مشكلة الأداء مرتبطًا بـ ORM أو بالكود الخاص بك.لذا، للإجابة على سؤالك، أعتقد أن الأمر يعتمد.أميل إلى الاتفاق مع إيريك في هذا الشأن، حيث أن تطبيقات المؤسسات ذات الحجم الكبير ليست مكانًا جيدًا لـ ORMs للأغراض العامة، ولكن في التطبيقات القياسية الأصغر حجمًا من النوع CRUD، قد ترى بعض الوقت الموفر.

نصائح أخرى

لقد وجدت إيباتيس من مجموعة Apache ليكون حلاً ممتازًا لهذه المشكلة.يستخدم فريقي حاليًا iBatis لتعيين جميع مكالماتنا من Java إلى الواجهة الخلفية لـ MySQL.لقد كانت فائدة كبيرة لأنه من السهل إدارة جميع استعلامات وإجراءات SQL الخاصة بنا لأنها موجودة جميعها في ملفات XML، وليس في التعليمات البرمجية الخاصة بنا.يعد فصل SQL عن التعليمات البرمجية الخاصة بك، بغض النظر عن اللغة، بمثابة مساعدة كبيرة.

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

هناك إصدار .NET من iBatis أيضًا.

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

هناك الكثير من الخيارات من ORMs.Linq إلى Sql، nHibernate.بالنسبة لقواعد بيانات الكائنات النقية، يوجد db4o.

يعتمد ذلك على التطبيق، ولكن بالنسبة لتطبيقات المؤسسات ذات الحجم الكبير، فلن أتبع هذا الطريق.أنت بحاجة إلى مزيد من التحكم في بياناتك.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top