تسمية Gridwich و مساحات الأسماء

Azure Functions

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

يتكون نظام Gridwich من ثلاثة مكونات رئيسية، Core وHost.FunctionApp وSagaParticipants.

  • يحتوي المشروع Core على واجهات ونماذج وعناصر نقل بيانات (DTOs) وفئات أساسية على مستوى النظام.

    تشتمل مشروعات Core.{Technology} على فئات العملاء والوظائف الأساسية التي تستخدمها تطبيقات الإمكانيات المتنوعة.

  • مشروع Host.FunctionApp هو الواجهة العامة للنظام ككل.

  • توفر مشروعات SagaParticipants إمكانات الوظائف الخارجية مثل التحليل والترميز والنشر والتخزين.

    تصف مشروعات SagaParticipants.{Capability} الواجهات والاستثناءات والأحداث التي تنتجها إحدى الإمكانات.

    توفر مشروعات SagaParticipants.{Capability}.{Technology} التنفيذ الفعلي للقدرة، ومستمعي الأحداث، والوظائف الخاصة بالقدرات.

شبكة Gridwich Technology هي تنفيذ فعلي لقدرة أو وظيفة أساسية. يمكن أن يكون المشروع {Technology} إما ضمن مساحة الاسم واسم المشروع Core أو SagaParticipants.{Capability}، اعتماداً على الاستخدام.

إنشاء المشروع

يمكنك استخدام شجرة القرارات التالية عند تسمية مشروع Gridwich جديد:

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

  • نعم: هل التعليمة البرمجية تتعلق بقدرة أو خدمة معينة؟

    • نعم: Gridwich.SagaParticipants.{Capability}
    • لا: Gridwich.Core
  • لا: هل التعليمة البرمجية مرتبطة بمستمع حدث أو تنفيذ لتقنية معينة؟

    • نعم: هل ستستخدم أكثر من خدمة التعليمة البرمجية؟

      • نعم، على سبيل المثال برنامج تضمين SDK: Gridwich.Core.{Technology}
      • لا: Gridwich.SagaParticipants.{Capability}.{Technology}
    • لا: هل التعليمة البرمجية مرتبطة بقدرة معينة؟

      • نعم: Gridwich.SagaParticipants.{Capability}

      • لا: هل التعليمة البرمجية هي نقطة نهاية تطبيق Azure Function؟

        • نعم: Gridwich.Host.FunctionApp
        • لا: Gridwich.Core

بنية المشروع

تحتوي كل حزمة على دليلين فرعيين:

  • يحتوي src على تعليمة برمجية للإنتاج غير التجريبي.
  • يحتوي tests على اختبارات الوحدة.

يحتوي كل مشروع على دليل فرعي tests، ولكن إذا لم تكن هناك اختبارات وحدة للحزمة، فقد يكون الدليل فارغاً.

يحتوي كل دليل فرعي على C# أو ملفات أخرى لإنشاء التعليمة البرمجية، بالإضافة إلى ملف .csproj. يتبع اسم الملف .csproj اسم الحزمة، على سبيل المثال:

  • Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
  • Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj

تتبع مساحات أسماء الرموز التي تستخدمها الحزم أيضاً هذا الاصطلاح، على سبيل المثال:

  • Gridwich.Host.FunctionApp
  • Gridwich.Host.FunctionAppTests

أثناء دورات الإنشاء والاختبار، تظهر أدلة عابرة مثل bin وobj وTestResults، والتي لا تحتوي على عناصر مؤهلة git. تنظف معالجة dotnet clean الأدلة المؤقتة.

أسماء المشاريع ومساحات الأسماء

أسماء مشاريع Gridwich ومساحات الأسماء لها الخصائص التالية.

مساحات أسماء Core وSagaParticipants Technology

لا تتضمن مساحات الأسماء Gridwich.Core.{Technology} الغرض من التقنية، وذلك أساساً لتجنب . مساحات الأسماء Core هي مشروعات داخلية تستخدمها مشروعات SagaParticipants أو Host.FunctionApp، ولا تحتاج إلى أسماء محددة جيداً.

على سبيل المثال، Gridwich.Core.EventGrid يمكن أن يكون Gridwich.Core.Events.EventGrid المشروع أو Gridwich.Core.Messaging.EventGrid. ومع ذلك، فإن أسماء المشروع Core تشير بالفعل إلى أن التقنيات تساهم في النظام الأساسي.

يمكن أن تساهم التكنولوجيا أيضاً في النظام بأكثر من طريقة. على سبيل المثال، يمكنك الاتصال بـ Redis بمخزن بيانات أو وسيلة نقل رسائل، اعتماداً على الاستخدام، ولكنه يستخدم دائماً نفس برنامج تضمين SDK.

تستخدم مساحات أسماء التقنيات Gridwich.SagaParticipants.Encode.CloudPort وGridwich.SagaParticipants.Encode.Flip مكونات من مساحة الاسم Gridwich.SagaParticipants.Encode. هذه التعليمة البرمجية ليست ضمن مساحة الاسم Gridwich.Core.Encode لأنه خاص بمهام الترميز، ولا يتقاطع مع إمكانيات أخرى مثل النشر.

حزم SagaParticipants

لا تعالج كل حزمة Gridwich.SagaParticipants أحداثاً خارجية. توفر بعض الحزم ضمن Gridwich.SagaParticipants وظائف لمشاركي saga الآخرين الذين يعالجون الطلبات الخارجية.

إلى جانب حزم Gridwich.SagaParticipants.Encode الذي يشارك التعليمة البرمجية عبر حزم تقنية ترميز متعددة، هناك أيضاً حزم متخصصة مثل Gridwich.SagaParticipants.Encode.TelestreamCloud. توفر حزمة Telestream وصول Gridwich إلى نظام Vantage Telestream خارجي. يستخدم المشاركون في ملحمة Flip وCloudPort حزمة Telestream لتوفير معالجة الطلبات الخاصة بهم.

أسماء الحزم ومساحات الأسماء الأخرى

للحفاظ على عبارات using إلى الحد الأدنى، لا يقصر Gridwich محتويات الحزمة على مساحة الاسم التي يشير إليها اسم الحزمة. تساهم بعض الحزم في كيانات لمساحات أسماء أخرى. على سبيل المثال، تساهم الحزمة Gridwich.Core.Tests في فئة Gridwich.Core.Helpers.TestHelpers.

ومع ذلك، تُنشئ كل حزمة DLL يطابق اسم الحزمة للتعليمة البرمجية للإنتاج في src، ومكتبة DLL لاختبارات الوحدة، إن وجدت، في tests. اسم اختبار DLL هو نفس اسم الحزمة، ولكن مع لاحقة Tests.

الخطوات التالية

وثائق المنتج:

وحدات Microsoft Learn: