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ı.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // ÖNCE UseDoconut()
app.UseDoconut();AddDoconut
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ür | Rol |
|---|---|---|
DoconutOptions | Singleton | Yapılandırma nesnesi |
| Oturum önbellek servisi | Singleton | Token → oturum önbelleği (IMemoryCache da kaydedilir) |
IDoconutLicenseService | Singleton | Lisans başlangıçta bir kez yüklenir (öncelik: LicenseStream → LicenseContent → LicensePath → otomatik arama) |
| Sayfa-görüntü ardışık düzeni | Singleton | Sayfalar 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) | Singleton | Token‑oturum bağlaması için izinler |
Viewer | Transient | Genel açma/kapatma arabirimi |
DocumentConverter | Transient | Dö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:
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
TRIALdosyası 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:
app.MapHealthChecks("/health");UseDoconut
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:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
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:
IServiceCollection AddDoconutDistributedAsyncPublish(...) // isteğe bağlı arka plan yayın kuyruğu
IServiceCollection AddDoconutDistributedWidgets(...) // widget yüklemeleri için paylaşılan yedek depolamaOkuma tarafı, Doconut.Clouds paketinden ayrı bir ara katmandır:
IApplicationBuilder UseDoconutCloud<THandler>(
this IApplicationBuilder app,
Action<CloudOptions>? configure = null,
string pathPrefix = "/doconut-cloud")
where THandler : BaseCloudHandlerUseDoconutWebFarm(...) ve WebFarmOptions bu sürümde mevcut değildir. Ayar‑ayarlama eşlemesi için migration guide sayfasına bakın.
Ordering recap
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?