Biblioteka klienta .NET Google Ads upraszcza interakcje z aplikacją Interfejs Google Ads API, który wymaga minimalnej konfiguracji. Jednakże ogólny zależy od tego, jak biblioteka jest używana i zintegrowana .
W tym przewodniku omawiamy optymalizacje wydajności w aplikacjach .NET, uzupełnia najlepsze praktyk, które mają zastosowanie interfejsu Google Ads API.
O ile to możliwe, należy ponownie korzystać z GoogleAdsClient
GoogleAdsClient
reprezentuje sesję użytkownika podczas wykonywania wywołań interfejsu API. Zapewnia
optymalizacje, takie jak:
- Buforowanie kanałów gRPC używane przez usługi API. Skraca to czas konfiguracji podczas tworzenia początkowego interfejsu API połączeń.
- W miarę możliwości ponowne korzystanie z tokenów dostępu. Zmniejsza to liczbę lotów w obie strony które musi wykonać biblioteka klienta .NET Google Ads, aby odświeżyć tokeny dostępu.
W miarę możliwości używaj tokenów dostępu z konta menedżera
- Jeśli masz token dostępu wydany na poziomie konta menedżera, możesz go użyć
aby wywoływać interfejs API na wszystkich kontach klientów Google Ads w ramach tego konta
w hierarchii. W połączeniu z ponownym wykorzystaniem
GoogleAdsClient
instancji może to spowodować jeszcze bardziej zmniejszyć liczbę lotów w obie strony, które musi wykonać biblioteka klienta, odśwież tokeny dostępu.
W miarę możliwości używaj SearchStream zamiast wyszukiwarki
GoogleAdsService.Search
może
wyślij wiele żądań z podziałem na strony, aby pobrać cały raport,
GoogleAdsService.SearchStream
wysyła jedno żądanie i inicjuje trwałe połączenie z interfejsem Google Ads API;
bez względu na rozmiar raportu. Przez wyeliminowanie czasu przesyłania danych w obie strony
wymagane do żądania poszczególnych stron odpowiedzi Search
w zależności od
Twojej aplikacji, SearchStream
może oferować wyższą wydajność w porównaniu z stronicowaniem. Zobacz
Sieć wyszukiwania a
SearchStream, aby dowiedzieć się więcej
więcej o tej optymalizacji.
Ręczne zarządzanie odświeżaniem tokenów dostępu
W niektórych środowiskach, takich jak Google Cloud
funkcji, ponowne wykorzystanie może nie być możliwe.
GoogleAdsClient
instancji. Takie środowiska mogą dawać swoje możliwości
z myślą o trwałości i wykorzystywaniu danych. W takich przypadkach możesz przedłużyć
GoogleAdsConfig
, aby wykonać własne odświeżanie tokena dostępu w następujący sposób.
// 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);
Kompiluj na potrzeby kompilacji wersji
Pamiętaj, aby skompilować aplikację za pomocą atrybutu Wersja podczas wdrażania na serwerze. Jeśli korzystasz z konfiguracji debugowania, Twoja aplikacja kompiluje się z pełnymi symbolicznymi informacjami dotyczącymi debugowania, bez optymalizacji.
Profilowanie aplikacji
Profiluj aplikację pod kątem wykorzystania procesora i pamięci, aby określić jej wydajność które powodują wąskie gardła. Visual Studio zapewnia Narzędzia diagnostyczne aby ułatwić jej profilowanie. Występują również inne profilowanie komercyjne. narzędzia które są dostępne.
Używanie metod asynchronicznych
Programowanie asynchroniczne z wykorzystaniem funkcji async-await model pomaga uniknąć wąskich gardeł wydajności i poprawia ogólną szybkość reagowania do aplikacji. Biblioteka .NET Google Ads generuje metody asynchroniczne dla wszystkich usług i metod RPC.
Anulowanie metod asynchronicznych
Za pomocą parametru callSettings
możesz przekazywać
CancellationToken
.
na metody asynchroniczne:
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
);
Wyłącz rejestrowanie, gdy to możliwe
Biblioteka .NET Google Ads domyślnie wyłącza logowanie i używa leniwego rejestrowania które zapewnia większą wydajność aplikacji. Jeśli włączysz zapisywanie, sprawdź, czy jest ona wyłączona w środowisku produkcyjnym. Jeśli chcesz monitorować w przypadku konkretnych nieudanych żądań w środowisku produkcyjnym, możesz wykonać jedną lub więcej wykonać te czynności bez negatywnego wpływu na wydajność aplikacji:
- Włącz tylko dzienniki podsumowania.
- Ustaw pełne logi na poziom
ERROR
. - Zapisywanie identyfikatorów konkretnych próśb, które możesz udostępniać kontaktując się z kanałami pomocy.
Więcej informacji znajdziesz w przewodniku dotyczącym logowania.
Zdecyduj, czy chcesz użyć metody SearchStream czy Search
Interfejs Google Ads API udostępnia 2 główne sposoby pobierania obiektów: metodę Search
(który korzysta z podziału na strony) i SearchStream
(który obsługuje strumieniowanie).
SearchStream
zapewnia większą skuteczność w porównaniu z grupą Search
, ale
w sytuacjach, w których preferowana jest wartość Search
.
Więcej informacji znajdziesz w przewodniku po raportach strumieniowych. na temat obu metod.
Użyj opcji ReadyToRun
.NET Core 3.1 dodaje obsługę wstępnego kompilowania plików binarnych na określonej platformie
i architekturę, określając ustawienie PublishReadyToRun
na true
oraz
opublikuj plik binarny, określając prawidłową wartość RuntimeIdentifier
, gdy
do publikacji. Zobacz przewodnik na stronie ReadyToRun
funkcję, aby dowiedzieć się więcej.
i innych.
Użyj TieredCompilation
TieredCompilation
pozwala .NET rozpoznawać hotspoty i ulepszać
skuteczność reklam. Kompilacja wielopoziomowa działa lepiej z opcją ReadyToRun
, ponieważ
może użyć wygenerowanego obrazu, jeśli jest dostępny. Zobacz przewodnik na temat:
TieredCompilation
aby dowiedzieć się więcej.
Dostosowywanie procesu czyszczenia pamięci
.NET udostępnia 2 ogólne profile do czyszczenia pamięci: stacja robocza i profilu serwera. Te dwa profile mają różną skuteczność . Aplikacje korzystające z biblioteki .NET Google Ads mają zwykle większą skuteczność w profilu serwera. Możesz skorzystać z dostosowania podanych niżej ustawień GC.
Czyszczenie pamięci serwera: usuwanie czyszczenia pamięci serwera zezwala na .NET środowiska wykonawczego, aby zwiększyć skuteczność aplikacji z interfejsem Google Ads API. działające w wielu wątkach. Zobacz to przewodnik . Aby włączyć czyszczenie pamięci serwera, dodaj parametr następujące wiersze do pliku
.csproj
aplikacji.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Równoczesne usuwanie czyszczenia danych: możesz włączyć równoczesne usuwanie usuwanie czyszczenia pamięci , aby utworzyć w .NET GC specjalny wątek do czyszczenia pamięci w 2 generacji. To ustawienie może być przydatne podczas przetwarzania raportów o dużych rozmiarach. Dostępne opcje włącz równoczesne usuwanie odpadów, dodając te wiersze do
.csproj
aplikacji.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Zatrzymywanie czyszczenia pamięci maszyn wirtualnych:
RetainVMGarbageCollection
ustawienie określa, czy segmenty pamięci wirtualnej, które należy usunąć, są umieszczane zostały umieszczone na liście gotowości do użycia w przyszłości lub są zwracane do systemu operacyjnego system operacyjny. Przechowywanie pamięci wirtualnej możesz włączyć, dodając do aplikacji.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Możesz dostosować GC, wybierając konfigurację pomiędzy
stacji roboczej i serwera. Wszystkie odpowiednie
ustawienia
są określone w pliku runtimeconfig.json
aplikacji .NET Core, środowisku
lub App.config
aplikacji pakietu .NET SDK.