Fermer

décembre 7, 2023

Telerik Reporting conquiert de nouveaux horizons (Linux)

Telerik Reporting conquiert de nouveaux horizons (Linux)


Avec la version R3 2023, nous avons ajouté une implémentation basée sur la bibliothèque SkiaSharp comme alternative au moteur de rendu GDI+. Allons plus loin.

Progrès Reportage Telerik propose désormais un Bibliothèque graphique basée sur SkiaSharp pour Linuxdès le R3 2023 libérer.

Qu’est-ce que le GDI+

GDI+ signifie Graphics Device Interface Plus. Il s’agit d’une interface de programmation graphique 2D et d’une bibliothèque fournies par Microsoft dans le cadre du système d’exploitation Windows. GDI+ est le successeur du GDI (Graphics Device Interface) d’origine et offre des fonctionnalités et des capacités plus avancées pour le rendu de graphiques 2D dans les applications développées pour la plate-forme Windows. Les services de GDI+ sont exposés à travers un ensemble de classes C++.

GDI+ fournit un ensemble d’API qui permettent aux développeurs de créer et de manipuler des graphiques, de dessiner des formes, du texte et des images et d’effectuer diverses opérations graphiques. Il est souvent utilisé dans les applications Windows pour gérer des tâches telles que dessiner des graphiques, rendre des images et créer des interfaces utilisateur. GDI+ prend en charge des fonctionnalités telles que le rendu anti-aliasé, la fusion alpha, les remplissages dégradés et divers formats d’image.

Bien que GDI+ ait été largement utilisé dans le développement d’applications Windows, il a été largement remplacé par des technologies graphiques plus récentes, telles que Direct2D et Windows Presentation Foundation (WPF), qui offrent des performances améliorées et une meilleure prise en charge du matériel graphique moderne. Néanmoins, GDI+ reste un outil précieux pour les développeurs travaillant avec des applications existantes et pour certains types de tâches graphiques dans la programmation Windows.

Ce qui nous a motivé

De System.Drawing à System.Drawing.Common

Alors que Système.Dessin est un espace de noms .NET Framework qui fournit des wrappers et des classes gérés pour la fonctionnalité GDI+, le Système.Dessin.Common a été porté pour être un wrapper indépendant de la plate-forme qui a été décidé d’être intégré en raison de l’implémentation multiplateforme de Mono – la bibliothèque native libgdiplus.

Libgdiplus

« Étant donné que System.Drawing.Common a été réellement conçu pour être une fine enveloppe sur les technologies Windows, son implémentation multiplateforme est un peu comme une cheville carrée dans un trou rond ; il est médiocre car il a été conçu uniquement pour Windows.
—Microsoft par Santiago Fernández Madero

Pour faire court, Microsoft a annoncé qu’il ne prévoyait pas de poursuivre le développement du Système.Dessin.Common pour travailler sur des plateformes non Windows : Rendre System.Drawing.Common uniquement pris en charge sous Windows.

Notre seule chance était donc de trouver la meilleure alternative.

Pourquoi (exactement) SkiaSharp ?

La prise en charge multiplateforme de SkiaSharp en fait un choix attrayant pour les développeurs qui ont besoin de créer des applications fonctionnant sur plusieurs systèmes d’exploitation.

Comme nous pouvons le voir sur le SkiaSharp Dépôt GitHubSkiaSharp est une API graphique 2D multiplateforme pour les plateformes .NET basée sur Google Bibliothèque graphique Skia. Il fournit une API 2D complète qui peut être utilisée sur les modèles mobiles, de serveur et de bureau pour restituer des images.

SkiaSharp fournit des liaisons multiplateformes pour :

  • Norme .NET 1.3
  • Noyau .NET
  • .NET6
  • Tizen
  • Android
  • IOS
  • tvOS
  • macOS
  • Catalyseur Mac
  • WinUI 3 (SDK d’application Windows / plateforme Uno)
  • Bureau Windows classique (Windows.Forms / WPF)
  • Assemblage Web (WASM)
  • Plateforme Uno (iOS / macOS / Android / WebAssembly)

Communauté et soutien

SkiaSharp bénéficie d’une communauté open source active et a gagné en popularité grâce à ses capacités multiplateformes, ce qui se traduit par une richesse de ressources et de support.

Comment nous l’avons fait

Une fois la bibliothèque choisie, l’ensemble du processus a été divisé en trois étapes principales :

  1. Abstraction – Dans cette étape, nous avons conçu un Telerik.Dessin.Contrat bibliothèque de classes où nous avons créé une couche d’abstraction de tous les Système.Dessin classes/méthodes/propriétés que nous utilisons dans notre base de code. La logique d’abstraction est gérée par près de 100 classes et environ 1 200 méthodes. L’idée était d’avoir la possibilité de modifier facilement l’implémentation du rendu en cas de besoin.

  2. Implémentation du GDI+ – L’étape suivante (peut-être la plus importante) était de remettre tout en état de marche. Nous avons créé un Telerik.Dessin.GDI bibliothèque de classes qui implémente l’abstraction du contrat en utilisant l’original Système.Dessin Apis. Cette étape devrait préserver toutes les fonctionnalités de Telerik Reporting telles qu’elles étaient avant les modifications.

  3. Implémentation de SkiaSharp – La partie la plus difficile a été d’imiter toutes ces fonctions pour utiliser les API SkiaSharp et d’obtenir (pour l’instant – presque) le même résultat qu’initialement.

Ce niveau d’abstraction nous donne la possibilité de changer et de fournir facilement davantage d’implémentations de rendu si nécessaire.

Défis rencontrés

  • SkiaSharp – Notre premier défi a été de nous familiariser avec les API de la bibliothèque.
  • Habillage de texte multiligne – La bibliothèque SkiaSharp ne fournit pas d’API prêtes à l’emploi pour diviser le texte multiligne et nous avons décidé de profiter d’une bibliothèque dépendante—RichTextKit.
  • Graphique – Nous avons rencontré plusieurs difficultés lors de l’imitation de la classe Graphics liées aux spécificités du format de fichier PDF et aux différences entre les Système.Dessin et SkiaSharp Apis.

Ce qui est déjà fait

  • Rendu PDF
  • Rendu HTML

Avec la version R3 2023, nous avons fourni la prise en charge du rendu PDF et HTML avec notre nouveau moteur SKIA.

Ce qui nous attend

Nous avons l’intention d’améliorer continuellement les options de rendu déjà fournies avec (et pas seulement) de meilleures performances et de mettre également à niveau le rendu Image et OOXML (Office Open XML) :

Installation facile

Avec R3 2023, Telerik Reporting a fourni une option facile à configurer pour changer le moteur graphique par défaut entre GDI et SKIA.

Les options proposées sont les suivantes :

  • Dépendant de la plateforme – La valeur par défaut. Sur la plateforme Windows, le moteur de rapport utilisera le moteur graphique GDI. Sur les plateformes non Windows, le moteur de rapport utilisera le moteur graphique Skia.

  • GDI – L’application utilisera le moteur graphique GDI. Sur les plates-formes non Windows dans les applications qui ciblent .NET 7 ou version ultérieure, cela entraînera la levée d’exceptions d’exécution de type PlatformNotSupported. Pour les frameworks .NET 6 et versions antérieures, ce paramètre nécessitera l’installation de la bibliothèque libgdiplus qui gère les appels GDI.

  • Ski – L’application utilisera le moteur graphique Skia via l’implémentation SkiaSharp. Peut être utilisé sur les plates-formes Windows et non Windows dans les applications qui ciblent le framework .NET 6 ou supérieur.

La description complète se trouve dans le Configuration du moteur de rapports/GraphicsEngine article d’aide.

SkiaSharp contre GDI+

Performance:

  • SkiaSharp est connu pour ses performances et est optimisé pour le matériel moderne, ce qui le rend adapté aux applications gourmandes en graphiques. Il utilise l’accélération matérielle lorsqu’elle est disponible, ce qui peut entraîner de meilleures performances.

  • RDID+ Il s’agit d’une technologie plus ancienne et peut ne pas offrir le même niveau de performances que SkiaSharp, en particulier sur du matériel plus récent. Il lui manque certaines optimisations et accélérations matérielles disponibles dans les bibliothèques graphiques plus modernes.

Il existe encore quelques différences et fonctionnalités manquantes que nous souhaitons corriger :

  • Le rendu des images dans EMF (métafichier) n’est toujours pas pris en charge.
  • Résolution des polices : les deux moteurs de rendu gèrent les cas où le jeu de polices n’est pas disponible, mais les solutions qu’ils proposent diffèrent et il existe des scénarios avec différentes polices de secours lors de la comparaison du résultat des rendus.
  • L’implémentation GDI+ prend en charge nativement l’habillage de texte multiligne, mais pour l’instant SKIA ne le fait pas, et nous nous appuyons actuellement sur un outil externe. RichTextKit bibliothèque.

Voici un exemple de notre rapport de tableau de bord exporté vers un fichier PDF en utilisant les deux options de rendu :

Conclusions

En résumé, le choix entre SkiaSharp et GDI+ dépend de vos besoins spécifiques. SkiaSharp est un choix plus polyvalent et axé sur les performances, surtout si vous avez besoin d’une compatibilité multiplateforme. GDI+ peut toujours convenir aux applications Windows ou lorsque des exigences spécifiques nécessitent son utilisation (par exemple, WinForms, WPF, WinUI), mais il est moins apprécié pour le développement graphique moderne sur la plate-forme Windows.

Initiatives futures

Offrir à nos clients la possibilité de restituer leurs rapports sur différents systèmes d’exploitation est une étape majeure vers un autre défi : disposer d’un serveur de rapports Telerik multiplateforme et complet.

En 2024, nos efforts de développement seront orientés vers la migration du Serveur de rapports Telerik vers .NET 6. Cela inclut la refactorisation côté client et côté serveur de l’application Web, le reciblage vers un framework Web moderne tel que ASP.NET Core MVC et l’autorisation de l’héberger sur des serveurs Web autres que IIS (Internet Information Services). Naturellement, le voyage se terminera par la réutilisation du moteur de rendu Skia dans l’application Report Server, permettant de l’intégrer dans des applications cloud qui s’exécutent sur différentes distributions Linux.

Essayez Telerik de vous signaler

Obtenez un essai gratuit de Reportage Telerik dès aujourd’hui et commencez à développer vos applications mieux, plus rapidement et plus facilement.

Essayez les rapports Telerik

Partagez vos commentaires

Continuons à construire ensemble l’avenir de Telerik Reporting ! Alors n’oubliez pas de partager vos réflexions sous forme de commentaire ci-dessous ou faites-nous savoir si vous avez des suggestions et/ou avez besoin de fonctionnalités/composants en visitant notre Portail de commentaires et Forum de reportage Telerik.




Source link

décembre 7, 2023