System wtyczek
Rozszerz przeglądarkę za pomocą wtyczek
Rdzeń Doconut pozostaje lekki; opcjonalna funkcjonalność jest dostarczana jako wtyczki — oddzielne pakiety NuGet, które dostarczają przeglądarki lub usługi i są włączane przez Twoją licencję. Ta strona wyjaśnia model rejestracji, jak ograniczenia licencyjne zachowują się w czasie działania oraz jak podłączyć własną przeglądarkę.
Rejestrowanie wtyczki
Każdy pakiet wtyczki udostępnia jedną klasę wtyczki. Rejestrujesz ją raz, przy uruchamianiu:
builder.Services.AddDoconut(options =>
{
options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>();
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});AddPlugin<TPlugin>() tworzy instancję wtyczki i wywołuje jej callback Register w rejestrze wtyczek przechowywanym w DoconutOptions. Wszystko, co wtyczka wnosi, jest oznaczone wymaganą zdolnością wtyczki. AddDoconut() natychmiast waliduje zarejestrowane wtyczki: brak licencji, starszy plik TRIAL lub płatna licencja bez wymaganej zdolności powoduje niepowodzenie uruchomienia z InvalidOperationException. Rejestracja tymczasowa/Demo jest zachowywana po wygaśnięciu, ale jej zdolności w czasie działania są cofane po dacie wygaśnięcia.
Umowa
Wtyczka implementuje celowo mały interfejs:
public interface IDoconutPlugin
{
string Name { get; } // e.g. "Doconut DICOM Viewer"
LicenseCapability RequiredCapability { get; } // the license gate
void Register(IDoconutPluginBuilder builder); // contribute viewers/services
}Wewnątrz Register builder przyjmuje dwa rodzaje wkładów:
builder.RegisterViewer(".dcm", () => new DicomViewer())— przeglądarka dla rozszerzenia pliku,builder.RegisterService<TContract>(() => …)— typowa usługa, którą inne części potoku mogą wyszukać.
Zdolności i ograniczenia
Zdolności są jednostkami licencyjnymi. Converter i Dicom są dostarczane jako wtyczki opcjonalne; Search i Annotation są wbudowanymi funkcjami ograniczonymi w ten sam sposób. Podstawowa przeglądarka nie jest zdolnością — jest wymogiem wstępnym, udostępnianym jako IsViewerLicensed w usłudze licencji.
Walidacja przy uruchamianiu zazwyczaj zapobiega nielicencjonowanej wtyczce przed wejściem do potoku żądań. Fabryka przeglądarek stosuje również dwie defensywne reguły w czasie działania, które mają znaczenie, jeśli uprawnienia zmieniają się po uruchomieniu:
- Wtyczka nadpisuje wbudowaną przeglądarkę (wtyczka zgłasza rozszerzenie, które obsługuje również wbudowany rejestr): przy posiadanej zdolności wtyczka wygrywa; bez niej, Doconut cicho przełącza się na wbudowaną przeglądarkę. Użytkownicy nadal widzą swój dokument — po prostu nie otrzymują funkcji wtyczki.
- Format tylko wtyczkowy (np.
.dcm— DICOM nie ma wbudowanej przeglądarki): bez zdolności wywołanie otwarcia kończy się twardą awarią:
LicenseException: This document type requires the 'Dicom' plugin license.Aktywna tymczasowa licencja przyznaje wszystkie zdolności (z czystym, nieoznaczonym podglądem bazowym). To klasyczne źródło niespodzianek przy uruchomieniu: rejestracja tych samych wtyczek z zakupioną licencją, która pomija jedną z ich zdolności, powoduje, że AddDoconut() nie powodzi się podczas uruchamiania. Porównaj IsCapabilityGranted(...) ze swoim planem przed wdrożeniem. Druga strona medalu: przy braku jakiejkolwiek licencji, nic nie jest przyznane — brak licencji nie jest tymczasową licencją.
To samo ograniczenie pojawia się po stronie klienta: Viewer.ReferenceScripts() i ReferenceCss() generują pakiety skryptów/style dla funkcji ograniczonych licencją (wyszukiwanie, adnotacje, …) tylko wtedy, gdy licencja je włącza, dzięki czemu interfejs widgetu pozostaje spójny z tym, co serwer faktycznie zrobi.
Mapa funkcji i wtyczek
Interfejs produktu używa „wtyczka” jako szerokiej etykiety funkcji, ale rejestracja po stronie serwera różni się:
| Funkcja | Jak jest włączana | Zdolność | Wnosi |
|---|---|---|---|
| Adnotacja | Wbudowane w przeglądarkę; zawiera zasoby adnotacji | Annotation | Tworzenie w przeglądarce, utrzymywanie sesji i eksporty z wbudowanymi adnotacjami |
| Wyszukiwanie | Wbudowane w przeglądarki obsługujące formaty z możliwością wyszukiwania; zawiera zasoby wyszukiwania i umożliwia ekstrakcję tam, gdzie jest wymagana | Search | Natywny indeks tekstu, podświetlenia i nawigacja po wynikach |
| Konwerter | Zainstaluj Doconut.NET8.Converter i zarejestruj ConverterPlugin | Converter | Usługa konwersji C# i opcjonalny widget internetowy |
| DICOM | Zainstaluj Doconut.NET8.Dicom i zarejestruj DicomPlugin | Dicom | Wyświetlanie obrazów medycznych dla .dcm i .ima |
Udostępnione pakiety wtyczek
| Wtyczka | Pakiet | Zdolność | Wnosi |
|---|---|---|---|
| Konwerter | Doconut.NET8.Converter | Converter | Zdolność konwersji dokumentów |
| DICOM | Doconut.NET8.Dicom | Dicom | Wyświetlanie obrazów medycznych (.dcm — format tylko wtyczkowy) |
Każda ma dedykowaną stronę w sekcji Wtyczki z jej konfiguracją i użyciem.
Niestandardowe przeglądarki — własny obsługiwacz formatu
Możesz podłączyć przeglądarkę do potoku bez tworzenia pakietu wtyczki, bezpośrednio z Program.cs:
builder.Services.AddDoconut(options =>
{
options.RegisterViewer(
".myext",
() => new MyCustomViewer(), // implements IFormatViewer
() => new ImageConfig { ImageResolution = 150 }); // optional default config
});Niestandardowe przeglądarki mają pierwszeństwo przed wszystkim — zarówno wbudowanymi, jak i wtyczkami — i nie są ograniczane licencją (są Twoim kodem). Fabryka przechodzi do ImageConfig, gdy nie podasz domyślnej konfiguracji.
Najważniejsze wnioski
- Wtyczki są rejestrowane explicite, a ich
LicenseCapabilityjest walidowana podczasAddDoconut()— brak lub niewystarczające nie‑tymczasowe uprawnienia powodują szybkie niepowodzenie. - Wtyczki typu nadpisanie degradują się łagodnie; formaty tylko wtyczkowe kończą się
LicenseException. - Aktywna tymczasowa licencja odblokowuje wszystko; licencja produkcyjna odblokowuje to, co kupiłeś. Zweryfikuj przy pomocy
IDoconutLicenseServiceprzed wypuszczeniem.
Czy ta strona była pomocna?