سؤال

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

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

  1. قم بإنشائها جميعًا يدويًا
  2. قم بإنشاء قاعدة بيانات وهمية وقم بتوجيه ORM إليها
  3. قم بتوجيه ORM إلى قاعدة البيانات الموجودة ولكن تجاهل استمرارية ORM بدلاً من واجهة برمجة التطبيقات (API).

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

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

المحلول

اعتمادًا على حجم ما تفعله، يعد الخيار 3 خطيرًا لأنك تفترض أن نموذج قاعدة البيانات هو نفس النموذج الذي تعرضه الخدمة الخارجية.لا يختلف الخياران 1 و2 كثيرًا عن بعضهما البعض - في كلتا الحالتين، سيتعين عليك تحديد العناصر والخصائص والسلوكيات التي ستكون عليها - فالأمر يتلخص في ما إذا كنت أكثر راحة في القيام بذلك في الفصول الدراسية أو جداول قاعدة البيانات

الشيء الأساسي هو التأكد من إخفاء مكالمات الخدمة الخارجية خلف نوع من الغلاف.أنا شخصياً سأضع مستودعًا فوق ذلك للتعامل مع الاستعلام عن غلاف الخدمة الخارجية وإرجاع كائنات المجال.

نصائح أخرى

بشكل عام، ORMs غير معروفة بقدرتها على إنشاء فئات نماذج المجال النظيف.تُعرف ORMs بإنشاء طبقات البيانات، والتي يبدو أنك لا تحتاج إليها في هذه الحالة.

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

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