الاختلافات بين NHibernate وCastle وLinq - إلى من يستهدفون؟

StackOverflow https://stackoverflow.com/questions/82632

  •  01-07-2019
  •  | 
  •  

سؤال

تقول هذه الإجابة أن Linq يستهدف مجموعة مختلفة قليلاً من المطورين عن NHibernate وCastle وما إلى ذلك.

نظرًا لكونك جديدًا إلى حد ما على لغة C#، فلا تهتم بكل عناصر قاعدة البيانات المحيطة بها:

  • هل هناك أغلفة SQL رئيسية أخرى، بسبب عدم وجود مصطلح أفضل، من NHibernate، Castle، Linq؟
  • ما هو الفرق بينهم؟
  • ما هو نوع المطورين أو التطوير الذي يستهدفونه؟

-آدم

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

المحلول

عندما تقول Castle أفترض أنك تقصد Castle Active Record؟

الفرق هو أن NHibernate عبارة عن OR/M ويستهدف المطورين الذين يرغبون في التركيز على المجال بدلاً من قاعدة البيانات.باستخدام linq إلى sql، تكون قاعدة البيانات الخاصة بك موجودة مسبقًا وستكون علاقاتك وبعض البرمجة مدفوعة بكيفية تعريف قاعدة البيانات الخاصة بك.

الآن بين NHibernate وCastle ActiveRecord - إنهما متشابهان من حيث أنك تقود تصميم التطبيق الخاص بك من المجال ولكن مع NHibernate يمكنك توفير تعيين ملفات xml (أو فئات التعيين باستخدام NHibernate بطلاقة) حيث تستخدم في Active Record الاصطلاح على التكوين (باستخدام السمات لتحديد أي أعمدة وإعدادات لا تتلاءم بشكل طبيعي).لا يزال سجل Castle Active يستخدم NHibernate في الخلفية.

إن عملية OR/M واحدة ليست بالضرورة هي "الطريقة الصحيحة الوحيدة" للذهاب.يعتمد ذلك على بيئتك والتطبيق الذي تقوم بتطويره وفريقك.

قد ترغب أيضًا في التحقق من ذلك دون سرعة الصوت.إنه أمر رائع بالنسبة للسجل النشط ولكنه ليس للمشروع الذي تريد التركيز فيه بشكل أساسي على المجال الخاص بك.اعتمادًا على المشروع، عادةً ما أستخدم إما NHibernate (مع Castle Active Record) أو Subsonic

نصائح أخرى

LINQ هي مجرد مجموعة من ميزات C# الجديدة:طرق الامتداد، وتعبيرات لامدا، ومهيئات الكائنات، والأنواع المجهولة، وما إلى ذلك.

من ناحية أخرى، يعد "LINQ to SQL" شيئًا يمكنك من خلاله مقارنة أغلفة SQL الأخرى.

في الواقع نحن نستخدم كلاً من Linq وNHibernate معًا (مع Fluent).إذا كان لديك القليل من الصبر مع منحنى التعلم، فسوف تقع في الحب بسرعة.

NHibernate وLinq To Sql عبارة عن مصممي خرائط للكائنات/العلاقات مصممين لتسهيل التعامل مع عدم تطابق المعاوقة الموجود بين الكائنات ونظام RDBMS.إذا كنت ترغب في تحقيق تطبيق جاهل ومستمر وقابل للاختبار، فإن NHibernate هو الطريق المناسب.أوصي دائمًا بـ NHibernate عبر Linq To Sql.تهدف كلتا الأداتين إلى إزالة التعامل مع الوصول إلى البيانات.كم مرة تحتاج حقًا إلى كتابة رمز الوصول إلى البيانات؟

Castle عبارة عن إطار عمل للتطبيق وحاوية عكس التحكم ولا توفر الوصول إلى البيانات.إنه يوفر تسهيلات لاستخدام NHibernate، مما يقلل الاحتكاك، كما أنه يوفر أيضًا تنفيذًا لنمط Actuve Record باستخدام NHibernate.

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