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ı.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut
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ür | Rol |
|---|---|---|
DoconutOptions | Singleton | Yapılandırma nesnesi |
IViewerFactory | Singleton | Uzantıları format görüntüleyicilerine eşler |
IDocumentSessionManager | Singleton | Token → oturum önbelleği (IMemoryCache de kaydedilir) |
IDoconutLicenseService | Singleton | Lisans başlangıçta bir kez yüklenir (öncelik: LicenseStream → LicenseContent → LicensePath → otomatik arama) |
PageImageService | Singleton | Sayfa‑görüntü işlem hattı (filigran/döndürme/ölçekleme/ek açıklamalar) |
| Document security (access store) | Singleton | Token‑oturum bağlaması için izinler |
Viewer | Transient | Kamu açık/kapalı arayüzü |
DocumentConverter | Transient | Dönüştürme arayüzü — Converter eklentisi gerekir |
DistributedDocumentPublisher | — | Bir 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>()olmadanDocumentConverterçözümlemesi şu hatayı verir:
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 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:
app.MapHealthChecks("/health");UseDoconut
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:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
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:
IServiceCollection AddDoconutDistributedAsyncPublish(...) // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...) // shared backing store for widget uploadsOkuma 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 bulunmaz. Ayar‑ayara eşleme için göç rehberi'ni inceleyin.
Ordering recap
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?