تعمل مكتبة عملاء "إعلانات Google" لنظام التشغيل .NET على تبسيط تفاعلات تطبيقك مع واجهة برمجة التطبيقات Google Ads API، مع الحد الأدنى من الإعدادات من جانبك. ومع ذلك، يعتمد الأداء العام بشكل كبير على كيفية استخدام المكتبة ودمجها مع تطبيقك.
يتناول هذا الدليل تحسينات الأداء الخاصة بتطبيقات .NET، ويكمل أفضل الممارسات التي تنطبق بشكل عام على واجهة برمجة التطبيقات Google Ads API.
إعادة استخدام GoogleAdsClient كلّما أمكن
يمثّل GoogleAdsClient
جلسة أحد المستخدِمين عند إجراء طلبات بيانات من واجهة برمجة التطبيقات. وتوفّر هذه الميزة تحسينات، مثل:
- تخزين قنوات gRPC التي تستخدمها خدمات واجهة برمجة التطبيقات ويؤدي ذلك إلى تقليل وقت الإعداد عند إجراء طلبات برمجة واجهة برمجة التطبيقات الأولي.
- إعادة استخدام رموز الوصول كلما أمكن ويؤدي ذلك إلى تقليل عدد عمليات التنقّل المتبادلة التي يجب أن تُجريها مكتبة عملاء .NET في "إعلانات Google" لإعادة تحميل رموز الوصول.
استخدام رموز الوصول من حساب على مستوى حساب إداري كلما أمكن
- إذا كان لديك رمز مميّز للوصول تم إصداره على مستوى حساب إداري، يمكنك استخدامه
لإجراء طلبات بيانات من واجهة برمجة التطبيقات لجميع حسابات عملاء "إعلانات Google" ضمن التسلسل الهرمي لحساب العميل
هذا. وعند دمج ذلك مع إعادة استخدام نُسخ
GoogleAdsClient
، يمكن أن يؤدي ذلك إلى تقليل عدد عمليات التنقّل التي يجب أن تُجريها مكتبة العميل لمحاولة إعادة تحميل رموز الوصول.
استخدِم SearchStream بدلاً من "بحث Google" كلما أمكن ذلك.
على الرغم من أنّ GoogleAdsService.Search
يمكنه
إرسال طلبات متعددة مُقسّمة حسب الصفحات لتنزيل التقرير بالكامل،
GoogleAdsService.SearchStream
يُرسِل طلبًا واحدًا ويُنشئ اتصالاً دائمًا مع Google Ads API
بغض النظر عن حجم التقرير. من خلال إزالة وقت التنقّل في الشبكة
المطلوب لطلب كل صفحة فردية من استجابة Search
، استنادًا إلى
تطبيقك، قد يقدّم SearchStream
أداءً أفضل من طريقة تقسيم الصفحة. اطّلِع على مقارنة بين Search و
SearchStream للتعرّف على مزيد من المعلومات عن هذا التحسين.
إدارة عمليات إعادة تحميل رموز الوصول يدويًا
في بيئات معيّنة، مثل Google Cloud
Functions، قد لا يكون من الممكن إعادة استخدام موارد موارد
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);
تجميع الإصدار العلني
تأكَّد من تجميع تطبيقك باستخدام إعدادات الإصدار عند نشره على الخادم. عند استخدام إعدادات تصحيح الأخطاء، يتم compiling تطبيقك باستخدام معلومات تصحيح الأخطاء الرمزية الكاملة بدون تحسين.
إنشاء ملف شخصي لتطبيقك
يمكنك إنشاء ملف تعريف لتطبيقك لمعرفة استخدام وحدة المعالجة المركزية (CPU) والذاكرة لتحديد نقاط اختناق الأداء. يوفّر Visual Studio أدوات تشخيص للمساعدة في إنشاء ملف تجاري لتطبيقك. وهناك أيضًا أدوات ملف تجاري أخرى متاحة.
استخدام الدوال البرمجية غير المتزامنة
يساعد البرمجة غير المتزامنة باستخدام منهج async-await في تجنُّب الاختناقات في الأداء وتحسين الاستجابة العامة لتطبيقك. تُنشئ مكتبة .NET في "إعلانات Google" طُرقًا غير متزامنة لجميع الخدمات وطُرق RPC.
إلغاء الطرق غير المتزامنة
يمكنك استخدام المَعلمة callSettings
لتمرير ملف شخصي على Facebook
CancellationToken
إلى الطرق غير المتزامنة:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V19.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
إيقاف تسجيل الأخطاء متى أمكن
تعمل مكتبة .NET في "إعلانات Google" على إيقاف التسجيل تلقائيًا وتستخدم أسلوب تسجيل غير نشط يمنح تطبيقك أداءً أفضل. في حال تفعيل التسجيل، احرص على إيقافه في بيئة الإنتاج. إذا كنت بحاجة إلى مراقبة الطلبات التي تؤدي إلى حدوث أخطاء معيّنة في قناة الإصدار العلني، يمكنك اتّخاذ إجراء واحد أو أكثر من الخطوات التالية بدون التأثير سلبًا في أداء تطبيقك:
- فعِّل السجلات التلخيصية فقط.
- اضبط السجلّات الكاملة على المستوى
ERROR
. - احفظ رقم تعريف الطلب لطلبات معيّنة تهمّك يمكنك مشاركتها مع قنوات الدعم.
اطّلِع على دليل التسجيل لمعرفة المزيد من المعلومات.
تحديد ما إذا كنت تريد استخدام SearchStream أو Search
توفّر Google Ads API طريقتَين رئيسيتين لاسترداد العناصر: طريقة Search
(التي تستخدِم تقسيم الصفحات) وSearchStream
(التي تستخدِم البث).
يقدّم SearchStream
أداءً أفضل من Search
، ولكن هناك
سيناريوهات يُفضّل فيها استخدام Search
.
اطّلِع على دليل تقارير البث للتعرّف على مزيد من المعلومات حول الطريقتَين.
استخدام خيار ReadyToRun
يضيف .NET Core 3.1 ميزة الترجمة المسبقة للبرامج الثنائية إلى نظام أساسي
وبنية معيّنة من خلال ضبط الإعداد PublishReadyToRun
على true
، ثم
نشر البرنامج الثنائي من خلال تحديد RuntimeIdentifier
صالح عند
النشر. اطّلِع على الدليل حول ReadyToRun
الميزة للاطّلاع على
مزيد من المعلومات.
استخدام TieredCompilation
يسمح TieredCompilation
لـ .NET بتحديد نقاط الاتصال وتحسين
أدائها. تعمل عملية التجميع المُدرَجة بشكل أفضل مع الخيار ReadyToRun
لأنّه
يمكنه استخدام الصورة التي تم إنشاؤها مسبقًا عند توفّرها. اطّلِع على الدليل المتعلق بموضوع
TieredCompilation
لمزيد من المعلومات.
تحسين عملية جمع البيانات المهملة (GC)
توفّر .NET ملفَّين شخصيَّين عامَّين لعملية جمع المهملات (GC): ملف شخصي للمحطة العاملة وملف شخصي للخادم. يتضمن الملفان الشخصيان هذان مفاضلات مختلفة في الأداء. تحقّق التطبيقات التي تستخدم مكتبة .NET في "إعلانات Google" أداءً أفضل عند تشغيلها في ملف شخصي للخادم. يمكنك الاستفادة من تحسين إعدادات "إحصاءات Google" التالية.
جمع المهملات على الخادم: يسمح جمع المهملات على الخادم لتنفيذ .NET بتقديم أداء أفضل لتطبيق Google Ads API من خلال العمل على سلاسل مهام متعددة. اطّلِع على هذا الدليل لمزيد من التفاصيل. يمكنك تفعيل ميزة جمع المهملات في الخادم من خلال إضافة السطور التالية إلى ملف
.csproj
في تطبيقك.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
جمع القمامة المتزامن: يمكنك تفعيل جمع القمامة المتزامن لمنح .NET GC سلسلة محادثات مخصّصة لجمع القمامة في الجيل 2. يمكن أن يكون هذا الإعداد مفيدًا عند معالجة التقارير ذات الأحجام الكبيرة. يمكنك تفعيل ميزة جمع المهملات المتزامنة من خلال إضافة الأسطر التالية إلىملف
.csproj
تطبيقك.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
الاحتفاظ بميزة جمع المهملات في الأجهزة الافتراضية: يضبط
RetainVMGarbageCollection
الإعداد ما إذا كان سيتم وضع أجزاء من الذاكرة الافتراضية التي يجب حذفها في قائمة الانتظار لاستخدامها في المستقبل، أو إعادة طرحها في نظام التشغيل . يمكنك تفعيل الاحتفاظ بالذاكرة الافتراضية من خلال إضافة السطور التالية إلى تطبيقك:<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
يمكنك تحسين ذاكرة التخزين المؤقت في Google من خلال الاكتفاء بإعداد بين
محطة عمل وخادم. يتم تحديد جميع الإعدادات
المعنية
في ملف runtimeconfig.json
الخاص بتطبيق .NET Core أو متغيّر
البيئة أو App.config
الخاص بتطبيق حزمة تطوير البرامج (SDK) لـ .NET.