تسهّل مكتبة برامج عميل .NET في "إعلانات Google" تفاعلات تطبيقك مع Google Ads API، مع الحدّ الأدنى من الإعداد من جانبك. ومع ذلك، يعتمد الأداء العام بشكل كبير على كيفية استخدام المكتبة ودمجها مع تطبيقك.
يتناول هذا الدليل تحسينات الأداء الخاصة بتطبيقات .NET، ويكمل أفضل الممارسات التي تنطبق بشكل عام على Google Ads API.
إعادة استخدام GoogleAdsClient كلّما أمكن
يمثّل GoogleAdsClient
جلسة المستخدم عند إجراء طلبات بيانات من واجهة برمجة التطبيقات. وتوفّر تحسينات مثل:
- تخزين قنوات gRPC التي تستخدمها خدمات واجهة برمجة التطبيقات مؤقتًا يؤدي ذلك إلى تقليل وقت الإعداد عند إجراء طلبات البيانات من واجهة برمجة التطبيقات الأولية.
- إعادة استخدام رموز الدخول عند الإمكان يؤدي ذلك إلى تقليل عدد الرحلات المتكررة التي يجب أن تنفّذها مكتبة عميل Google Ads .NET لتحديث رموز الدخول المميزة.
استخدام رموز الدخول من حساب على مستوى الحساب الإداري متى أمكن ذلك
- إذا كان لديك رمز مميّز للوصول تم إصداره على مستوى حساب إداري، يمكنك استخدامه لإجراء طلبات إلى واجهة برمجة التطبيقات في جميع حسابات العملاء على "إعلانات Google" ضمن التسلسل الهرمي لهذا الحساب. وعند دمجه مع إعادة استخدام مثيلات
GoogleAdsClient
، يمكن أن يؤدي ذلك إلى تقليل عدد الرحلات المتكررة التي يجب أن تنفّذها مكتبة العميل لتحديث رموز الدخول.
استخدام SearchStream بدلاً من Search متى أمكن ذلك
في حين أنّ 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);
تجميع بنية الإصدار
احرِص على تجميع تطبيقك باستخدام إعدادات الإصدار عند النشر على الخادم. عند استخدام إعدادات تصحيح الأخطاء، يتم تجميع تطبيقك مع توفير معلومات تصحيح الأخطاء الرمزية الكاملة وبدون تحسين.
إنشاء ملف تعريف لتطبيقك
يمكنك إنشاء ملف تعريف لتطبيقك من أجل رصد استخدام وحدة المعالجة المركزية والذاكرة وتحديد المؤثّرات السلبية في الأداء. توفّر Visual Studio أدوات التشخيص للمساعدة في إنشاء ملف تعريف لتطبيقك، كما تتوفّر أدوات تجارية أخرى لإنشاء ملفات التعريف.
استخدام طرق غير متزامنة
تساعد البرمجة غير المتزامنة باستخدام نموذج async-await في تجنُّب المشاكل المتعلقة بالأداء وتحسين استجابة تطبيقك بشكل عام. تنشئ مكتبة Google Ads .NET طرقًا غير متزامنة لجميع الخدمات وطرق RPC.
إلغاء الطرق غير المتزامنة
يمكنك استخدام المَعلمة callSettings
لتمرير
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.V21.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
إيقاف التسجيل عندما يكون ذلك ممكنًا
توقف مكتبة Google Ads .NET التسجيل تلقائيًا وتستخدم أسلوب التسجيل المؤجّل، ما يمنح تطبيقك أداءً أفضل. في حال تفعيل التسجيل، احرص على إيقافه في بيئة الإنتاج. إذا كنت بحاجة إلى تتبُّع الطلبات التي تعذّر تنفيذها في إصدار الإنتاج، يمكنك اتّخاذ خطوة واحدة أو أكثر من الخطوات التالية بدون التأثير سلبًا في أداء تطبيقك:
- فعِّل سجلّات الملخّصات فقط.
- اضبط السجلات الكاملة على المستوى
ERROR
. - احفظ رقم تعريف الطلب الخاص بالطلبات المحدّدة التي تهمّك والتي يمكنك مشاركتها مع قنوات الدعم.
لمزيد من المعلومات، يمكنك الاطّلاع على دليل تسجيل البيانات.
تحديد ما إذا كنت تريد استخدام طريقة SearchStream أو Search
توفّر Google Ads API طريقتَين رئيسيتَين لاسترداد العناصر: الطريقة Search
(التي تستخدم تقسيم النتائج إلى صفحات) والطريقة SearchStream
(التي تستخدم البث).
تقدّم SearchStream
أداءً أفضل من Search
، ولكن هناك حالات يُفضّل فيها استخدام Search
.
يمكنك الاطّلاع على دليل تقارير البث لمعرفة المزيد عن الطريقتَين.
استخدام الخيار ReadyToRun
يضيف الإصدار 3.1 من.NET Core إمكانية تجميع الرموز الثنائية مسبقًا لنظام أساسي وبنية محدّدين
من خلال ضبط إعداد PublishReadyToRun
على true
،
ثم نشر الرمز الثنائي من خلال تحديد قيمة RuntimeIdentifier
صالحة عند النشر. يمكنك الاطّلاع على الدليل حول ميزة ReadyToRun
لمعرفة المزيد.
Use TieredCompilation
تتيح TieredCompilation
لمنصة .NET تحديد النقاط الفعّالة وتحسين أدائها. تعمل ميزة "الترجمة المجمّعة" بشكل أفضل مع الخيار ReadyToRun
لأنّه يمكنها استخدام الصورة التي تم إنشاؤها مسبقًا عند توفّرها. لمزيد من المعلومات، يُرجى الاطّلاع على الدليل حول
TieredCompilation
.
تحسين عملية جمع البيانات المهملة
توفّر .NET ملفَين عامَّين لجمع البيانات غير الضرورية: ملف محطة عمل وملف خادم. يقدّم هذان الملفّان مزايا مختلفة من حيث الأداء. تميل التطبيقات التي تستخدم مكتبة Google Ads .NET إلى تحقيق أداء أفضل عند تشغيلها في ملف تعريف خادم. يمكنك الاستفادة من الضبط الدقيق لإعدادات GC التالية.
تنظيف الذاكرة غير المستخدَمة على الخادم: تتيح عملية تنظيف الذاكرة غير المستخدَمة على الخادم لوقت تشغيل .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>
يمكنك تحسين GC من خلال اختيار إعدادات تتناسب مع جهاز بين محطة عمل وخادم. يتم تحديد جميع الإعدادات ذات الصلة في ملف runtimeconfig.json
الخاص بتطبيق .NET Core أو في متغير بيئة أو في App.config
الخاص بتطبيق .NET SDK.