# DDB .NET Müşteri

DDB Microservices .NET istemcisi, C#gibi dillerdeki tüm DDB işlemlerine erişim sağlar.

Her mikro servise farklı bir Nuget paketi kullanılarak erişilir.

Harici kullanıcılar için not - Aşağıdaki bölümdeki bağlantıların çoğu dahili uygulamaları ifade eder. Lütfen destek için proje ekibinizle konuşun.

# Önkoşul

# Kurulum

# nuget.config

Nuget paketlerini yüklemek için bir nuget.config dosyası gereklidir. Aşağıdaki içeriklerle .csproj veya .sln dosyanızın yanındaki dosyayı oluşturun:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="ddb" value="https://pkgs.dev.azure.com/ovearup/_packaging/ddb/nuget/v3/index.json" />
  </packageSources>
</configuration>

# Paketler

Her mikro hizmet farklı bir Nuget paketi tarafından sağlanır. Paketler komutla yüklenebilir:

dotnet add package <package name> --interactive

Mevcut paketler:

# Konfigürasyon

İhtiyacın olacak Azure reklam uygulaması kaydı (opens new window) API'ya erişen müşteri için. Uygulamanız için kapsamları ve yönlendirme URI'sini yapılandırmanız gerekecektir.

# Kapaklar

Kapsamlar API permissions sayfasında yapılandırılmıştır. Bunlar Add a permission aracılığıyla eklenebilir, ardından APIS my organization uses'ı seçebilir ve son olarak DigitalDesignBriefAPI'ı seçebilir. Gereken izin user_impersonation. Bunları ekledikten sonra, bir hizmet biletinde giriş yapılması gereken Grant admin consent for Arup ile onaylanmaları gerekir.

# URI'yi yeniden yönlendir

Ayrıca uygulamanız için bir yönlendirme URI yapılandırmanız gerekecektir. Bu Authentication sayfasında yapılır. Masaüstü uygulamaları için Add a platform, ardından Mobile and desktop applications'ı seçin ve son olarak https://login.microsoftonline.com/common/oauth2/nativeclient'ı seçin. Diğer uygulamalar için Authentication sayfasındaki talimatları izleyin.

# Kullanım

DDBClient nesnesi, her mikro hizmet için kimlik doğrulama ve ortamı yapılandırır. Yüklü her mikro hizmet daha sonra istemci üzerindeki uzantı yöntemleri kullanılarak istenebilir. Masaüstü uygulamaları için jeton alımının uygulanması sağlanır. Sunucular gibi diğer uygulamaların ITokenAcquisition arayüzünü uygulayarak kendi jeton edinimlerini uygulamaları gerekecektir. Bu daha sonra yapıcıda DDBClient veya DDBClientFactory'a geçirilebilir.

string clientId = "<client id>";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);

var commentsService = ddbClient.GetCommentsService();

foreach (var comment in (await commentsService.GetCommentsAsync()).Comments)
{
    Console.WriteLine(comment.Content);
}

# Müşteri fabrikası

Belirli bir ortam için DDBClientFactory nesnelerin oluşturulmasına izin veren bir DDBClient sınıfı da sağlanırken, kimlik doğrulama fabrika tarafından işlenir. Bu, bağımlılık enjeksiyonunun kullanıldığı senaryolarda yararlı olabilir.

# Toplama

Yardımcı fonksiyonlar, arındırılmış uç noktalarla çalışmak için sağlanır. Bunlar Helpers statik sınıfta bulunur.

Sayfa Yardımcı işlevleri, aranan bir sonuç listesini döndürmek için bir uç nokta çağırmayı tekrar tekrar basitleştirir. Örnek bir imza:


IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)

requestFunction, after parametresini DDB işlevine geçiren ve başlangıçta null geçirilen bir işlevdir.

getInner iç koleksiyonu sonuç yanıtından alır.

getAfter after imlecini sonuç yanıtından alır.

Örneğin:


var results = Helpers.Unpaginate(

 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),

 t => t.Parameters,

 t => t?.Paging?.Cursors?.After

);

# Helpers.Unpaginate

Bu, .NET Core 3.1'den edinilebilir ve bunu mevcut olduğunda kullanmanız önerilir, çünkü tüm sonuçları belleğe almak zorunda kalmak yerine, her isteği yinelendiği gibi tembel bir şekilde yapacaktır. IAsyncEnumerable döndürür ve System.linq.async (opens new window) Yüklü paket tanıdık LINQ yöntemleriyle çalıştırılabilir.

# Helpers.UnpaginateAll

Bu, tüm sonuçlar toplanana kadar sağlanan istek yöntemini tekrar tekrar çağırarak tek bir nesne listesini döndürür. Bu genellikle yalnızca Helpers.Unpaginate mevcut değilse kullanılmalıdır. Ek bir dönüşüm işlevi alan aşırı yüklenir ve sonuçların listeye eklenmeden önce geldikçe dönüştürülmesine izin verir.

# Helpers.GetPaginatedFirstOrDefault

Bu, arınmış bir uç noktadan tek bir sonuç döndürür. Bir yüklem işlevi alır ve yüklemle eşleşen ilk yanıtı döndürür.

Last Updated: 13.09.2023 15:19:15