نموذج لمشروع .NET Core مع قاعدة بيانات MongoDB مع تمكين مجموعة النسخ المتماثلة والمعاملات.
الهدف من هذا المشروع هو إعطاء حل للموضوع أدناه (المستخدم لمقابلة العمل):
Please create a sample .net/C# project that includes the following elements:
- Basic CRUD functionality for a data structure of your choice.
- RESTful APIs to expose that functionality with your framework of choice (ASP.NET Web APIs, ASP.NET Core, ServiceStack (preferred), …etc).
- Uses MongoDB using C# driver.
- Please demonstrate your usage of one of MongoDB advanced features (aggregation, transactions, indexes, …etc) using C# driver.
- Please push your code to a Git repository that you can share with us.
هذا مشروع asp core 3.1 web API مع بنية n-tiers:
كل طبقة لها طبقة تجريد خاصة بها لتجنب التبعيات. أنا أستخدم محرك IOC وDI الأساسي.
لم أقم بإجراء أي اختبارات للوحدة لأنه لا يوجد منطق عمل. ومع ذلك، فقد قمت بعمل عينة من اختبار التكامل باستخدام مكتبة Microsoft WebHost . يمكنك تشغيل اختبارات التكامل من خلال الاستوديو المرئي أو سطر الأوامر، ولكن لا تنس تشغيل إنشاء عامل الإرساء أولاً (وإلا فلن يكون لديك أي قاعدة بيانات لطلبها).
يتم تنفيذ DAL باستخدام برنامج التشغيل MongoDB C#. من خلال تشغيل docker-compose المرفق بالحل، ستحصل على مثيل لخادم Mongo مع تمكين مجموعة النسخ المتماثلة (من أجل دعم المعاملات).
كدليل على استخدام إحدى ميزات MongoDB المتقدمة، قمت باختيار المعاملات. لذلك يتم إدخال IClientSessionHandle في جميع المستودعات. لقد تمكنت أيضًا من إنشاء برنامج وسيط يسمى TransactionFilter يقوم بإنشاء معاملة لطلب HTTP بالكامل. بهذه الطريقة، يمكننا إجراء عمليات متعددة المستندات، على مستودعات مختلفة، والتي قد تتراجع في حالة حدوث مشكلة، دون التعامل مع المعاملات متعددة المستندات يدويًا.
مثال :
إنها تعمل كما هي ولكنها ستحتاج إلى مزيد من اختبارات التحميل. قد لا يكون هذا جاهزًا للإنتاج.
يبدو أن استخدام docker-compose up في سطر الأوامر لا يعمل مع واجهة برمجة التطبيقات في الوقت الحالي. لم يكن لدي الكثير من الوقت لذا واصلت استخدام VS للتأليف.