مرحبًا ،
أنا في صدد تنفيذ مشروع جديد بسيط قائم على الخدمات المصغرة ، كمثال على دليل خطوة بخطوة لأولئك الذين واجهوا وقتًا عصيبًا باستخدام بنية الخدمات الصغيرة وما زالوا يبحثون عن مرجع جيد "آخر". وأيضًا ، سأكون ممتنًا من خلال التعليقات والمقترحات لجعل هذا المشروع جزءًا عالي الجودة من العمل.
هناك الكثير من المقالات وأمثلة الكود المصدري. لكن ، لسوء الحظ ، لم أجد أي إشارة بتعليمات بسيطة خطوة بخطوة ، دون القيام بتعمق عميق في Docker ، و Event Store ، والعديد من التكوينات ، ومواد النشر السحابية ، إلخ. لقد استنسخت عدة مشاريع وحاولت البدء باللعب معهم ، لكنك تعلم أن الله وحده يعلم كيف يبدأها ، وما هي التبعيات المفقودة ولماذا تفشل كل هذه النصوص مع الآلاف من الأخطاء.
على سبيل المثال ، يحتوي
مشروع eShop هذا من Microsoft على كل ما نحتاج إليه ، ولكن ليس من السهل للغاية معرفة ما يجري هناك ، سلاسل اتصال قاعدة بيانات SQL ، فشل البرامج النصية Docker ، لا How-Tos وأنا لست متأكدًا من أنه رائع بنية بسيطة تحتاج إلى البدء بها.

يحاول هؤلاء الشباب من بولندا تقديم شيء ذي قيمة وبساطة كافية ، يرجى
التحقق من ذلك .
لذا ، سأحاول هنا تطبيق مثل هذا البرنامج التعليمي ليكون بسيطًا قدر الإمكان للبدء في الأساسيات وكتابة بعض التعليمات البرمجية الأساسية لاستخدامها بعد ذلك في مشاريعك.
لن نتحدث عن "لماذا / متى يجب أن نستخدم الخدمات الصغيرة؟" ، فهناك العديد من المقالات حول هذا الموضوع. على سبيل المثال ، قام هذا الرجل
ببعض الأبحاث الجيدة ولخص حول الخدمات المجهرية .
سوف تغطي المواضيع التالية ومحاولة الحفاظ عليها بسيطة:
- متطلبات ما قبل وإعداد البيئة
- اختيار اسم لمشروع + أهداف نريد تحقيقها
- العمارة الشاملة
- بدء التنفيذ (.NET Core)
- إعداد قاعدة البيانات وذاكرة التخزين المؤقت والاختبار
- تكوين الأدوات والأدوات
- تحديد سيناريو حالة الاستخدام الأساسي الفائق + تنفيذه
- نشر في مكان ما
سيستخدم .NET Core 2.1 ، VS2017 على نظام التشغيل Windows 10. يجب تثبيت الأطراف الثالثة التالية وتشغيلها على جهازك:
Redis for Windows ،
MongoDB ،
Seq ،
RabbitMQ . سيتم تشغيل جميع الأشياء مع المعلمات الافتراضية. لقد وجدت هذه الأدوات سريعة وسهلة التركيب وتعمل فورًا.
عميل سطح المكتب لـ Redis (
https://redisdesktop.com/ ):

عميل سطح المكتب لـ MongoDB (
https://nosqlbooster.com/ ):

2. الهدف من المشروع هو إنشاء خلفية للحصول على البيانات من آلاف الأجهزة المحمولة / القابلة للارتداء. نوع البيانات هو بيانات المستشعر: حركة ذات 9 محاور ، تحديد الموقع الجغرافي ، درجة الحرارة ، الرطوبة ، إلخ. سوف ترغب أيضًا في معالجة وتحليل جميع تلك البيانات لإظهارها على بعض واجهة المستخدم الجميلة المستندة إلى الويب كإحصائيات ورسوم بيانية وتتبع ، إلخ. تم اختيار اسم المشروع بينما كنت أكتب هذه الفقرة - "Sensor Fusion Backend". أول خدمتين صغيرتين يمكنني التفكير فيهما هما DataProcessorService و DataAnalyticsService.
3. لنبدأ في التفكير في الهندسة المعمارية والبنية التحتية الدنيا على الأقل بالنسبة للمبتدئين. الاتصال: يتعامل مشروعنا مع نوع IoT / sensors من البيانات لذلك ، مع وضع هذا الشيء في الاعتبار أود استخدام وسيط الرسائل RabbitMQ للاتصال بخادم العميل. هنا تفسيرات
قصيرة وبسيطة . قاعدة البيانات: سوف تستخدم
مزيج MongoDB + Redis . MongoDB كنظام تخزين رئيسي و Redis كذاكرة تخزين مؤقت. تسجيل الدخول: مكتبة سجل Serilog + Seq كأداة متخيل.
Seq هو تطبيق ويب مستضاف على البنية الأساسية الخاصة بك:

لتبسيط واجهة برمجة التطبيقات ، سأستخدم Swagger:

لذلك ، الجزء الأول يدور حول الأدوات التي سنستخدمها لبدء التنفيذ. سترى الكود في الجزء 2 ويبدأ اللعب بالبنية التحتية.