عملکرد برنامه

کتابخانه کارخواه Google Ads .NET تعاملات برنامه‌تان را با Google Ads API ساده می‌کند و به حداقل پیکربندی ازجانب شما نیاز دارد. بااین‌حال، عملکرد کلی به‌شدت به نحوه استفاده از کتابخانه و ادغام آن با برنامه‌تان بستگی دارد.

این راهنما بهینه‌سازی‌های عملکردی را که مختص برنامه‌های NET .است پوشش می‌دهد و روال‌های مطلوبی را که به‌طور کلی برای Google Ads API قابل‌اجرا هستند تکمیل می‌کند.

هرزمان ممکن بود، از GoogleAdsClient مجدداً استفاده کنید

GoogleAdsClient نشان‌دهنده جلسه کاربر هنگام برقراری تماس‌های API است. این مؤلفه بهینه‌سازی‌هایی مانند این موارد ارائه می‌دهد:

  • ذخیره کردن کانال‌های gRPC مورداستفاده سرویس‌های API در حافظه نهان. این کار زمان راه‌اندازی را هنگام برقراری تماس‌های اولیه با «میانای برنامه‌سازی کاربردی» کاهش می‌دهد.
  • استفاده مجدد از کدهای دسترسی درصورت امکان. این کار تعداد رفت‌وبرگشت‌هایی را که کتابخانه کارخواه Google Ads .NET باید برای بازآوری کدهای دسترسی انجام دهد کاهش می‌دهد.

درصورت امکان، از کد دسترسی حساب سطح مدیر استفاده کنید

اگر کد دسترسی صادرشده در سطح حساب مدیر دارید، می‌توانید از آن برای برقراری تماس‌های API با همه حساب‌های مشتری Google Ads تحت آن سلسله‌مراتب حساب استفاده کنید. وقتی این کار با استفاده مجدد از نمونه‌های GoogleAdsClient ترکیب شود، می‌تواند تعداد رفت‌وبرگشت‌هایی را که کتابخانه مشتری باید برای بازآوری کدهای دسترسی انجام دهد بیشتر کاهش دهد.

هرزمان ممکن بود، به‌جای Search از SearchStream استفاده کنید

Google Ads API دو روش اصلی برای بازیابی اشیاء ارائه می‌دهد: GoogleAdsService.Search (که از صفحه‌بندی استفاده می‌کند) و GoogleAdsService.SearchStream (که از جاری‌سازی استفاده می‌کند).

درحالی‌که Search چندین درخواست صفحه‌بندی‌شده برای بارگیری کل گزارش ارسال می‌کند، SearchStream یک درخواست ارسال می‌کند و صرف‌نظر از اندازه گزارش، اتصال پایداری با Google Ads API برقرار می‌کند. SearchStream با حذف زمان رفت‌وبرگشت شبکه که برای درخواست هر صفحه جداگانه از پاسخ Search لازم است، به‌طور کلی عملکرد بهتری نسبت‌به صفحه‌بندی ارائه می‌دهد. برای کسب اطلاعات بیشتر درباره زمان انتخاب هر روش، راهنمای گزارش‌های جاری‌سازی را ببینید.

مدیریت دستی بازآوری کد دسترسی

در برخی محیط‌های بدون حالت مانند Google Cloud Functions، ممکن است استفاده مجدد از نمونه‌های GoogleAdsClient در فراخوانی‌ها امکان‌پذیر نباشد. چنین محیط‌هایی روال‌های مطلوب خودشان را برای حفظ و استفاده مجدد از داده‌ها دارند.

در Google.Ads.GoogleAds v27.0.0 و نسخه‌های جدیدتر، می‌توانید نمونه ICredential ازپیش پیکربندی‌شده خود را مستقیماً در GoogleAdsConfig بااستفاده از ویژگی Credentials تزریق کنید و ذخیره موقت کانال (UseChannelCache = false) را غیرفعال کنید.

اگر ترجیح می‌دهید ایجاد اطلاعات کاربری را در یک کلاس پیکربندی سفارشی کپسوله‌سازی کنید (یا از نسخه قدیمی‌تر کتابخانه استفاده می‌کنید)، می‌توانید کلاس GoogleAdsConfig را گسترش دهید تا بازآوری کد دسترسی خودتان را به‌صورت زیر انجام دهید:

// Create your own config class by extending the GoogleAdsConfig class.
class MyGoogleAdsConfig : GoogleAdsConfig
{
    public MyGoogleAdsConfig() : base()
    {
        // Disable the library's built-in channel caching mechanism.
        UseChannelCache = false;
    }

    protected override ICredential CreateCredentials()
    {
        // Create your own ICredential object here. You may refer to the
        // default implementation of GoogleAdsConfig.CreateCredentials
        // 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 به روش‌های ناهمگام مانند SearchStreamAsync استفاده کنید:

using 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.V26.GoogleAdsService);

await googleAdsService.SearchStreamAsync(
    request,
    (SearchGoogleAdsStreamResponse resp) =>
    {
        foreach (GoogleAdsRow googleAdsRow in resp.Results)
        {
            // Process the row.
        }
    },
    callSettings);

هرزمان توانستید گزارش‌گیری را خاموش کنید

کتابخانه Google Ads .NET به‌طور پیش‌فرض ثبت گزارش را خاموش می‌کند و از رویکرد ثبت گزارش تنبل استفاده می‌کند که عملکرد بهتری به برنامه شما می‌دهد. اگر گزارش‌گیری را درطول توسعه روشن می‌کنید، حتماً آن را در محیط تولید خاموش کنید. اگر لازم است درخواست‌های ناموفق خاصی را در تولید نظارت کنید، می‌توانید یک یا چند مورد از مراحل زیر را بدون تأثیر منفی بر عملکرد برنامه‌تان انجام دهید:

  • فقط گزارش‌های خلاصه را روشن کنید.
  • تنظیم کردن گزارش‌های کامل روی سطح ERROR.
  • شناسه درخواست را برای درخواست‌های ناموفق خاص ذخیره کنید تا بتوانید آن را با کانال‌های پشتیبانی هم‌رسانی کنید.

برای کسب اطلاعات بیشتر، راهنمای ثبت گزارش را ببینید.

استفاده از گزینه ReadyToRun

‫NET .مدرن از پیش‌کامپایل کردن باینری‌های شما در پلاتفرم و معماری خاصی با تنظیم PublishReadyToRun روی true و سپس انتشار باینری با مشخص کردن RuntimeIdentifier معتبر پشتیبانی می‌کند. برای اطلاعات بیشتر، راهنمای استقرار ReadyToRun را ببینید.

استفاده از TieredCompilation

‫TieredCompilation (به‌طور پیش‌فرض در نسخه‌های مدرن .NET مانند .NET 8 فعال است) به .NET اجازه می‌دهد نقاط اتصال را شناسایی کند و عملکرد زمان اجرا را بهبود بخشد. همگردانی چندسطحی به‌خوبی با ReadyToRun کار می‌کند زیرا می‌تواند از تصویر ازپیش تولیدشده برای راه‌اندازی سریع استفاده کند و سپس روش‌های داغ را با بهینه‌سازی‌های کامل بازهمگردانی کند. برای اطلاعات بیشتر، راهنمای TieredCompilation را ببینید.

زباله‌روبی (GC) را دقیق تنظیم کنید

‫.NET دو نمایه کلی برای جمع‌آوری زباله (GC) ارائه می‌دهد: نمایه ایستگاه کاری و نمایه سرور. این دو نمایه موازنه‌های عملکرد متفاوتی دارند. برنامه‌های سرور اختصاصی که از کتابخانه Google Ads .NET استفاده می‌کنند، اغلب هنگام اجرا در نمایه سرور عملکرد بهتری دارند.

می‌توانید از تنظیم دقیق تنظیمات GC زیر بهره‌مند شوید:

  • جمع‌آوری زباله سرور: جمع‌آوری زباله سرور به زمان اجرای .NET اجازه می‌دهد تا با کار کردن روی چندین پشته و رشته GC، توان عملیاتی بالاتری به برنامه Google Ads API بدهد. برای جزئیات بیشتر، به راهنمای GC سرور مراجعه کنید. می‌توانید با افزودن خطوط زیر به فایل .csproj برنامه‌تان، جمع‌آوری زباله سرور را روشن کنید:

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • زباله‌روبی هم‌زمان: می‌توانید زباله‌روبی هم‌زمان را روشن کنید تا به .NET GC یک رشته اختصاصی برای زباله‌روبی در نسل ۲ بدهید. این تنظیم می‌تواند هنگام پردازش گزارش‌های بزرگ مفید باشد. می‌توانید با افزودن خطوط زیر به فایل .csproj برنامه‌تان، جمع‌آوری هم‌زمان زباله را روشن کنید:

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • حفظ جمع‌آوری زباله ماشین مجازی: تنظیم RetainVMGarbageCollection پیکربندی می‌کند که آیا بخش‌هایی از حافظه مجازی که باید حذف شوند در فهرست آماده‌به‌کار برای استفاده در آینده قرار داده شوند یا به سیستم‌عامل (OS) برگردانده شوند. می‌توانید با افزودن خطوط زیر به فایل .csproj برنامه‌تان، حفظ حافظه مجازی را روشن کنید:

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

می‌توانید GC خود را با انتخاب یک راه‌اندازی که رفتار ایستگاه کاری و سرور را متعادل می‌کند، تنظیم دقیق کنید. همه تنظیمات GC مربوطه را می‌توان در فایل runtimeconfig.json برنامه .NET، ازطریق متغیرهای محیطی، یا در App.config مشخص کرد.