Eklenti Sistemi
Görüntüleyiciyi eklentilerle genişletin
Doconut'un çekirdeği hafif kalır; isteğe bağlı işlevsellik eklenti olarak gönderilir — ayrı NuGet paketleri izleyiciler veya hizmetler sağlar ve lisansınız tarafından etkinleştirilir. Bu sayfa kayıt modelini, lisans kısıtlamasının çalışma zamanında nasıl davrandığını ve kendi görüntüleyicinizi nasıl ekleyeceğinizi açıklar.
Bir eklentiyi kaydetme
Her eklenti paketi bir eklenti sınıfı ortaya çıkarır. Bunu yalnızca bir kez, başlangıçta kaydedersiniz:
builder.Services.AddDoconut(options =>
{
options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>();
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});AddPlugin<TPlugin>() eklentiyi örnekler ve DoconutOptions üzerinde tutulan eklenti kaydı karşısında Register geri çağrısını çalıştırır. Bir eklentinin katkısı, eklentinin gerekli yeteneği ile etiketlenir. AddDoconut() kayıtlı eklentileri hemen doğrular: eksik bir lisans, eski TRIAL dosyası veya yetenek olmadan ücretli lisans, başlangıcı InvalidOperationException ile başarısız kılar. Bir Temporary/Demo kaydı süresi dolana kadar tutulur, ancak çalışma zamanı yetenekleri son tarih geçtikten sonra iptal edilir.
Sözleşme
Bir eklenti, kasıtlı olarak küçük bir arabirim uygular:
public interface IDoconutPlugin
{
string Name { get; } // e.g. "Doconut DICOM Viewer"
LicenseCapability RequiredCapability { get; } // the license gate
void Register(IDoconutPluginBuilder builder); // contribute viewers/services
}Register içinde, builder iki tür katkıyı kabul eder:
builder.RegisterViewer(".dcm", () => new DicomViewer())— bir dosya uzantısı için görüntüleyici,builder.RegisterService<TContract>(() => …)— boru hattının diğer bölümlerinin arayabileceği tiplenmiş bir hizmet.
Yetkinlikler ve kısıtlama
Yetkinlikler lisans birimleridir. Converter ve Dicom isteğe bağlı eklentiler olarak gönderilir; Search ve Annotation aynı şekilde kısıtlanan yerleşik özelliklerdir. Temel görüntüleyici değildir bir yetkinlik — önkoşuludur ve lisans hizmetinde IsViewerLicensed olarak ortaya çıkar.
Başlangıç doğrulaması genellikle lisansı olmayan bir eklentinin istek boru hattına girmesini engeller. Görüntüleyici fabrikası ayrıca iki savunma amaçlı çalışma zamanı kuralı uygular; bu kurallar, yetki başlangıçtan sonra değişirse önem kazanır:
- Eklenti yerleşik bir görüntüleyiciyi geçersiz kılar (bir eklenti, yerleşik kayıt defterinin de işlediği bir uzantıyı talep eder): yetenek lisanslıysa, eklenti görüntüleyicisi kazanır; lisans yoksa, Doconut sessizce yerleşik görüntüleyiciye geri döner. Kullanıcılar belgelerini görmeye devam eder — sadece eklenti özelliğini elde etmezler.
- Yalnızca eklenti formatı (ör.
.dcm— DICOM'un yerleşik bir görüntüleyicisi yoktur): yetenek olmadan açma çağrısı sert bir şekilde başarısız olur:
LicenseException: This document type requires the 'Dicom' plugin license.Etkin bir Temporary lisans tüm yetkinlikleri verir (temiz, filigran içermeyen temel görüntüleme ile). Bu, yayına geçişte sıkça karşılaşılan bir sürpriz kaynağıdır: aynı eklentileri, bir yeteneği eksik bir satın alınmış lisansla kaydetmek AddDoconut()'ın başlangıçta başarısız olmasına neden olur. Dağıtımdan önce planınıza karşı IsCapabilityGranted(...)'ı karşılaştırın. Tersine, hiç lisans yoksa hiçbir şey verilmez — eksik bir lisans Temporary lisans değildir.
Aynı kısıtlama istemci tarafında da görülür: Viewer.ReferenceScripts() ve ReferenceCss() lisans‑kısıtlı özellikler (search, annotation, …) yalnızca lisans etkinleştirdiğinde script/stil paketlerini üretir, böylece widget arayüzü sunucunun gerçekte yapacaklarıyla tutarlı kalır.
Özellik ve eklenti haritası
| Özellik | Nasıl etkinleştirilir | Yetkinlik | Katkılar |
|---|---|---|---|
| Açıklama | Görüntüleyiciye yerleşiktir; açıklama kaynaklarını içerir | Annotation | Tarayıcı oluşturma, oturum kalıcılığı ve gömülü dışa aktarmalar |
| Arama | Aranabilir format görüntüleyicilerine yerleşiktir; arama kaynaklarını içerir ve gerektiğinde çıkarımı etkinleştirir | Search | Yerel metin indeksi, vurgulamalar ve sonuç navigasyonu |
| Dönüştürücü | Doconut.NET6.Converter kurun ve ConverterPlugin kaydedin | Converter | C# dönüştürme hizmeti ve isteğe bağlı web widget'ı |
| DICOM | Doconut.NET6.Dicom kurun ve DicomPlugin kaydedin | Dicom | .dcm ve .ima için tıbbi görüntüleme |
Açıklama ve normal Arama AddPlugin<TPlugin>() kullanmaz; bunların paketleri yalnızca lisans ilgili yetkinliği verdiğinde üretilir. Dönüştürücü ve DICOM, bu dokümantasyon seti için yayınlanmış isteğe bağlı IDoconutPlugin uygulamalarıdır.
Onaylanmış .NET 6 artefaktları, çekirdek paketle aynı sürümde Doconut.NET6.Converter ve Doconut.NET6.Dicom içerir.
Yayınlanmış eklenti paketleri
| Eklenti | Paket | Yetkinlik | Katkılar |
|---|---|---|---|
| Dönüştürücü | Doconut.NET6.Converter | Converter | Belge dönüştürme yeteneği |
| DICOM | Doconut.NET6.Dicom | Dicom | Tıbbi görüntüleme (.dcm — yalnızca eklenti formatı) |
Her biri Eklentiler altında kendi yapılandırma ve kullanım sayfasına sahiptir.
Özel görüntüleyiciler — kendi format işleyiciniz
Bir görüntüleyiciyi, bir eklenti paketi yazmadan, doğrudan Program.cs üzerinden boru hattına ekleyebilirsiniz:
builder.Services.AddDoconut(options =>
{
options.RegisterViewer(
".myext",
() => new MyCustomViewer(), // implements IFormatViewer
() => new ImageConfig { ImageResolution = 150 }); // optional default config
});Özel görüntüleyiciler her şeyin önceliğini alır — yerleşikler ve eklentiler dahil — ve lisans kısıtlamasına tabi değildir (kod sizin tarafınızdan sağlanır). Fabrika, varsayılan bir yapılandırma sağlamadığınızda bir ImageConfig'e geri döner.
Çıkarımlar
- Eklentiler açıkça kaydedilir ve
LicenseCapability'leriAddDoconut()sırasında doğrulanır — eksik veya yetersiz geçici olmayan yetki hızlıca hata verir. - Geçersiz kılan stil eklentileri sorunsuzca geriye dönüş yapar; yalnızca eklenti formatları bir
LicenseExceptionile başarısız olur. - Etkin bir Temporary lisans her şeyi açar; üretim lisansı yalnızca satın aldıklarınızı açar. Gönderimden önce
IDoconutLicenseServiceile doğrulayın.
Bu sayfa yardımcı oldu mu?