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:

csharp
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:

text
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:
text
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ı

ÖzellikNasıl etkinleştirilirYetkinlikKatkılar
AçıklamaGörüntüleyiciye yerleşiktir; açıklama kaynaklarını içerirAnnotationTarayıcı oluşturma, oturum kalıcılığı ve gömülü dışa aktarmalar
AramaAranabilir format görüntüleyicilerine yerleşiktir; arama kaynaklarını içerir ve gerektiğinde çıkarımı etkinleştirirSearchYerel metin indeksi, vurgulamalar ve sonuç navigasyonu
DönüştürücüDoconut.NET6.Converter kurun ve ConverterPlugin kaydedinConverterC# dönüştürme hizmeti ve isteğe bağlı web widget'ı
DICOMDoconut.NET6.Dicom kurun ve DicomPlugin kaydedinDicom.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

EklentiPaketYetkinlikKatkılar
DönüştürücüDoconut.NET6.ConverterConverterBelge dönüştürme yeteneği
DICOMDoconut.NET6.DicomDicomTı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:

text
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'leri AddDoconut() 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 LicenseException ile 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 IDoconutLicenseService ile doğrulayın.

Bu sayfa yardımcı oldu mu?