2010-04-01 4 views
3

On m'a dit que l'utilisation de GDI + à partir d'ASP.NET est dangereuse et indéfinie. Est-ce parce qu'il n'y a aucune garantie d'un contexte de périphérique? Quelqu'un peut-il expliquer?Pourquoi ne pas utiliser GDI + à partir d'ASP.NET

Quelles sont les alternatives?

Voici la source MSDN:

http://msdn.microsoft.com/en-us/library/system.drawing.aspx

Modifier

service Windows et ASP.NET ! Alors peut-être une application ASP.NET normale est-elle correcte? Mais pourquoi?

Modifier

C'est pas une blague du poisson d'avril, s'il vous plaît ne pas traiter comme tel.

+0

Pouvez-vous fournir une source? – SLaks

+0

@roygbiv: Je pense que @SLaks demande qui vous a dit que GDI + est mauvais? Sont-ils des collègues sans expérience du GDI + ou des experts? Ont-ils des raisons particulières de ne pas utiliser GDI +? Il est possible de dire que toute technologie est dangereuse. Cela ne signifie pas que le point de vue est correct. Plus de contexte est toujours utile pour répondre à ces questions. –

+0

@BrianLy - J'ai posté la source à laquelle mon collègue m'a renvoyé. S'il vous plaît voir le lien. –

Répondre

4

Il existe numerousarticles sur le sujet et il est possible d'appeler ce code depuis .NET. Vous devez vous assurer que vous disposez des objets que vous créez. Il est donc important d'utiliser l'instruction C# en utilisant.

La raison pour laquelle System.Drawing pourrait être problématique est qu'il est étroitement lié à la façon dont Windows dessine. Vous devriez isoler le code autant que possible. Avec Windows Vista et plus tard, Microsoft a apporté quelques modifications à l'architecture de service, ce qui a empêché les interactions entre le bureau et les services Windows. ASP.NET est techniquement un service s'il est hébergé dans IIS (cas le plus courant), c'est pourquoi Microsoft a ajouté la note. Les futures versions de Windows et d'IIS peuvent rendre plus difficile ou impossible l'utilisation de System.Drawing à partir d'une application ASP.NET. Le défi est que certaines personnes ont peut-être mal utilisé la technologie sur d'autres projets et maintenant, ces personnes essaient d'influencer votre utilisation. Une façon de traiter ces problèmes (invalide ou non selon le cas) consiste à créer des mesures de performance et de fiabilité. Ensuite, lorsque vous commencez à utiliser GDI +, démontrez l'impact de son utilisation. L'impact devrait être acceptable dans la plupart des cas, mais cela dépendra de ce que vous voulez faire avec GDI +.

+3

Mes 2 cents: la bibliothèque http://imageresizing.net utilise GDI + (mais supporte aussi WIC comme alternative), et est utilisée sur 20K à 60K différents sites Web. Je n'ai jamais retracé un problème de stabilité lié à GDI +, c'est toujours du code utilisateur (ou des utilisateurs utilisant GDI + incorrect). [Voici quelques pièges à surveiller, cependant] (http://nathanaeljones.com/163/20-image-resizing-pitfalls/) ... –

2

Il existe des problèmes d'évolutivité liés à la création de poignées et de ressources Windows utilisées par GDI + dans un environnement Web.

Placé le code ASP.NET GDI + dans un singleton afin que les appels soient sérialisés et disposent correctement des objets.

J'ai utilisé cette technique pour des images créées dynamiquement sans accroc.

Questions connexes