# 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.