2017-03-21 12 views
0

Wir prüfen seit kurzem, ob wir unseren BigQuery-Streaming-Prozess, eine herkömmliche .NET-Konsolenanwendung, in .NET Core umgestalten können, damit er in Containern verteilt und einfach auf Google Container Engine instrumentiert werden kann.Google API - .NET Core-Unterstützung?

Als ich vor kurzem online recherchierte, stellte ich fest, dass ein Problem aufgetreten ist here, sagen, dass ServiceAccountCredential .NET Core noch nicht unterstützt. Dies ist eigentlich ein Deal Breaker.

Fragen Sie sich jetzt irgendwelche Pläne für die .NET-Kernunterstützung? Gibt es abgesehen von ServiceAccountCredential noch andere Dinge in Bezug auf BigQuery Api, die in .NET Core nicht unterstützt werden?

Nur FYI, folgt, wie unser Prozess die Anmeldeinformationen erstellen. Gibt es eine mögliche Problemumgehung?

private void InitBigQueryService() 
    { 

     _credential = new ServiceAccountCredential 
                (
                 new ServiceAccountCredential.Initializer(_account.ClientEmailId) 
                 { 
                  Scopes = new[] { BigqueryService.Scope.Bigquery,BigqueryService.Scope.BigqueryInsertdata } 
                 }.FromCertificate(_account.P12Key) 
               ); 
     BigQueryService = new BigqueryService(new BaseClientService.Initializer 
     { 
      HttpClientInitializer = _credential, 
      ApplicationName = _applicationName, 
     }); 
    } 
+0

Laut https://github.com/google/google-api-dotnet-client/issues/797 sollte dies bereits vor einiger Zeit geschehen sein. Können Sie beschreiben, welche Version Sie verwenden und welchen Fehler Sie erhalten? –

Antwort

1

.NET-Core hat ServiceAccountCredential v1.16.0 seit Version nicht unterstützt. Also sollte der Code, den du zeigst, kompilieren und funktionieren. Wenn nicht, lass es uns wissen.

Ausgabe #758 ist über Windows 8.1-Anwendungen, nicht .NET Core.

1

Neben Chris Antwort, andere Dinge zu beachten, wenn BigQuery von Container Engine:

Vorausgesetzt, dass der Cluster mit den richtigen Bereichen initialisiert wurde, sollten Sie in der Lage sein Application Default Credentials von Container-Engine zu verwenden, so dass Sie don brauche nicht einmal die p12-Datei. Dies ist, was wir für unsere Cloud Next 2017 demo getan haben - bei der lokalen Entwicklung hatte ich eine JSON-Datei des Dienstkontos und setzte die GOOGLE_APPLICATION_CREDENTIALS-Umgebung, und ich musste nichts tun, wenn in Container Engine oder AppEngine Flexible Environment bereitgestellt. Sie können GoogleCredential.GetApplicationDefaultAsync() verwenden, um die Anmeldeinformationen abzurufen. (Es ist sicher, .Result darauf zu verwenden, wenn Sie in einem synchronen Kontext sind.) Diese Demo verwendet Datastore zu der Zeit, als wir es ausgeführt haben, aber an anderer Stelle verwendet es BigQuery, also funktioniert es definitiv.

Darüber hinaus ist die Verwendung von BigQuery von .NET nun wesentlich einfacher, da ich an der BigQuery wrapper library gearbeitet habe. Es ist momentan nur in der Betaversion, aber ich würde erwarten, dass es Ihren Code erheblich vereinfacht - es behandelt alle frechen Aspekte des JSON-Formats für Zeilen mit Datensatzfeldern und dergleichen.