Eklenti Sistemi
Görüntüleyiciyi eklentilerle genişletin
Doconut'un çekirdeği hafif kalır; isteğe bağlı işlevsellik eklentiler — ayrı NuGet paketleri olarak gönderilir 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 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 Register geri çağrısını, DoconutOptions üzerinde tutulan eklenti kayıt defterine karşı çalıştırı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 korunur, 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:
public interface IDoconutPlugin
{
string Name { get; } // ör. "Doconut DICOM Viewer"
LicenseCapability RequiredCapability { get; } // lisans geçidi
void Register(IDoconutPluginBuilder builder); // görüntüleyicileri/servisleri 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 bulabileceğ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 — ön koşuldur, lisans hizmetinde IsViewerLicensed olarak ortaya çıkar.
Başlangıç doğrulaması normalde lisanssız bir eklentinin istek boru hattına girmesini engeller. Görüntüleyici fabrikası ayrıca iki savunma çalışma zamanı kuralı uygular; bu kurallar, hakların başlangıçtan sonra değişmesi durumunda önemlidir:
- 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üleyici kazanır; lisanssızsa, 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 görüntüleyicisi yok): yetenek olmadan açma çağrısı sert bir şekilde başarısız olur:
LicenseException: This document type requires the 'Dicom' plugin license.Aktif bir Geçici lisans her yetkinliği 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()'ın başlangıçta başarısız olmasına neden olur. Dağıtmadan önce planınızla IsCapabilityGranted(...)'ı karşılaştırın. Diğer yandan: hiç lisans olmadan, 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:
| Özellik | Nasıl etkinleştirilir | Yetkinlik | Katkı sağlar |
|---|---|---|---|
| Annotation | Görüntüleyiciye yerleşiktir; açıklama kaynaklarını içerir | Annotation | Tarayıcı oluşturma, oturum kalıcılığı ve yanmış dışa aktarmalar |
| Search | 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 |
| Converter | Kur Doconut.NET6.Converter ve kaydet ConverterPlugin | Converter | C# dönüşüm hizmeti ve isteğe bağlı web widget'ı |
| DICOM | Kur Doconut.NET6.Dicom ve kaydet DicomPlugin | Dicom | .dcm ve .ima için tıbbi görüntüleme |
Açıklama ve normal Arama AddPlugin<TPlugin>() kullanmaz; paketleri yalnızca lisans ilgili yetkinliği verdiğinde üretilir. Converter ve DICOM, bu dokümantasyon seti için yayınlanan isteğe bağlı IDoconutPlugin uygulamalardır.
Onaylanmış .NET 6 artefaktları, çekirdek paketle aynı sürümde Doconut.NET6.Converter ve Doconut.NET6.Dicom içerir.
Yayınlanan eklenti paketleri
| Eklenti | Paket | Yetkinlik | Katkı sağlar |
|---|---|---|---|
| Converter | Doconut.NET6.Converter | Converter | Belge dönüşüm yetkinliği |
| DICOM | Doconut.NET6.Dicom | Dicom | Tıbbi görüntüleme (.dcm — sadece 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:
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 şey üzerinde öncelik alır — yerleşikler ve eklentiler de dahil — ve lisans kısıtlamasına tabi değildir (kodunuzdur). 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 gerileir; sadece eklenti formatları bir
LicenseExceptionile başarısız olur. - Aktif bir Geçici lisans her şeyi açar; üretim, satın aldıklarınızı açar. Göndermeden önce
IDoconutLicenseServiceile doğrulayın.
Bu sayfa yardımcı oldu mu?