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

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

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

در صورت امکان از GoogleAdsClient دوباره استفاده کنید

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

  • ذخیره کانال های gRPC مورد استفاده توسط سرویس های API. این باعث کاهش زمان راه اندازی هنگام برقراری تماس های اولیه API می شود.
  • استفاده مجدد از نشانه های دسترسی در صورت امکان. این کار تعداد رفت و برگشت هایی را که کتابخانه سرویس گیرنده Google Ads .NET باید انجام دهد تا توکن های دسترسی را تازه کند، کاهش می دهد.

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

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

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

در حالی که GoogleAdsService.Search می‌تواند چندین درخواست صفحه‌بندی شده برای دانلود کل گزارش ارسال کند، GoogleAdsService.SearchStream یک درخواست را ارسال می‌کند و بدون در نظر گرفتن اندازه گزارش، اتصال دائمی را با API Google Ads آغاز می‌کند. با حذف زمان رفت و برگشت شبکه مورد نیاز برای درخواست هر صفحه جداگانه از پاسخ Search ، بسته به برنامه شما، SearchStream ممکن است عملکرد بهتری نسبت به صفحه بندی ارائه دهد. برای کسب اطلاعات بیشتر در مورد این بهینه‌سازی ، جستجو در مقابل 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);

برای ساخت نسخه کامپایل کنید

هنگام استقرار در سرور، مطمئن شوید که برنامه خود را با استفاده از پیکربندی Release کامپایل کرده اید. هنگام استفاده از پیکربندی Debug، برنامه شما با اطلاعات اشکال زدایی نمادین کامل و بدون بهینه سازی کامپایل می شود.

برنامه خود را نمایه کنید

برای شناسایی گلوگاه های عملکرد، برنامه خود را هم برای استفاده از پردازنده و هم از حافظه نمایه کنید. ویژوال استودیو ابزارهای تشخیصی را برای کمک به نمایه کردن برنامه شما ارائه می دهد. همچنین ابزارهای پروفایل تجاری دیگری نیز در دسترس هستند.

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

برنامه نویسی ناهمزمان با استفاده از پارادایم 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.V17.GoogleAdsService);

googleAdsService.SearchStream(request,
    delegate (SearchGoogleAdsStreamResponse resp)
    {
        foreach (GoogleAdsRow googleAdsRow in resp.Results)
        {
            // Process the row.
        }
    }, callSettings
);

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

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

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

برای کسب اطلاعات بیشتر به راهنمای ورود به سیستم مراجعه کنید.

تصمیم بگیرید که از روش SearchStream یا Search استفاده کنید

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

SearchStream عملکرد بهتری نسبت به Search ارائه می‌کند، اما سناریوهایی وجود دارد که Search ترجیح داده می‌شود.

برای اطلاعات بیشتر در مورد این دو روش ، راهنمای گزارش های جریان را ببینید.

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

NET Core 3.1 با تعیین تنظیمات PublishReadyToRun روی true ، و سپس انتشار باینری با تعیین RuntimeIdentifier معتبر هنگام انتشار، از پیش کامپایل کردن باینری های شما در یک پلتفرم و معماری خاص پشتیبانی می کند. برای اطلاعات بیشتر به راهنمای ویژگی ReadyToRun مراجعه کنید.

از TieredCompilation استفاده کنید

TieredCompilation به دات نت اجازه می دهد نقاط مهم را شناسایی کرده و عملکرد خود را بهبود بخشد. کامپایل ردیفی با گزینه ReadyToRun بهتر کار می کند زیرا می تواند در صورت موجود بودن از تصویر از پیش تولید شده استفاده کند. برای اطلاعات بیشتر به راهنمای TieredCompilation مراجعه کنید.

جمع آوری زباله (GC) خود را دقیق تنظیم کنید

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

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

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

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

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

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