أداء التطبيقات

تعمل مكتبة برامج .NET في "إعلانات Google" على تبسيط تفاعلات تطبيقك مع Google Ads API، بأقلّ قدر من الإعدادات من جانبك. ومع ذلك، يعتمد الأداء العام بشكلٍ كبير على كيفية استخدام المكتبة وتكاملها مع تطبيقك.

يتناول هذا الدليل تحسينات الأداء الخاصة بتطبيقات .NET، ويُكمل أفضل الممارسات التي تنطبق بشكل عام على Google Ads API.

إعادة استخدام GoogleAdsClient كلما أمكن ذلك

يمثّل GoogleAdsClient جلسة مستخدم عند إجراء طلبات بيانات من واجهة برمجة التطبيقات. يوفر تحسينات مثل:

  • التخزين المؤقت لقنوات gRPC التي تستخدمها خدمات واجهة برمجة التطبيقات وهذا يقلل من وقت الإعداد عند إجراء طلبات البيانات الأولية من واجهة برمجة التطبيقات.
  • إعادة استخدام رموز الدخول إن أمكن يقلّل هذا من عدد عمليات الذهاب والعودة التي يجب على مكتبة عملاء "إعلانات Google .NET" إجراؤها لإعادة تحميل رموز الدخول.

استخدام رموز الدخول من حساب على مستوى الحساب الإداري متى أمكن

  • إذا كان لديك رمز دخول تم إصداره على مستوى الحساب الإداري، يمكنك استخدامه لإجراء طلبات بيانات من واجهة برمجة التطبيقات على جميع حسابات عملاء "إعلانات Google" ضمن التدرّج الهرمي للحساب. عند الدمج مع إعادة استخدام مثيلات GoogleAdsClient، يمكن أن يؤدي ذلك إلى تقليل عدد عمليات النقل ذهابًا وإيابًا على مكتبة العميل لإعادة تحميل رموز الدخول.

استخدام SearchStream بدلاً من "البحث" كلما أمكن ذلك

بإمكان GoogleAdsService.Search إرسال عدة طلبات مقسّمة إلى صفحات لتنزيل التقرير بالكامل، ويؤدي GoogleAdsService.SearchStream إلى إرسال طلب واحد وبدء اتصال دائم بواجهة Google Ads API بغض النظر عن حجم التقرير. من خلال تقليل وقت إرسال البيانات ذهابًا وإيابًا إلى الشبكة، المطلوب لطلب كل صفحة فردية من استجابة Search، بناءً على تطبيقك، يمكن أن يؤدي استخدام SearchStream إلى أداء أفضل مقارنةً بالتقسيم على صفحات. راجع البحث مقابل SearchStream لمعرفة المزيد حول هذا التحسين.

إدارة عمليات إعادة تحميل رمز الدخول يدويًا

في بيئات معيّنة، مثل دوال Google Cloud، قد لا يكون من الممكن إعادة استخدام GoogleAdsClient مثيلات. يمكن أن تأتي هذه البيئات مع أفضل الممارسات الخاصة بها لمواصلة استخدام البيانات وإعادة استخدامها. وفي هذه الحالات، يمكنك تمديد الفئة GoogleAdsConfig لإجراء عمليات إعادة تحميل رمز الدخول الخاص بك على النحو التالي.

// Create your own config class by extending the GoogleAdsConfig class.

class MyGoogleAdsConfig : GoogleAdsConfig
{
    public MyGoogleAdsConfig() : base()
    {
        // Disable the library's in-built channel caching mechanism.
        this.UseChannelCache = false;
    }
    protected override ICredential CreateCredentials()
    {
        // TODO: Create your own ICredentials object here. You may refer to the
        // default implementation of GoogleAdsConfig::CreateCreateCredentials
        // for an example.
    }
}

// Use your own config class when initializing the GoogleAdsClient instance.

MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);

التجميع لإنشاء إصدار

احرص على تجميع تطبيقك باستخدام ضبط الإصدار عند النشر على الخادم. عند استخدام تهيئة تصحيح الأخطاء، يجمع تطبيقك معلومات تصحيح الأخطاء الرمزية الكاملة بدون تحسين.

الملف الشخصي لتطبيقك

قم بتحليل تطبيقك من أجل استخدام كل من وحدة المعالجة المركزية (CPU) والذاكرة لتحديد عوائق الأداء. توفر Visual Studio أدوات تشخيص للمساعدة في تصميم ملف شخصي لتطبيقك. تتوفر أيضًا أدوات أخرى لتحديد المواصفات التجارية.

استخدام طرق غير متزامنة

تساعد البرمجة غير المتزامنة باستخدام نموذج انتظار غير متزامن في تجنب المؤثِّرات السلبية في الأداء وتحسين الاستجابة العامة لتطبيقك. وتنشئ مكتبة "إعلانات Google .NET" طرقًا غير متزامنة لجميع الخدمات وطرق استدعاء إجراء عن بُعد (RPC).

إيقاف تسجيل الدخول عندما يكون ذلك ممكنًا

تعمل مكتبة .NET في "إعلانات Google" على إيقاف التسجيل تلقائيًا، كما تستخدم نهج التسجيل الكسول الذي يمنح تطبيقك أداءً أفضل. في حال تفعيل ميزة التسجيل، يُرجى التأكّد من إيقافها في بيئة الإنتاج. إذا كنت بحاجة إلى رصد طلبات محددة غير ناجحة في مرحلة الإنتاج، يمكنك اتّباع خطوة واحدة أو أكثر من الخطوات التالية بدون التأثير سلبًا في أداء تطبيقك:

  • فعِّل سجلّات الملخّص فقط.
  • اضبط السجلّات الكاملة على مستوى ERROR.
  • احفظ معرّف الطلب للطلبات المحددة ذات الأهمية التي يمكنك مشاركتها مع قنوات الدعم.

يمكنك الاطّلاع على دليل التسجيل للحصول على مزيد من المعلومات.

اختيار استخدام طريقة SearchStream أو طريقة البحث

توفّر Google Ads API طريقتَين أساسيتَين لاسترداد العناصر: طريقة Search (التي تستخدم التقسيم على صفحات) والطريقة SearchStream (التي تستخدم البث).

يقدّم SearchStream أداءً أفضل أكثر من Search، ولكن هناك سيناريوهات يُفضّل فيها استخدام Search.

يمكنك مراجعة دليل تقارير البث للاطّلاع على مزيد من المعلومات حول الطريقتَين.

استخدام خيار الاستعداد للتشغيل

يضيف .NET Core 3.1 دعمًا لعملية التجميع المسبق للثنائيات الخاصة بك إلى نظام أساسي وبنية محددة من خلال تحديد إعداد PublishReadyToRun على true، ثم نشر البرنامج الثنائي من خلال تحديد RuntimeIdentifier صالح عند النشر. يمكنك الاطّلاع على الدليل حول ميزة ReadyToRun للحصول على مزيد من المعلومات.

استخدام TieredCompilation

يسمح النطاق TieredCompilation لنظام .NET بتحديد نقاط الاتصال وتحسين أداءه. تعمل ميزة التجميع المتعدّد المستويات بشكل أفضل مع الخيار ReadyToRun لأنّه يمكنها استخدام الصورة التي تم إنشاؤها مسبقًا عند توفّرها. اطّلِع على الدليل حول TieredCompilation لمزيد من المعلومات.

الضبط الدقيق لمجموعة البيانات غير المرغوب فيها (GC)

يوفر NET. ملفان شخصيان عامان لمجموعة البيانات غير المرغوب فيها (GC): الملف الشخصي لمحطة العمل والملف الشخصي للخادم. يحتوي هذان الملفان على مقايضات مختلفة في الأداء. تميل التطبيقات التي تستخدم مكتبة .NET في "إعلانات Google" إلى تحقيق أداء أفضل عند تشغيلها في ملف شخصي للخادم. يمكنك الاستفادة من ضبط إعدادات تجميع البيانات التالية:

  • جمع البيانات غير المرغوب فيها في الخادم: تسمح عملية جمع البيانات غير المهمّة في الخادم لوقت تشغيل .NET بتوفير أداء أفضل لتطبيق Google Ads API من خلال التشغيل على سلاسل محادثات متعددة. اطّلِع على هذا الدليل للحصول على مزيد من التفاصيل. يمكنك تفعيل ميزة جمع البيانات غير المرغوب فيها الخاصة بالخادم عن طريق إضافة السطور التالية إلى ملف .csproj الخاص بتطبيقك.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • جمع البيانات المهملة المتزامنة: يمكنك تفعيل ميزة جمع البيانات غير المرغوب فيها المتزامنة لمنح .NET GC سلسلة تعليمات مخصصة لجمع البيانات المهملة في الجيل الثاني. يمكن أن يكون هذا الإعداد مفيدًا عند معالجة التقارير ذات الأحجام الكبيرة. يمكنك تفعيل ميزة جمع البيانات غير المرغوب فيها المتزامنة عن طريق إضافة الأسطر التالية إلى ملف .csproj في تطبيقك.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • الاحتفاظ بجمع البيانات المهملة للجهاز الافتراضي: يضبط الإعداد RetainVMGarbageCollection ما إذا كان سيتم وضع شرائح الذاكرة الافتراضية التي يجب حذفها في قائمة الاستعداد للاستخدام مستقبلاً، أو سيتم إصدارها مرة أخرى إلى نظام التشغيل (OS). يمكنك تفعيل ميزة الاحتفاظ بالذاكرة الافتراضية بإضافة السطور التالية إلى تطبيقك.

    <PropertyGroup>
      <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
    </PropertyGroup>
    

يمكنك ضبط عملية تجميع البيانات المهملة من خلال اختيار إعداد يقع بين محطة عمل وخادم. يتم تحديد جميع الإعدادات ذات الصلة في ملف runtimeconfig.json لتطبيق .NET Core، أو متغير بيئة، أو App.config في تطبيق .NET SDK.