Google Ads .NET istemci kitaplığı, uygulamanızın Sizin tarafınızdan minimum yapılandırmaya sahip olan Google Ads API. Ancak genel performansı büyük ölçüde kitaplığın kullanımınıza ve cihazınızla entegre olduğuna uygulamasını indirin.
Bu kılavuz, .NET uygulamalarına özel performans optimizasyonlarını ve en iyisini tamamlayan Google Ads API'si.
Mümkün olduğunda GoogleAdsClient'ı yeniden kullanın
GoogleAdsClient
, API çağrıları yapılırken kullanıcının oturumunu temsil eder. Sağlam
örneğin:
- gRPC kanallarını önbelleğe alma API hizmetleri tarafından kullanılır. Bu, ilk API'yi oluştururken kurulum süresini kısaltır çağrısının en iyi yolu.
- Mümkün olduğunda erişim jetonlarını yeniden kullanma. Bu da gidiş dönüş sayısını azaltır Google Ads .NET istemci kitaplığının, erişim jetonlarını yenilemek için yapması gereken işlemlerdir.
Mümkün olduğunda yönetici düzeyindeki bir hesaptan erişim jetonları kullanın
- Yönetici hesabı düzeyinde verilmiş bir erişim jetonunuz varsa bunu kullanabilirsiniz
Söz konusu hesap altındaki tüm Google Ads müşteri hesaplarına API çağrıları yapmak için
hiyerarşik olarak düzenlenmiştir. Bu durum,
GoogleAdsClient
örneklerinin yeniden kullanılmasıyla birlikte kullanıldığında istemci kitaplığının gerçekleştirmesi gereken gidiş dönüş sayısını erişim jetonlarını yenileme
Mümkün olduğunda Arama yerine SearchStream'i kullanın
GoogleAdsService.Search
Tüm raporu indirmek için sayfalara ayrılmış birden fazla istek gönderebilirsiniz.
GoogleAdsService.SearchStream
Tek bir istek gönderir ve Google Ads API ile kalıcı bir bağlantı başlatır
rapor boyutundan bağımsız olarak oluşturulur. Gidiş dönüş ağ süresini ortadan kaldırarak
duruma bağlı olarak, bir Search
yanıtının her bir sayfasını istemek için gereklidir
uygulamanızda SearchStream
, sayfalara göre daha iyi performans sunabilir. Görüntüleyin
Arama Ağı -
Öğrenmek için SearchStream'de
daha fazla bilgi edineceğiz.
Erişim jetonu yenilemelerini manuel olarak yönetin
Google Cloud gibi belirli ortamlarda
İşlevleri kullanılmadığında,
GoogleAdsClient
örnek. Bu tür ortamların kendi iyi özellikleri olabilir
uygulamalara devam etmenizi sağlar. Bu gibi durumlarda,
GoogleAdsConfig
sınıfını kullanarak kendi erişim jetonunuzu aşağıdaki gibi yenilemeleri gerekir.
// 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);
Sürüm derlemesi için derleyin
Uygulamanızı Release" [Sürüm] öğesini kullanarak derlediğinizden emin olun. yapılandırma ne kadarının dağıtıldığını gösterir. Uygulamanız, Debug yapılandırmasını kullanırken sembolik hata ayıklama bilgileriyle derlenir ve optimizasyon gerekmez.
Uygulamanız için profil oluşturma
Performansı tespit etmek için uygulamanızın hem CPU hem de bellek kullanımını inceleyin göz önünde bulundurmanız gerekir. Visual Studio, Teşhis araçları kullanın. Ayrıca, başka ticari profil çıkarma araçlar seçebilirsiniz.
Eş zamansız yöntemleri kullanma
Async-await kullanarak eşzamansız programlama paradigma performans sorunlarını önlemeye ve kampanyalarınızın genel yanıt verme süresini artırmaya yardımcı olur. en iyi şekilde yararlanabilirsiniz. Google Ads .NET kitaplığı, tüm hizmetler için eşzamansız yöntemler oluşturur ve TBG yöntemlerinden bahsedeceğiz.
Eş zamansız yöntemlerin iptali
callSettings
parametresini kullanarak
CancellationToken
şu yöntemleri de kullanabilirsiniz:
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
);
Mümkün olduğunda günlük kaydını kapatın
Google Ads .NET kitaplığı, günlük kaydını varsayılan olarak devre dışı bırakır ve geç günlük kaydı kullanır. Bu yaklaşım, uygulamanızın performansını artırmanıza yardımcı olabilir. Günlük kaydını etkinleştirirseniz bu özelliği üretim ortamında devre dışı bıraktığınızdan emin olun. İzlemeniz gerekiyorsa üretimdeki belirli başarısız istekler için aşağıdakilerden birini veya daha fazlasını yapabilirsiniz: Aşağıdaki adımları uygulayarak uygulamanızın performansını olumsuz şekilde etkileyebilirsiniz:
- Yalnızca özet günlükleri etkinleştirin.
- Tam günlükleri
ERROR
düzeyine ayarlayın. - Paylaşabileceğiniz belirli önemli istekler için istek kimliğini kaydedin destek kanallarıyla bağlantı kuruyorsunuz.
Daha fazla bilgi edinmek için günlük kaydı kılavuzuna göz atın.
Arama Akışı mı yoksa Arama yöntemini mi kullanacağınıza karar verme
Google Ads API, nesneleri almak için iki temel yol sunar: Search
yöntemi
(sayfalandırmayı kullanır) ve SearchStream
(akış kullanır).
SearchStream
, Search
ile kıyaslandığında daha iyi performans gösterir ancak
Search
'un tercih edildiği senaryolar.
Daha fazla bilgi edinmek için akış raporları kılavuzuna bakın. bahsedeceğiz.
ReadyToRun seçeneğini kullan
.NET Core 3.1, ikili programlarınızı belirli bir platformda önceden derleme desteği ekler
true
değerine bir PublishReadyToRun
ayarı belirterek ve mimariyi
ardından, geçerli bir RuntimeIdentifier
belirterek ikili programı yayımlama
yayıncılık. ReadyToRun
adresindeki kılavuza göz atın.
özelliği kullanın
daha fazla.
TieredCompilation Kullanma
TieredCompilation
, .NET'in hotspot'ları belirlemesine ve
bazı yolları da görmüştük. Katmanlı derleme, şu nedenle ReadyToRun
seçeneği ile daha iyi sonuç veriyor:
hazır olduğunda önceden oluşturulmuş resmi kullanabilir. Şu sayfadaki rehbere bakın:
TieredCompilation
konulu videomuzu izleyin.
Atık toplama (GC) özelliğinde ince ayar yapma
.NET, atık toplama (GC) için iki genel profil sağlar: iş istasyonu bir sunucu profili de oluşturabilirsiniz. Bu iki profilin performansı farklı ödünç vermeniz gerekir. Google Ads .NET kitaplığını kullanan uygulamalar, bir sunucu profilinde yer alır. Aşağıdaki GC ayarlarında hassas düzenlemeler yapabilirsiniz.
Sunucu atık toplama: Sunucu atık toplama işlemi .NET'e izin verir Google Ads API uygulamalarına daha iyi performans sağlamak için birden çok iş parçacığı üzerinde çalışıyor. Bu sayfaya bakın kılavuz inceleyebilirsiniz. Sunucu atık toplama özelliğini etkinleştirmek için aşağıdaki satırları uygulamanızın
.csproj
dosyasına ekleyin.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Eş zamanlı atık toplama: Eşzamanlı çöp toplama özelliğini etkinleştirebilirsiniz. atık toplama .NET GC'ye 2. nesilde atık toplama için özel bir iş parçacığı sağlamak üzere tasarlanmıştır. Bu ayar, büyük boyutlu raporlar işlenirken yararlı olabilir. Şunları yapabilirsiniz: aşağıdaki satırları sayfanıza ekleyerek eş zamanlı atık toplamayı açın: uygulamanın
.csproj
dosyası.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Sanal makine atık toplama:
RetainVMGarbageCollection
ayar silinmesi gereken sanal bellek segmentlerinin eklenip eklenmeyeceğini yapılandırır gelecekte kullanılmak üzere bekleme listesine alınır veya işletim sistemine geri döndürülürse sistemi (OS) olacak şekilde güncelleyin. Sanal bellek saklamayı etkinleştirmek için ekleyin.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
GC'nizde
bir iş istasyonu ve bir sunucu. Tüm alakalı
Ayarlar'ı
.NET Core uygulamanızın runtimeconfig.json
dosyasında belirtilmişse
değişkenini veya .NET SDK uygulamanızın App.config
sürümünü kullanabilirsiniz.