# 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
.NET
Bu müşteriler .NET standart 2.0'ı hedefler. Görmek Bu (opens new window) Uyumlu .NET sürümleri listesi için sayfa.
Yeni, bağımsız bir proje başlatıyorsanız, .NET 6 kullanılması önerilir, bu da indirilebilir Arup uygulamaları (opens new window)
Azure Arttifacts Kimlik Bilgileri Sağlayıcı
Yönergeleri izleyin Burada (opens new window)
Önerilen yöntem, otomatik Powershell betiği (opens new window)
# 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:
Arup.DDB.CommentsService( API Dokümanlar (opens new window) )Arup.DDB.EnvironmentContextService( API Dokümanlar (opens new window) )Arup.DDB.ParameterMetadataService( API Dokümanlar (opens new window) )Arup.DDB.ParameterService( API Dokümanlar (opens new window) )Arup.DDB.QAService( API Dokümanlar (opens new window) )Arup.DDB.ReferenceDataService( API Dokümanlar (opens new window) )Arup.DDB.UserService( API Dokümanlar (opens new window) )
# 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.