
Doconut ile .NET'te Güvenli Bir Belge Yönetimi Görüntüleyicisi Oluşturun
Doconut ile Belge Yönetimini Uygulama
Bir .NET portalındaki belge yönetimi iş akışı genellikle üç şeye ihtiyaç duyar:
- Sıfırdan bir görüntüleyici yazmadan PDF'leri, Office dosyalarını, CAD çizimlerini veya görüntüleri yüklemenin bir yolu.
- Yüklenen belgeyi mevcut tarayıcı oturumuna bağlayan güvenli bir token.
- Kullanıcı işini bitirdiğinde belleği serbest bırakan bir temizlik adımı.
Doconut, tek bir Viewer hizmeti, hafif bir IMemoryCache oturum ve açık CloseDocument çağrılarıyla bu üçünü sağlar.
1. Görüntüleyiciyi DI konteynerine kaydedin
Uygulama başlangıcında, resmi belgelerde açıklanan Doconut kayıt yöntemini çağırarak Doconut hizmetlerini DI konteynerine ekleyin. Bu adım, görüntüleyiciyi, lisans yönetimini ve belge oturumlarını tutacak bellek içi önbelleği kaydeder.
Kayıt, başlangıçta lisansı doğrular, böylece eksik veya geçersiz bir lisans hızlıca hataya yol açar ve ilk isteğin sunucuya ulaşmasından önce sorunu bilirsiniz.
2. Sayfa görüntülerini, küçük resimleri ve açıklama verilerini sunan ara katmanı ekleyin
İstek hattında Doconut ara katmanını yapılandırın, böylece ?token= sorgu dizesi içeren tüm istekler Doconut tarafından işlenir. Ara katman, UnsafeMode false (varsayılan) olduğunda varsayılan güvenlik işaretleyicini (secure-{token}) uygular ve sayfa görüntülerini, küçük resimleri ve açıklama verilerini sunar.
Ara katmanı özel bir dalda konumlandırmak, hattınızın geri kalanını dokunulmaz tutar ve yapışkan oturumlar olmadan yatay ölçeklendirmeye izin verir.
3. Bir belge açın ve opak oturum token'ını alın
Dosya yolunu (veya bir akışı) alan ve token'ı dönen tek bir uç nokta oluşturun. Token, istemci widget'ının gördüğü tek kimlik bilgisi olur.
app.MapPost("/api/open", async (Viewer viewer) =>
{
// Token opaktır — widget'e verin, asla loglamayın veya kalıcı hâle getirmeyin.
string token = await viewer.OpenDocumentAsync("wwwroot/files/Contract.pdf");
return Results.Ok(new { token });
});
OpenDocumentAsync içinde neler olur
- Lisans kapısı – geçersiz bir lisans hemen
LicenseExceptionfırlatır. - Oturum oluşturma – Doconut doğru format görüntüleyiciyi (PDF, Word, DWG, …) seçer ve motoru bir GUID token'ı altında
IMemoryCacheiçinde saklar. - Güvenlik kaydı –
UnsafeMode = falseile token, birsecure-{token}işaretleyicisi aracılığıyla çağıranın ASP.NET oturumuna bağlanır. Yalnızca o tarayıcı oturumu sayfa isteyebilir. - Token dönüşü – istemci token'ı alır ve sonraki her istek için kullanır (
/DocImage.axd?token=…).
Varsayılan kayar süresi 60 dakikadır (DocOptions.TimeOut aracılığıyla yapılandırılabilir). Her sayfa isteği saati sıfırlar, böylece boşta kalan oturumlar otomatik olarak kaybolur.
4. Belgeyi istemci tarafında render edin
Tarayıcıdan uç noktayı çağırır, token'ı alır ve Doconut widget'ına verir:
fetch('/api/open', { method: 'POST' })
.then(r => r.json())
.then(d => {
const token = d.token;
objViewer.View(token); // Doconut tarafından sağlanan JavaScript widget'i
});
Widget, dahili olarak aynı token içeren sayfa, küçük resim, arama ve açıklama istekleri üretir. Token sunucu‑tarafı oturuma bağlı olduğundan, kötü niyetli bir kullanıcı başka bir kullanıcının belgesini ele geçiremez.
5. Kullanıcı görüntüleyiciden ayrıldığında belgeyi hemen kapatın
Büyük PDF'ler veya CAD dosyaları için render motorunu hemen serbest bırakmalısınız. CloseDocument'ı bir sunucu‑tarafı uç noktadan veya widget'ın “unload” olayından çağırın.
// Sunucu‑tarafı uç noktası
app.MapPost("/api/close", (Viewer viewer, string token) =>
{
viewer.CloseDocument(token);
return Results.Ok();
});
// Widget'ten doğrudan çağrı (token'ı backend'e ortaya çıkarırsanız)
viewer.CloseDocument(token);
CloseDocument oturumu önbellekten kaldırır, temel belge motorunu yok eder, secure-{token} işaretleyicisini siler ve erişim iznini iptal eder. Kayar süresi sonunda aynı şeyi yapar, ancak açık bir kapatma, kullanıcının işi bittiği anda belleğin geri kazanılmasını garanti eder.
6. İsteğe Bağlı: Sunucuda belge dönüştürme
İş akışınız yüklenmiş bir Word dosyasının PDF dışa aktarımını gerektiriyorsa, Doconut yapılandırmasında Converter eklentisini etkinleştirin (belgelere bakın). Eklenti kaydedildikten sonra DocumentConverter enjekte edebilir ve onun ConvertAsync metodunu çağırabilirsiniz. Dönüştürme sunucuda çalışır, böylece web sunucusuna Office kurmanıza gerek kalmaz.
7. Kurumsal‑düzey belge yönetimi için ölçeklendirme hususları
- Durumsuz ön‑uçlar – Görüntüleyici widget'ı asla belge verisini tutmaz; tüm ağır işlemler sunucuda kalır.
- Dağıtık önbellek – Birden fazla web‑farm düğümü çalıştırıyorsanız varsayılan bellek içi önbelleği dağıtık bir sağlayıcı (Redis, NCache) ile değiştirin. Token‑oturum eşlemesi, ara katman yapılandırılmış
IMemoryCache'dan okuduğu için değişmeden çalışır. - Arka plan işleri – Belgeleri bir arka plan çalışanında önceden açabilir, token'ı önbelleğe alabilir ve UI'ye daha sonra verebilirsiniz. Her token'ın oturum başına tek kullanımlı olduğunu unutmayın; yeniden kullanım yeni bir
OpenDocumentAsyncçağrısı gerektirir.
Bu desenler, görüntüleyici mantığını yeniden yazmadan tek‑sunucu intranet portalından çok‑bölge bulut hizmetine kadar ölçeklenen bir belge yönetimi platformu oluşturmanıza olanak tanır.
8. Üretime hazır uygulama için hızlı kontrol listesi
| Adım | Eylem |
|---|---|
| 1 | Program.cs içinde Doconut hizmetlerini kaydedin (lisansı doğrulayın). |
| 2 | Özel bir dalda Doconut ara katmanını ekleyin. |
| 3 | /api/open bir uç nokta ortaya çıkarın ve OpenDocumentAsync çağırır. |
| 4 | Dönen token'ı istemcide objViewer.View(token)'a iletin. |
| 5 | Görüntüleyici gizlendiğinde veya sayfa kapanırken CloseDocument(token)'ı çağırın. |
| 6 | (İsteğe bağlı) Sunucu‑tarafı dönüşüm gerekiyorsa ConverterPlugin'ı etkinleştirin. |
| 7 | (İsteğe bağlı) Yatay ölçekleme için dağıtık önbellek olarak IMemoryCache'ı değiştirin. |
Listeyi izleyin, ve Doconut'un yerel .NET görüntüleyicisi üzerine inşa edilmiş eksiksiz, güvenli, yüksek performanslı bir belge yönetimi akışına sahip olursunuz.