Google Ads .NET istemci kitaplığı, uygulamanızın Google Ads API ile etkileşimini kolaylaştırır ve sizin tarafınızda minimum yapılandırma gerektirir. Ancak genel performans, kitaplığın nasıl kullanıldığına ve uygulamanıza nasıl entegre edildiğine büyük ölçüde bağlıdır.
Bu kılavuzda, .NET uygulamalarına özgü performans optimizasyonları ele alınmakta ve Google Ads API için genel olarak geçerli olan en iyi uygulamalar tamamlanmaktadır.
Mümkün olduğunda GoogleAdsClient'ı yeniden kullanın.
GoogleAdsClient, API çağrıları yaparken kullanıcının oturumunu temsil eder. Aşağıdaki gibi optimizasyonlar sağlar:
- API hizmetleri tarafından kullanılan gRPC kanallarını önbelleğe alma. Bu, ilk API çağrıları yapılırken kurulum süresini kısaltır.
- Mümkün olduğunda erişim jetonlarını yeniden kullanma Bu, Google Ads .NET istemci kitaplığının erişim jetonlarını yenilemek için gerçekleştirmesi gereken gidiş dönüş sayısını azaltır.
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 bu jetonu, söz konusu hesap hiyerarşisi altındaki tüm Google Ads müşteri hesaplarına yönelik API çağrıları yapmak için kullanabilirsiniz.
Bu özellik, GoogleAdsClient örneklerinin yeniden kullanılmasıyla birlikte, istemci kitaplığının erişim jetonlarını yenilemek için gerçekleştirmesi gereken gidiş dönüş sayısını daha da azaltabilir.
Mümkün olduğunda Arama yerine SearchStream'i kullanın
Google Ads API, nesneleri almak için iki ana yöntem sunar:
GoogleAdsService.Search (sayfalandırma kullanır) ve
GoogleAdsService.SearchStream (akış kullanır).
Search, raporun tamamını indirmek için birden fazla sayfalandırılmış istek gönderirken SearchStream tek bir istek gönderir ve rapor boyutundan bağımsız olarak Google Ads API ile kalıcı bir bağlantı başlatır. Search yanıtının her bir sayfasını istemek için gereken gidiş dönüşlü ağ süresini ortadan kaldıran SearchStream, genellikle sayfalama işlemine göre daha iyi performans sunar. Hangi yöntemi ne zaman kullanacağınız hakkında daha fazla bilgi edinmek için yayın raporları kılavuzuna bakın.
Erişim jetonu yenilemelerini manuel olarak yönetme
Google Cloud Functions gibi belirli durum bilgisiz ortamlarda, GoogleAdsClient örneklerini çağrılar arasında yeniden kullanmak mümkün olmayabilir.
Bu tür ortamların, verileri kalıcı hale getirmek ve yeniden kullanmak için kendi en iyi uygulamaları vardır.
Google.Ads.GoogleAds v27.0.0 ve sonraki sürümlerde, Credentials özelliğini kullanarak önceden yapılandırılmış kendi ICredential örneğinizi doğrudan GoogleAdsConfig'a yerleştirebilir ve kanal önbelleğe almayı devre dışı bırakabilirsiniz (UseChannelCache = false).
Kimlik bilgisi oluşturmayı özel bir yapılandırma sınıfında kapsüllemeyi tercih ediyorsanız (veya kitaplığın daha eski bir sürümünü kullanıyorsanız) kendi erişim jetonu yenileme işlemlerinizi gerçekleştirmek için GoogleAdsConfig sınıfını aşağıdaki gibi genişletebilirsiniz:
// 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);
Yayınlanan derleme için derleme
Sunucuya dağıtırken uygulamanızı Release yapılandırmasını kullanarak derlediğinizden emin olun. Hata ayıklama yapılandırmasını kullandığınızda uygulamanız, tam sembolik hata ayıklama bilgileriyle ve derleyici optimizasyonları olmadan derlenir.
Uygulamanız için profil oluşturma
Performans sorunlarını belirlemek için uygulamanızın hem CPU hem de bellek kullanımını profillendirin. Visual Studio, uygulamanızın profilini oluşturmanıza yardımcı olacak tanılama araçları sağlar. Ayrıca, kullanabileceğiniz diğer ticari profilleme araçları da vardır.
Eşzamansız yöntemleri kullanma
async-await paradigmasını kullanarak asenkron programlama, performans darboğazlarını önlemeye yardımcı olur ve uygulamanızın genel yanıt verme hızını artırır. Google Ads .NET kitaplığı, tüm hizmetler ve RPC yöntemleri için asenkron yöntemler oluşturur.
Eşzamansız yöntemlerin iptali
callSettings parametresini kullanarak SearchStreamAsync gibi eş zamansız yöntemlere CancellationToken iletebilirsiniz:
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.V25.GoogleAdsService);
await googleAdsService.SearchStreamAsync(
request,
(SearchGoogleAdsStreamResponse resp) =>
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
},
callSettings);
Mümkün olduğunda günlük kaydını devre dışı bırakın
Google Ads .NET kitaplığı, varsayılan olarak günlüğü devre dışı bırakır ve uygulamanızın daha iyi performans göstermesini sağlayan geç günlüğe kaydetme yaklaşımını kullanır. Geliştirme sırasında günlük kaydını etkinleştirirseniz üretim ortamında devre dışı bıraktığınızdan emin olun. Üretimde belirli başarısız istekleri izlemeniz gerekiyorsa uygulamanızın performansını olumsuz etkilemeden aşağıdaki adımlardan birini veya daha fazlasını uygulayabilirsiniz:
- Yalnızca özet günlüklerini etkinleştirin.
- Tam günlükleri
ERRORdüzeyine ayarlayın. - Belirli başarısız isteklerin istek kimliğini kaydederek destek kanallarıyla paylaşabilirsiniz.
Daha fazla bilgi edinmek için günlük kaydı kılavuzuna bakın.
ReadyToRun seçeneğini kullanma
Modern .NET, PublishReadyToRun değerini true olarak ayarlayıp geçerli bir RuntimeIdentifier belirterek ikili programlarınızı belirli bir platform ve mimari için önceden derlemeyi destekler. Daha fazla bilgi edinmek için ReadyToRun dağıtım kılavuzuna bakın.
TieredCompilation'ı kullanma
TieredCompilation (.NET 8 gibi modern .NET sürümlerinde varsayılan olarak etkindir), .NET'in etkin noktaları belirlemesine ve çalışma zamanı performansını iyileştirmesine olanak tanır. Katmanlı derleme, hızlı başlatma için önceden oluşturulmuş görüntüyü kullanabildiği ve ardından sık kullanılan yöntemleri tam optimizasyonlarla yeniden derleyebildiği için ReadyToRun ile iyi çalışır.
Daha fazla bilgi edinmek için TieredCompilation rehberine göz atın.
Atık toplama (GC) işleminizi iyileştirme
.NET, atık toplama (GC) için iki genel profil sağlar: iş istasyonu profili ve sunucu profili. Bu iki profilin performans açısından farklı avantajları ve dezavantajları vardır. Google Ads .NET kitaplığını kullanan özel sunucu uygulamaları, sunucu profilinde çalıştırıldığında genellikle daha iyi performans gösterir.
Aşağıdaki GC ayarlarını ince ayarlayarak avantaj elde edebilirsiniz:
Sunucu atık toplama: Sunucu atık toplama, .NET çalışma zamanının birden fazla GC yığını ve iş parçacığı üzerinde çalışarak Google Ads API uygulamasına daha yüksek işleme hızı sağlamasına olanak tanır. Daha fazla bilgi için sunucu GC kılavuzuna bakın. Aşağıdaki satırları uygulamanızın
.csprojdosyasına ekleyerek sunucu atık toplama işlemini etkinleştirebilirsiniz:<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>Eşzamanlı atık toplama: .NET GC'ye 2. nesilde atık toplama için özel bir iş parçacığı vermek üzere eşzamanlı atık toplama'yı etkinleştirebilirsiniz. Bu ayar, büyük raporlar işlenirken faydalı olabilir. Uygulamanızın
.csprojdosyasına aşağıdaki satırları ekleyerek eşzamanlı çöp toplama özelliğini etkinleştirebilirsiniz:<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>VM atık toplama işlemini koru:
RetainVMGarbageCollectionayarı, silinmesi gereken sanal bellek segmentlerinin gelecekte kullanılmak üzere bekleme listesine alınıp alınmayacağını veya işletim sistemine (OS) geri verilip verilmeyeceğini yapılandırır. Aşağıdaki satırları uygulamanızın.csprojdosyasına ekleyerek sanal bellek saklamayı etkinleştirebilirsiniz:<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
İş istasyonu ve sunucu davranışını dengeleyen bir kurulum seçerek GC'nizi hassas bir şekilde ayarlayabilirsiniz. İlgili tüm GC ayarları, .NET uygulamanızın runtimeconfig.json dosyasında, ortam değişkenleri aracılığıyla veya App.config içinde belirtilebilir.