ספריית הלקוח של Google Ads מסוג .NET מפשטת את האינטראקציה של האפליקציה עם Google Ads API, עם הגדרות אישיות מינימליות. אבל באופן כללי, תלויים מאוד באופן השימוש בספרייה ובשילוב עם אפליקציה.
המדריך הזה עוסק באופטימיזציות של ביצועים שספציפיות לאפליקציות .NET, וגם משלימה את היכולות הטובות ביותר שיטות עבודה שבדרך כלל רלוונטיות Google Ads API
שימוש חוזר ב-Google AdsClient ככל האפשר
GoogleAdsClient
מייצג סשן של משתמש בזמן ביצוע קריאות ל-API. הוא מספק
אופטימיזציות כמו:
- שמירה במטמון של ערוצי gRPC בשימוש בשירותי API. כך אפשר לקצר את זמן ההגדרה כשמבצעים API ראשוני שיחות.
- שימוש חוזר באסימוני גישה כשהדבר אפשרי. כך מפחיתים את מספר הנסיעות הלוך ושוב שספריית הלקוח של Google Ads .NET צריכה לבצע כדי לרענן את אסימוני הגישה.
להשתמש באסימוני גישה מחשבון ברמת חשבון ניהול כשהדבר אפשרי
- אם הונפק לכם אסימון גישה ברמת חשבון הניהול, תוכלו להשתמש בו
כדי לבצע קריאות ל-API כנגד כל חשבונות הלקוח ב-Google Ads תחת אותו חשבון
ההיררכיה. בשילוב עם שימוש חוזר במכונות
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);
הידור לגרסת ה-build
חשוב לוודא שהאפליקציה עוברת הידור באמצעות קובץ ההשקה (Release) הגדרה אישית בפריסה לשרת. כשמשתמשים בהגדרת ניפוי הבאגים, האפליקציה שמבוססת על נתוני ניפוי באגים סימבוליים מלאים, בלי אופטימיזציה.
יצירת פרופיל של האפליקציה
יצירת פרופיל של האפליקציה לשימוש במעבד (CPU) ובזיכרון לצורך זיהוי ביצועים בצווארי בקבוק. ב-Visual Studio יש כלי אבחון כדי לעזור ביצירת פרופיל של האפליקציה. יש גם פרופיל מסחרי אחר כלים זמינים.
שימוש בשיטות אסינכרוניות
תכנות אסינכרוני באמצעות הפונקציה האסינכרונית הפרדיגמה עוזרת למנוע צווארי בקבוק בביצועים ולשפר את הרספונסיביות הכוללת של באפליקציה שלך. ספריית ה- .NET של Google Ads יוצרת שיטות אסינכרוניות לכל השירותים ו-RPC.
ביטול של שיטות אסינכרוניות
אפשר להשתמש בפרמטר callSettings
כדי להעביר
CancellationToken
ל-methods אסינכרוניות:
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.V17.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
מתי אפשר להשבית את הרישום ביומן
ספריית .NET של Google Ads משביתה כברירת מחדל את הרישום ביומן ומשתמשת ברישום ביומן לשיפור הביצועים של האפליקציה. אם מפעילים את הרישום ביומן, הקפידו להשבית אותו בסביבת הייצור. אם צריך לעקוב עבור בקשות ספציפיות שנכשלו בסביבת הייצור, אפשר לבצע אחת או יותר את השלבים הבאים מבלי להשפיע לרעה על ביצועי האפליקציה:
- מפעילים רק את יומני הסיכום.
- הגדרת היומנים המלאים לרמת
ERROR
. - שמירת מזהה הבקשה לבקשות עניין ספציפיות שאפשר לשתף עם ערוצי התמיכה.
מידע נוסף זמין במדריך הרישום ביומן.
מחליטים אם להשתמש בשיטת SearchStream או בשיטת החיפוש
ב-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 Ads נוטות להשיג ביצועים טובים יותר כשהן פועלות בפרופיל שרת. ניתן לשפר את האפשרויות של כוונון עדין של ההגדרות הבאות של 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
של אפליקציית ה-SDK של .NET.