DoconutExtensions

Servis ve ara katman kaydı

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

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

AddDoconut

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

DoconutOptions nesnesini oluşturur, hızlı hata kontrolü yapar (bkz. DoconutOptions → Başlangıç doğrulaması) ve tam servis grafiğini kaydeder:

ServisÖmürRol
DoconutOptionsSingletonYapılandırma nesnesi
IViewerFactorySingletonUzantıları format görüntüleyicilerine eşler
IDocumentSessionManagerSingletonToken → oturum önbelleği (IMemoryCache de kaydedilir)
IDoconutLicenseServiceSingletonLisans başlangıçta bir kez yüklenir (öncelik: LicenseStreamLicenseContentLicensePath → otomatik arama)
PageImageServiceSingletonSayfa‑görüntü işlem hattı (filigran/döndürme/ölçekleme/ek açıklamalar)
Document security (access store)SingletonToken‑oturum bağlaması için izinler
ViewerTransientKamu açık/kapalı arayüzü
DocumentConverterTransientDönüştürme arayüzü — Converter eklentisi gerekir
DistributedDocumentPublisherBir belgenin artefaktlarını paylaşımlı depoya yayınlar
Health check "doconut"Lisans/son kullanma durumunu ASP.NET sağlık kontrolleri aracılığıyla raporlar

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

Bilmeniz gereken iki davranış:

  • Converter eklentisini gerektirir. options.AddPlugin<ConverterPlugin>() olmadan DocumentConverter çözümlemesi şu hatayı verir:
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 bir lisans, AddDoconut() zamanında başarısız olur. Geçici/Demo kayıtları son kullanma tarihlerini geçse bile hayatta kalır, 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 — lisans durumunu sağlık uç noktanızda görmek istiyorsanız haritalayın:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Doconut sayfa‑görüntü ara katmanını ekler. ?token= sorgu parametresi taşıyan her isteğe yanıt verir — sayfalar, küçük resimler, arama, ek açıklamalar, sayfa eylemleri (tam istek tablosu Core Concepts → How the Viewer Works içinde). UnsafeMode false olduğunda, belge‑güvenlik 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 isteklerini bir yol dalı üzerinden yönlendirir ve tarihsel istek şekline sadık kalır:

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

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Gömülü JS, CSS, görseller ve yazı tiplerini DoconutOptions.ResourcesPath (varsayılan /doconut-res) üzerinden sunar. Bunlar, Viewer.ReferenceCss() / ReferenceScripts() etiketlerini üreten dosyalardır.

Her zaman UseDoconut()'dan önce çağırın. Viewer alanı boş kalır ve tarayıcı konsolu /doconut-res/... için 404 hataları gösterirse, bu çağrı eksik ya da yanlış konumlandırılmış demektir.

Bu, gömülü‑kaynak ara katmanını elle app.UseMiddleware<EmbeddedResourceMiddleware>() ile bağlamanın desteklenen yerine geçer.

Serving from shared storage

Paylaşımlı depolamadan hizmet vermek için iki ek kayıt bulunur; belgeyi işleyen düğüm, sayfalarını sunan düğüm olmak zorunda değildir. İkisi de Distributed Deployments içinde uçtan uca ele alınır; imzalar şunlardır:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...)        // shared backing store for widget uploads

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 bulunmaz. Ayar‑ayara eşleme için göç rehberi'ni inceleyin.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut();          // 2nd Doconut call (or via a MapWhen branch)

Bu sayfa yardımcı oldu mu?