Eklenti Sistemi

Görüntüleyiciyi eklentilerle genişletin

Doconut'un çekirdeği hafif kalır; isteğe bağlı işlevsellik eklentiler olarak gönderilir — görüntüleyiciler veya hizmetler sağlayan ayrı NuGet paketleri 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 kaydetmek

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 kayıt defterine karşı Register geri çağrısını yürütür. Bir eklentinin katkısı olan her şey 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. Geçici/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 arayüz uygular:

csharp
public interface IDoconutPlugin
{
    string Name { get; }                          // ör. "Doconut DICOM Viewer"
    LicenseCapability RequiredCapability { get; } // lisans geçidi
    void Register(IDoconutPluginBuilder builder); // viewers/services katkıda bulunun
}

Register içinde, oluşturucu 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 tipli hizmet.

Yetenekler ve kısıtlama

Yetenekler 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 bir yetenek değildir — önkoşuldur ve lisans hizmetinde IsViewerLicensed olarak sunulur.

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, haklar 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 kaydın da 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 hâlâ belgelerini görür — sadece eklenti özelliğini almazlar.
  • Sadece eklenti formatı (ör. .dcm — DICOM'un yerleşik bir görüntüleyicisi yok): 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.

Aktif bir Geçici lisans tüm yetenekleri verir (temiz, su işareti olmayan temel görüntüleme ile). Bu, yayına geçişte klasik bir sürpriz kaynağıdır: aynı eklentileri, yeteneklerinden birini içermeyen satın alınmış bir lisansla kaydetmek, AddDoconut()'in başlangıçta başarısız olmasına neden olur. Dağıtmadan önce IsCapabilityGranted(...)'i planınızla karşılaştırın. Diğer yandan: hiç lisans yoksa, hiçbir şey verilmez — eksik bir lisans bir Geçici lisans değildir.

Aynı kısıtlama istemci tarafında da görülür: Viewer.ReferenceScripts() ve ReferenceCss(), lisans kısıtlamalı özellikler (arama, açıklama, …) için script/stil paketlerini yalnızca lisans etkinleştirdiğinde üretir, böylece widget'ın UI'si sunucunun gerçekte yapacaklarıyla tutarlı kalır.

Özellik ve eklenti haritası

Ürün UI'si “eklenti”yi geniş bir özellik etiketi olarak kullanır, ancak sunucu kaydı farklıdır:

ÖzellikNasıl etkinleştirilirYetenekKatkılar
AnnotationGö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
SearchAranabilir 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
ConverterDoconut.NET8.Converter kurun ve ConverterPlugin kaydedinConverterC# dönüşüm hizmeti ve isteğe bağlı web widget'ı
DICOMDoconut.NET8.Dicom kurun ve DicomPlugin kaydedinDicom.dcm ve .ima için tıbbi görüntü görüntüleme

Annotation ve normal Search, AddPlugin<TPlugin>() kullanmaz; bunların paketleri yalnızca lisans ilgili yeteneği verdiğinde üretilir. Converter ve DICOM, opt‑in IDoconutPlugin uygulamalardır.

Yayınlanmış eklenti paketleri

EklentiPaketYetenekKatkılar
ConverterDoconut.NET8.ConverterConverterBelge dönüştürme yeteneği
DICOMDoconut.NET8.DicomDicomTıbbi görüntü görüntüleme (.dcm — yalnızca eklenti formatı)

Her biri Eklentiler altında yapılandırması ve kullanımıyla ilgili ayrı bir sayfaya sahiptir.

Özel görüntüleyiciler — kendi format işleyiciniz

Bir eklenti paketi yazmadan, doğrudan Program.cs üzerinden bir görüntüleyiciyi boru hattına ekleyebilirsiniz:

csharp
builder.Services.AddDoconut(options =>
{
    options.RegisterViewer(
        ".myext",
        () => new MyCustomViewer(),               // IFormatViewer uygular
        () => new ImageConfig { ImageResolution = 150 }); // isteğe bağlı varsayılan yapılandırma
});

Özel görüntüleyiciler her şeyin — yerleşiklerin ve eklentilerin — önüne geçer ve lisans kısıtlamasına tabi değildir (koddur). Fabrika, varsayılan bir yapılandırma sağlamadığınızda bir ImageConfig'a geri döner.

Çıkarımlar

  • Eklentiler açıkça kaydedilir ve LicenseCapability'ları AddDoconut() sırasında doğrulanır — eksik veya yetersiz geçici olmayan haklar hızlıca başarısız olur.
  • Geçersiz kılma tarzı eklentiler zarifçe gerileşir; sadece eklenti formatları bir LicenseException ile başarısız olur.
  • Aktif bir Geçici lisans her şeyi açar; üretim lisansı satın aldıklarınızı açar. Göndermeden önce IDoconutLicenseService ile doğrulayın.

Bu sayfa yardımcı oldu mu?