DoconutExtensions

Servis ve ara katman kaydı

DoconutExtensions (namespace Doconut.Middleware) her Doconut ana bilgisayarının yaptığı üç çağrıyı içeren statik sınıftır: bir servis kaydı ve iki ara katman kaydı.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // ÖNCE UseDoconut()
app.UseDoconut();

AddDoconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

DoconutOptions'ı oluşturur, onları hızlı hata vererek doğrular (bkz. DoconutOptions → Başlangıç doğrulaması) ve tam servis grafiğini kaydeder:

ServisÖmürRol
DoconutOptionsSingletonYapılandırma nesnesi
Oturum önbellek servisiSingletonToken → oturum önbelleği (IMemoryCache da kaydedilir)
IDoconutLicenseServiceSingletonLisans başlangıçta bir kez yüklenir (öncelik: LicenseStream → LicenseContent → LicensePath → otomatik arama)
Sayfa-görüntü ardışık düzeniSingletonSayfalar için görüntü işleme gerçekleştirir (filigran, döndürme, ölçekleme, açıklamalar)
Belge güvenliği (erişim deposu)SingletonToken‑oturum bağlaması için izinler
ViewerTransientGenel açma/kapatma arabirimi
DocumentConverterTransientDönüştürme arabirimi — Converter eklentisini gerektirir
DistributedDocumentPublisher—Bir belgenin artefaktlarını paylaşımlı depolamaya yayınlar
Sağlık kontrolü "doconut"—Lisans/son kullanım durumunu ASP.NET sağlık kontrolleri aracılığıyla raporlar

Önceki .NET Standard kitaplığında eşdeğer bir çağrı yoktur. Her istek için new Viewer(cache, accessor) oluşturur ve seçenekleri ara katmana iletir; ikisi de bu tek kayıtla değiştirilir.

Bilmeniz gereken iki davranış:

  • Converter eklentisi gerektirir. DocumentConverter'ı options.AddPlugin<ConverterPlugin>() olmadan çözümlemek bir istisna fırlatır:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Eklenti yetkisi başlangıçta doğrulanır. Eksik bir lisans, eski TRIAL dosyası veya kaydedilmiş bir eklentinin yeteneği olmadan ücretli lisans, AddDoconut() zamanında başarısız olur. Geçici/Demo kayıtları son kullanma tarihlerini geçer, ancak çalışma zamanı kapıları süresi dolmuş yetenekleri iptal eder.

Sağlık kontrolü, standart ASP.NET Core mekanizmasıyla bütünleşir — sağlık uç noktanızda lisans durumunu görmek istiyorsanız bunu eşleyin:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Doconut sayfa-görüntü ara katmanını ekler. ?token= sorgu parametresini taşıyan her isteğe yanıt verir — sayfalar, küçük resimler, arama, açıklamalar, sayfa eylemleri (tam istek tablosu Core Concepts → How the Viewer Works içinde bulunur). UnsafeMode false olduğunda, belge-güvenliği katmanı otomatik olarak önceden bağlanır.

Herhangi bir argüman almaz. Burada bir DoconutOptions örneği geçirmek, önceki kütüphanenin şekliydi ve artık derlenmez.

Referans örneği, widget'ın isteklerini bir yol dalı üzerinden yönlendirir, tarihsel istek biçimini korur:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

DoconutOptions.ResourcesPath adresinde gömülü JS, CSS, görüntüler ve fontları sunar (varsayılan /doconut-res). Bunlar, Viewer.ReferenceCss() / ReferenceScripts() etiketleri üreten dosyalardır.

UseDoconut()'den önce her zaman çağırın. Görüntüleyici alanı boş kalırsa ve tarayıcı konsolu /doconut-res/... için 404 hataları gösterirse, bu çağrı eksik veya yanlış konumlandırılmış demektir.

Bu, gömülü kaynak işleme ara katmanını manuel olarak bağlamak için desteklenen bir değişikliktir.

Serving from shared storage

Belgeyi işleyen düğümün, sayfalarını hizmet veren düğüm olması gerekmeyen dağıtımlarda iki ek kayıt bulunur. İkisi de uçtan uca Distributed Deployments içinde ele alınır; imzalar şunlardır:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // isteğe bağlı arka plan yayın kuyruğu
IServiceCollection AddDoconutDistributedWidgets(...)        // widget yüklemeleri için paylaşılan yedek depolama

Okuma tarafı, Doconut.Clouds paketinden ayrı bir ara katmandır:

text
IApplicationBuilder UseDoconutCloud<THandler>(
    this IApplicationBuilder app,
    Action<CloudOptions>? configure = null,
    string pathPrefix = "/doconut-cloud")
    where THandler : BaseCloudHandler

UseDoconutWebFarm(...) ve WebFarmOptions bu sürümde mevcut değildir. Ayar‑ayarlama eşlemesi için migration guide sayfasına bakın.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // UnsafeMode = false olduğunda gerekli
app.UseDoconutResources(); // 1. Doconut çağrısı
app.UseDoconut();          // 2. Doconut çağrısı (veya bir MapWhen dalı aracılığıyla)

Bu sayfa yardımcı oldu mu?